單片機編程C語言與匯編比較_第1頁
單片機編程C語言與匯編比較_第2頁
單片機編程C語言與匯編比較_第3頁
單片機編程C語言與匯編比較_第4頁
單片機編程C語言與匯編比較_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

C語言和匯編語言在開發(fā)單片機時各有哪些優(yōu)缺點?答:匯編語言是一種用文字助記符來表示機器指令的符號語言,是最接近機器碼的一種語言。其主要優(yōu)點是占用資源少、程序執(zhí)行效率高。但是不同的CPU,其匯編語言可能有所差異,所以不易移植。C語言是一種結(jié)構(gòu)化的高級語言。其優(yōu)點是可讀性好,移植容易,是普遍使用的一種計算機語言。缺點是占用資源較多,執(zhí)行效率沒有匯編高。對于目前普遍使用的RISC架構(gòu)的8bitMCU來說其內(nèi)部ROM、RAM、STACK等資源都有限,如果使用C語言編寫,一條C語言指令編譯后,會變成很多條機器碼,很容易出現(xiàn)ROM空間不夠、堆棧溢出等問題。而且一些單片機廠家也不一定能提供C編譯器。而匯編語言,一條指令就對應(yīng)一個機器碼,每一步執(zhí)行什幺動作都很清楚,并且程序大小和堆棧調(diào)用情況都容易控制,調(diào)試起來也比較方便。所以在單片機開發(fā)中,我們還是建議采用匯編語言比較好。如果對單片機C語言有興趣,HOLTEK的單片機就有提供C編譯器,可以到HOLTEK的網(wǎng)站()免費下載使用。C或匯編語言可以用于單片機,C能嗎?答:在單片機開發(fā)中,主要是匯編和C,沒有用C的。搞單片機開發(fā),一定要會C嗎?答:匯編語言是一種用文字助記符來表示機器指令的符號語言,是最接近機器碼的一種語言。其主要優(yōu)點是占用資源少、程序執(zhí)行效率高。但是不同的CPU,其匯編語言可能有所差異,所以不易移植。對于目前普遍使用的RISC架構(gòu)的8bitMCU來說其內(nèi)部ROM、RAM、STACK等資源都有限,如果使用C語言編寫,一條C語言指令編譯后,會變成很多條機器碼,很容易出現(xiàn)ROM空間不夠、堆棧溢出等問題。而且一些單片機廠家也不一定能提供C編譯器。而匯編語言,一條指令就對應(yīng)一個機器碼,每一步執(zhí)行什么動作都很清楚,并且程序大小和堆棧調(diào)用情況都容易控制,調(diào)試起來也比較方便。所以在資源較少單片機開發(fā)中,我們還是建議采用匯編語言比較好。而C語言是一種編譯型程序設(shè)計語言,它兼顧了多種高級語言的特點,并具備匯編語言的功能。C語言有功能豐富的庫函數(shù)、運算速度快、編譯效率高、有良好的可移植性,而且可以直接實現(xiàn)對系統(tǒng)硬件的控制。C語言是一種結(jié)構(gòu)化程序設(shè)計語言,它支持當前程序設(shè)計中廣泛采用的由頂向下結(jié)構(gòu)化程序設(shè)計技術(shù)。此外,C語言程序具有完善的模塊程序結(jié)構(gòu),從而為軟件開發(fā)中采用模塊化程序設(shè)計方法提供了有力的保障。因此,使用C語言進行程序設(shè)計已成為軟件開發(fā)的一個主流。用C語言來編寫目標系統(tǒng)軟件,會大大縮短開發(fā)周期,且明顯地增加軟件的可讀性,便于改進和擴充,從而研制出規(guī)模更大、性能更完備的系統(tǒng)。綜上所述,用C語言進行單片機程序設(shè)計是單片機開發(fā)與應(yīng)用的必然趨勢。所以作為一個技術(shù)全面并涉足較大規(guī)模的軟件系統(tǒng)開發(fā)的單片機開發(fā)人員最好能夠掌握基本的C語言編程。當開發(fā)一個較復雜而又開發(fā)時間短的項目時,用C還是用匯編開發(fā)好?答:對于復雜而開發(fā)時間緊的項目時,可以采用C語言,但前提是要求對該MCU系統(tǒng)的C語言和C編譯器非常熟悉,特別要注意該C編譯系統(tǒng)所能支持的數(shù)據(jù)類型和算法。雖然C語言是最普遍的一種高級語言但不同的MCU廠家其C語言編譯系統(tǒng)是有所差別的,特別是在一些特殊功能模塊的操作上。如果對這些特性不了解,那調(diào)試起來就有的煩了,到頭來可能還不如用匯編來的快。在教學中要用到8088和196芯片單片機教材,請問那里可以找到關(guān)于這方面的書或資料?答:有關(guān)這方面的教材,大學里常用的一本是《IBM-PC匯編語言程序設(shè)計》清華大學出版社出版的,在網(wǎng)上以及書店都是可以找到的,另外網(wǎng)上還可以搜索到很多其他的教材如:《微機原理及匯編語言教程》(楊延雙張曉冬等編著)和《16/32位微機原理、匯編語言及接口技術(shù)》初學者到底是應(yīng)該先學C還是匯編?答:對于單片機的初學者來說,應(yīng)該從匯編學起。為匯編語言答:對于單片機的初學者來說,應(yīng)該從匯編學起。為匯編語言是最接近機器碼的一種語言,可以加深初學者對單片機各個功能模塊的了解,從而打好扎實的基礎(chǔ)。我是一名武漢大學電子科技大3的學生,學了電子線路、數(shù)字邏輯、匯編和接口、C語言,但是總是感覺很迷茫,覺好象什么都不會。怎么辦?答:大學過程是一個理論過程,實踐的機會比較少,往往會造成理論與實踐相脫節(jié),這是國內(nèi)大學教育系統(tǒng)的通病,不過對于學生來說切不可好高騖遠。一般從大三會開始接觸到一些專業(yè)課程,電子相關(guān)專業(yè)會開設(shè)相關(guān)的單片機應(yīng)用課程并且會有簡單的實驗項目,那么要充分把握實驗課的機會,多多地實際上機操作練習。平時可以多看看相關(guān)的電子技術(shù)雜志網(wǎng)站,看看別人的開發(fā)經(jīng)驗,硬件設(shè)計方案以及他人的軟件設(shè)計經(jīng)驗。有可能的話,還可以參加一些電子設(shè)計大賽,借此機會2--3個人合作做一個完整系統(tǒng),會更有幫助。到了大四畢業(yè)設(shè)計階段,也可以選擇相關(guān)的課題作些實際案例增長經(jīng)驗。做什么事情都有個經(jīng)驗的積累過程,循序漸進。請問作為學生,如何學好單片機?答:學習好單片機,最主要的是實踐,在實踐中增長經(jīng)驗。在校學生的話,實踐機會的確會比較少,但是有機會的話,可以畢業(yè)實習選擇相關(guān)的課題,這樣就可以接觸到實際的項目。而且如果單片機微機原理是一門主課的話,相信學校會安排比較多的實踐上機機會。有能力的話,可以找一些相關(guān)兼職工作做做,會更有幫助。而且單片機開發(fā)應(yīng)用需要軟硬件結(jié)合,所以不能只滿足于編程技巧如何完美,平時也要注意硬件知識的積累,多上上電子論壇網(wǎng)站,買一些相關(guān)雜志??赡艿脑挘梢缘诫娮邮袌鋈ベI一些小零件,自己搭一個小系統(tǒng)讓它工作起來。HOTLEK的單片機是RISC結(jié)構(gòu)的8位單片機,它可以廣泛應(yīng)用在家用電器、安全系統(tǒng)、掌上游戲等方面。大概來說可以分成I/O型單片機、LCD型單片機、A/D型單片機、A/DwithLCD型單片機等等。這些單片機的中文資料我們都公開在HOLTEK網(wǎng)站.cn。HOLTEK各類單片機的使用手冊下載地址:/referanc/htk_book.htmHOLTEK單片機軟件/硬件應(yīng)用范例下載地址:/tech/appnote/appnote.htmHOLTEK單片機支持工具下載地址:/tech/tool/tool.htm如何才能才為單片機的高手???答:要成為單片機高手,應(yīng)該多實踐,時常關(guān)注單片機的發(fā)展趨勢;經(jīng)常上一些相關(guān)網(wǎng)站,從那里可以找到許多有用的資料。女性是否適合單片機軟件編程這個行業(yè)?答:要根據(jù)自己的興趣,配合自己對軟件編程的耐性,男女皆適合這個行業(yè)。HOLTEK的數(shù)據(jù)手冊在哪里下載?答:如果對HOLTEK的IC感興趣的話,相應(yīng)的數(shù)據(jù)手冊可以到網(wǎng)站上http://www.HOLTEK./products/index.htm去選IC資料下載。8位機還能延續(xù)多久!答:以現(xiàn)在MCU產(chǎn)品主力還是在8位領(lǐng)域,主要應(yīng)用于汽車應(yīng)用、消費性電子、電腦及PC周邊、電信與通訊、辦公室自動化、工業(yè)控制等六大市場,其中車用市場多在歐、美地區(qū),而亞太地區(qū)則以消費性電子為主,并以量大低單價為產(chǎn)品主流,目前16位MCU與8位產(chǎn)品,還有相當幅度的價差,新的應(yīng)用領(lǐng)域也仍在開發(fā),業(yè)界預計,至少在2005年前8位的MCU仍是MCU產(chǎn)品的主流。學習ARM及嵌入式系統(tǒng)是否比學習其它一般單片機更有使用前景?對于一個初學者應(yīng)當具備哪些相關(guān)知識?答:一般在8位單片機與ARM方面的嵌入式系統(tǒng)是有層次上的差別,ARM適用于系統(tǒng)復雜度較大的高級產(chǎn)品,如PDA、手機等應(yīng)用。而8位單片機因架構(gòu)簡單,硬件資源相對較少,適用于一般的工業(yè)控制、消費性家電等等。對于一個單片機方面的軟件編程初學者,應(yīng)以HOLTEK系列或8051等8位單片機來做入門練習。而初學者應(yīng)當具備軟件編程相關(guān)知識,單片機一般軟件編程是以匯編語言為主各家有各家的語法但大都以RISC的MCU架構(gòu)為主其中RISC(ReducedInstructionSetComputer)代表MCU的所有指令。都是利用一些簡單的指令組成的,簡單的指令代表MCU的線路可以盡量做到最佳化,而提高執(zhí)行速率。另外初學者要具備單片機I/O接口的應(yīng)用知識,這在于周邊應(yīng)用電路及各種元器件的使用,須配合自己所學的電子學及電路學等。符合44PIN的80系列8位單片機的MCU有哪些?答:符合44PIN的80系列8位單片機有Z8674312FSC、Z86E2112FSC、Z86E2116FSC。請介紹一下MCU的測試方法。答:MCU從生產(chǎn)出來到封裝出貨的每個不同的階段會有不同的測試方法,其中主要會有兩種:中測和成測。所謂中測即是WAFER的測試,它會包含產(chǎn)品的功能驗證及AC、DC的測試。項目相當繁多,以HOLTEK產(chǎn)品為例最主要的幾項如下:19.Intel系列的96單片機80c196KB開發(fā)系統(tǒng)時,都有那些注意事項?答:一個即時系統(tǒng)的軟體由即時操作系統(tǒng)加上應(yīng)用程序構(gòu)成。應(yīng)用程序與作業(yè)系統(tǒng)的接口通過系統(tǒng)調(diào)用來實現(xiàn)。用80C196KB作業(yè)系統(tǒng)的MCU,只能用內(nèi)部RAM作為TCB和所有系統(tǒng)記憶體(含各種控制表)以及各個任務(wù)的工作和資料單元。因此一定要注意以下幾點:對各個任務(wù)分配各自的堆迭區(qū),該堆迭區(qū)既作為任務(wù)的工作單元,也作為任務(wù)控制塊的保護單元。系統(tǒng)的任務(wù)控制塊只存放各任務(wù)的堆迭指標,而任務(wù)的狀態(tài)均存放于任務(wù)椎棧中。在一個任務(wù)退出運行時,通過中斷把它的狀態(tài)進棧,然后把它的堆迭指標保存于系統(tǒng)的TCB中;再根據(jù)優(yōu)先取出優(yōu)先順序最高的已就緒任務(wù)的堆迭指標SP映象值送入SP中;最后執(zhí)行中斷返回指令轉(zhuǎn)去執(zhí)行新任務(wù)。各任務(wù)的資料和工作單元盡量用堆迭實現(xiàn),這樣可以允許各任務(wù)使用同一個子程序。使用堆迭實現(xiàn)參數(shù)傳遞并作為工作單元,而不使用絕對地址的RAM,可實現(xiàn)可重入子程序。該子程序既可為各個任務(wù)所調(diào)用,也可實現(xiàn)遞回調(diào)用。在demo板上采樣電壓時,不穩(wěn)定,采樣結(jié)果有波動,如何消除?答:一般來說,仿真器都是工作在一個穩(wěn)壓的環(huán)境(通常為5V)。如果用仿真器的A/D時,要注意其A/D參考電壓是由仿真器內(nèi)部給出,還是需要外部提供。A/D轉(zhuǎn)換需要一個連續(xù)的時鐘周期,所以在仿真時不能用單步調(diào)試的方法,否則會造成A/D采樣值不準。至于A/D采樣不穩(wěn)定,可以在A/D輸入口加一電容,起到濾波作用;在軟件處理時采用中值濾波的方法。在車載DVD系統(tǒng)中,如何設(shè)計電子防震系統(tǒng)?答:在車載DVD答:在車載DVD系統(tǒng),最好選擇高檔DVD機,為高檔DVD機都采用電子防震系統(tǒng)(ADVANCEDESP),當記憶緩沖區(qū)內(nèi)的讀數(shù)降低,先進的電子防震設(shè)計會以雙速讀數(shù)系統(tǒng),做出比正常速度快兩倍的讀數(shù)速率,以減低噪聲,即使連續(xù)震蕩仍可避免跳線情況出現(xiàn),現(xiàn)在就說說什幺叫電子防震。簡單地說:電子防震就是一個信號的儲存--釋放過程,首先CD要先把信號進行提前讀取,也就是我們見到機子的加速,再把信號儲存在RAM中,而我們在開防震的時候所聽到的就是經(jīng)過RAM的聲音,這樣就是它的過程。當沒有防震時是由于信號是1比1讀取的,所以當受到?jīng)_擊后,就會出現(xiàn)跳音。而當開了防震時,機子受到?jīng)_擊后,由RAM釋放出來的聲音使音樂不停地播放,而與此同時,光頭迅速進行復位檢索,當檢索到信號后立即補充,所以不會出現(xiàn)跳音。大概的情況就是這樣。但是這樣還沒有滿足用家的要求,由于這種的方法帶來的時間短,通常只有3秒,所以跳音的機會還是蠻高,如果增大RAM又帶來造價的增高因為RAM這東西價格較貴,尤其是質(zhì)量好的。在電子防震技術(shù)中,有那些IC或器件可供選擇?答:在電子防震技術(shù)中,最重要的技術(shù)之一要數(shù)是RAM技術(shù),而一直以來都是因為它的成本問題,所以防震時間都一直不能增加,也就是說RAM本身就有限制,RAM的容量越大,造價就越高。而許多廠家就如何在RAM的限制里得到最大限度的記憶時間展開了開發(fā)研究。如何進行編程可以減少程序的bug?答:在此提供一些建議系統(tǒng)運行中要考慮的超范管理參數(shù)有:答:在此提供一些建議系統(tǒng)運行中要考慮的超范管理參數(shù)有:單片機應(yīng)用編程技巧(FAQ)5有人認為單片機將被ARM等系列結(jié)構(gòu)的嵌入式系統(tǒng)所取代。單片機的生命期還有多長?答:為8位單片機與嵌入式系統(tǒng)的ARM在功能結(jié)構(gòu)和單價的差異,故應(yīng)用層次上就有很大的不同。ARM適用于系統(tǒng)復雜度較大的高級產(chǎn)品,如PDA、手機等應(yīng)用。而8位單片機因架構(gòu)簡單,硬件資源相對較少,適用于一般的工業(yè)控制,消費性家電……等等。評估單片機近期是否會給ARM取代,要觀察兩個因素:答:30.如果準備估計一個算法的MIPS,有什么好的途徑?答:算法的運行時間是指一個算法在計算機上運算所花費的時間。它大致等于計算機執(zhí)行簡單操作(如賦值操作,比較操作等)所需要的時間與算法中進行簡單操作次數(shù)的乘積。通常把算法中包含簡單操作次數(shù)的多少叫做算法的時間復雜性。它是一個算法運行時間的相對量度,一般用數(shù)量級的形式給出。度量一個程序的執(zhí)行時間通常有兩種方法:

采用AT89S51?!豸溨炼惔翣q次話磁彳琑AM中的數(shù)據(jù)被修改了。這是怎么回事?注:數(shù)據(jù)放在特殊寄存器之外。答:如果是RESET腳的復位按鈕:一般MCU的RESET復位,其特殊寄存器會被重新初始化,而通用寄存器的值保持不變。如果復位按鈕是電源復位:那就是MCU的上電復位,其特殊寄存器會被初始化,而通用寄存器的值是隨機數(shù)。將P2.7用來驅(qū)動一個NPN三極管,中間串接了一個1K的電阻。問題是:當我嘗試向P2.7寫'1'時發(fā)現(xiàn)管腳只能輸出大約0.5V的一個電平。這個電路的使用得妥當么?如何正確的使用10功能?答:是在仿真時遇到的問還是燒錄芯片后遇到的問題?答:是在仿真時遇到的問還是燒錄芯片后遇到的問題?可以先將P2?7的外部電路斷開,測量輸出電壓是否正常。如果斷開后輸出電壓正常那就說明P2.7的驅(qū)動能力不夠不能驅(qū)動NPN三極管,應(yīng)該改用PNP三極管(一般在MCU應(yīng)用中,都采用PNP方式驅(qū)動)。如果斷開后輸出電壓還不正常,那有可能是仿真器(或芯片)已經(jīng)損壞。在做充電管理的時候,提高pwm的頻率往往以犧牲精度為代價,如果用的AT90S4433(avr)、78P458(elan)頻率分別做到16kHz(8bit)和32kHz(8bit),而希望做到的是100kHz(8bit以上),諸如atiny15那樣。怎么辦?答:你所說的PWM是通過定時/計數(shù)器來控制其頻率和占空比的,所以要提高頻率,必然會降低精度。如果要提高PWM的頻率,只能通過提高系統(tǒng)振蕩頻率來解決。汽車電子用的單片機是8位多,還是32位?如何看待單片機在汽車電子市場中的前景?答:現(xiàn)今汽車制造也是一個進步很快的工業(yè),特別是電子應(yīng)用于汽車上,令多種新功能得以實現(xiàn)??偟膩碚f,汽車電子應(yīng)用分三部份。40.Delta-Sigma軟件測量方式,是什么概念?答:Delta-Sigma原理一般應(yīng)用在ADC應(yīng)用中。具體來說,Delta-SigmaADC的工作原理是由差動器、積分器和比較器構(gòu)成調(diào)制器,它們一起構(gòu)成一個反饋環(huán)路。調(diào)制器以大大高于模擬輸入信號帶寬的速率運行,以便提供過采樣。模擬輸入與反饋信號(誤差信號)進行差動(delta)比較。該比較產(chǎn)生的差動輸出饋送到積分器(sigma)中。然后將積分器的輸出饋送到比較器中。比較器的輸出同時將反饋信號(誤差信號)傳送到差動器,而自身被饋送到數(shù)字濾波器中。這種反饋環(huán)路的目的是使反饋信號(誤差信號)趨于零。比較器輸出的結(jié)果就是1/0流。該流如果1密度較高,則意味著模擬輸入電壓較高;反之,0密度較高,則意味著模擬輸入電壓較低。接著將1/0流饋送到數(shù)字濾波器中,該濾波器通過過采樣與抽樣,將1/0流從高速率、低精度位流轉(zhuǎn)換成低速率、高精度數(shù)字輸出。簡而言之,Delta就是差動,Sigma就是積分的意思。Delta-Sigma軟件測試,我的理解應(yīng)該是通過軟件模擬差動積分的過程。具體來說,就是偵測外部輸入的電壓(或者電流)信號變化,然后通過軟件積分運算,得出外部信號隨時間變化的基本狀況。41.通常采用什么方法來測試單片機系統(tǒng)的可靠性?答:單片機系統(tǒng)可以分為軟件和硬件兩個方面,我們要保證單片機系統(tǒng)可靠性就必須從這兩方面入手。首先在設(shè)計單片機系統(tǒng)時,就應(yīng)該充分考慮到外部的各種各樣可能干擾,盡量利用單片機提供的一切手段去割斷或者解決不良外部干擾造成的影響。我們以HOLTEK最基本的I/O單片機HT48R05A-1為例,它內(nèi)部提供了看門狗定時器WDT防止單片機內(nèi)部程序亂跑出錯;提供了低電壓復位系統(tǒng)LVR,當電壓低于某個允許值時,單片機會自動RESET防止芯片被鎖死:HOLTEK也提供了最佳的外圍電路連接方案,最大可能的避免外部干擾對芯片的影響。當一個單片機系統(tǒng)設(shè)計完成,對于不同的單片機系統(tǒng)產(chǎn)品會有不同的測試項目和方法,但是有一些是必須測試的:43.在設(shè)計軟體時,大多單片機都設(shè)有看門狗,需要在軟體適當?shù)奈恢萌ノ构?,以防止軟體復位和軟體進入死循環(huán),如何適當?shù)奈构?,即如何精確判定軟體的運行時間?答:大多數(shù)單片機都有看門狗定時器功能(WDT,WatchDogTimer)以避免程序跑錯。HOLTEK有一款基本I/O型單片機--HT48R05A-1,我們就以它為例做個說明吧。首先了解一下WDT的基本結(jié)構(gòu),它其實是一個定時器,所謂的喂狗是指將此定時器清零。喂狗分為軟件和硬件兩種方法。軟件喂狗就是用指令來清除WDT,即CLRWDT;硬件喂狗就是硬件復位RESET。當定時器溢出時,會造成WDT復位,也就是我們常說的看門狗起作用了。在程序正常執(zhí)行時,我們并不希望WDT復位,所以要在看門狗溢出之前使用軟件指令喂狗,也就是要計算WDT相隔多久時間會溢出一次。HT48R05A-1的WDT溢出時間計算公式是:256*Div*Tclock。其中Div是指wdt預分頻數(shù)1~128,Tclock是指時鐘來源周期。如果使用內(nèi)部RC振蕩作為WDT的時鐘來源(RC時鐘周期為65us/5V),最大的WDT溢出時間為2.1秒。當我們得到了WDT溢出時間Twdt后,一般選擇在Twdt/2左右的時間

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論