色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > IT培訓問題庫 > 實際開發中單片機常見問題有哪些是高發的

實際開發中單片機常見問題有哪些是高發的 時間:2018-07-05      來源:單片機論壇

單片機常見問題

學習單片機開發的朋友越來越多,因為是初學往往在學習的過程中有看書的有看視頻的學習方式五花八門,但是在實際的操作中卻會出現各種各樣的問題,今天我就把一下單片機常見問題給新手朋友總結一下。

① :有關晶振

單片機的晶振在內部可以簡化成一個反向器。當晶振輸入腳XI剛過坎壓、被認為是1的一瞬間,輸出腳XO就輸出0,這個0會帶動晶振使XI電壓下降,當降低到坎壓被認為是0的一瞬間,輸出腳XO就輸出1。這樣周而復始。

因此,用示波器觀察正常工作的晶振輸入腳XI時,得到的是一個不高不低的近似水平線。而XO則是幅值很大的正弦波。測量晶振輸入腳XI時,示波器表筆要打在X10檔上,否則,表筆就能把晶振弄停。

因此布線時,晶振輸入腳XI要盡量靠近晶振,而XO腳可稍遠。同時XO具有一定的驅動能力,某些芯片可以用它驅動其它時序電路(不推薦這么做,因為系統可靠性下降)。

② 、用機械開關觸發INT中斷時:

由于機械開關會震動,產生的電壓會有毛刺,這些毛刺會多次觸發中斷。會造成多次觸發的因素有兩點:

(1 )開關按下時的震動。第一次低電平到來時會進入中斷處理程序,之后就算這些震動在中斷處理程序執行的過程中產生,即使進入中斷處理程序后關掉了總中斷,這些毛刺仍然會使中斷標志位置位,會在結束中斷處理程序結束后再次馬上觸發中斷處理程序。

(2 )開關釋放時的震動。在第一次高電平到來時會退出中斷處理程序,之后的毛刺會再次進入中斷處理程序。

解決辦法:

在中斷處理程序的最后加一段低電平等待代碼,等待低電平結束再延時5ms(為了消除開關釋放時毛刺的干擾),5ms延時結束后再清除中斷標志位(在中斷處理程序執行的過程中可能已經再次觸發了中斷標志位)。代碼如下:

void int0() interrupt 0

{

/*Do something*/

while(rollRA==0);//等待低電平結束

delay5(1);//等待按鍵釋放的毛刺結束

IE0=0; //清除中斷標志位,以防再次進入中斷

}

單片機常見問題

③ :C51為什么要嵌套匯編

51單片機一個顯著優點就是指令執行時間固定,因此可以適應時序要求嚴格的場合。例如符合ISO7816協議的cpu卡的讀寫,對時序要求比較嚴格。其實就是用io腳做出來的同步半雙工串口。支持cpu卡的程序一般比較龐大,需要用c51來組織,但是由于c編譯的不確定性,必須把底層程序封裝成匯編語言模塊嵌入到工程中。這就帶來幾個問題:如何聲明函數、參數如何傳遞等。限于篇幅,不能說得很細。下面舉例:

匯編程序單獨保存一個文件,加入到工程中,函數如下:

_proc_a:

mov a, r7

inc a

mov r7, a

ret

用c語言在.h文件中聲明: extern unsigned char proc_a(unsigned char val);

調用時形如: retvalue = proc_a(0x11);

說明:

a:匯編程序如果帶參數,則需要在匯編程序前多加一個下劃線。而聲明它的地方不用加(偉福編譯器這么要求的)。

b:函數的形參中第一參數用R7傳遞,函數返回值用R7返回,這是C51的通用規范。其他參數都有相應規定。函數可以返回一個位,用psw的c位返回。c:上面的語句,執行順序是把0x11給R7,然后跳轉子程序,子程序將它加1后送回。

d:函數跳轉到匯編程序時,本區的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考慮調用后是否要恢復這些常規資源。上例中,A的值被函數使用了,編程者不必恢復調用前的值。

④ 、指向code區數組的指針也要加 code 關鍵字聲明。

比如 unsigned char code arr[30]; 數組,要用指針指向它,要把指針也聲明成 unsigned charcode*p;

后來使用發現其它很多地方使用是不需要這樣聲明的,只要 unsigned char *p;就行了,但是清楚地記得那次確實是要加 code 關鍵字聲明才可以的。

⑤ :51單片機的P0口特殊之處

許多新手都碰到這個問題,其實很簡單,這涉及到芯片的io腳是怎么做出來的。這對硬件工程師來說十分重要。TTL的io腳模型:

P1,P2,P3口都可以理解成左圖,注意vcc下面有個電阻,因此可以理解成:引腳輸出1的能力弱。地那邊沒有電阻,可以理解成引腳吸入電流能力強。而P0口,可以理解成右圖。這就是集電極開路輸出,也叫OC輸出?梢钥闯觯擟TR=1時,三極管導通,引腳被接地;當ctr=0時,三極管截止,引腳浮空,也叫三態。這個端口這么做的目的是考慮P0口肩負讀寫數據和地址復用,這個關系要仔細看懂cpu時序圖。因此,P0口要加合適的上拉電阻,絕不要加下拉電阻。上拉電阻的選擇要看外部負載情況。

⑥ :C51編譯器如何區分位地址和字節地址

是靠預定義實現的,比如:sfr P0 = 0x80; sbit P0_0 = 0x80;前者聲明了P0端口地址位于0x80,后者說明了P0端口的bit0,即P0.0位于位地址空間0x80處。這2個0x80具有完全不同的含義,靠關鍵字sfr和sbit來區別。這樣當程序被編譯時,編譯器會依此編譯成相應的匯編語言。例如:

C51語句: P0 = 1;

P0聲明為sfr,因此編譯成:mov 80h,01h,將把0x01數據送入0x80單元,由于0x80單元物理上對應P0端口,因此,P0.0腳將輸出高電平(其實是呈現高阻態,P0口獨有的),其他.1-.7腳輸出低電平。

C51語句: P0_0 = 1;

P0_0聲明為sbit,因此編譯成:setb 80h,這將把位地址空間的0x80地址的bit的值置1。這個位正是P0口的bit0,執行后,P0.0將輸出高阻態。而P0.1-.7不會變化。

⑦ 、在51里面,位變量貌似是有限的。

如果要用一個布爾型作為標識變量,為了節省控件可以用 bit 型變量,但是在DRS1000項目中遇到過一次用 bit 型變量出錯,改為 unsigned char 型就OK了,那時定義的變量已經很多了,可能是把可以用bit尋址的存儲區都用光了吧。

⑧ 、對于15系列單片機,在使用串口時必須要指定AUXR寄存器的值,否則程序無法正常運行。

這個情況遇到過很多次,15系列單片機只要使用到串口就一定要知名AUXR寄存器的值,不像12系列那樣可以把這個寄存器忽略。

在使用15系列單片機時養成了一個習慣:main 函數的第一句讓 AUXR=0; ,后面串口在根據需要對其進行初始化。

⑨ :P1-3口如何輸入輸出

從上節的左圖可以看出。做輸出時,ctr=1則輸出強信號0,ctr=0則輸出弱信號1。當io腳做輸入時,應使ctr=0,這樣三極管截止。外部信號如果是1,則上拉電阻加強了這個1,單片機就會讀到1。當外部信號為0時,注意,必須將上拉電阻的上拉作用全部抵消,才能在引腳上得到0。

因此,對于程序來說,把io腳置1就處于接收狀態,當然也是輸出1狀態。程序置io口為1,讀取的信號是不是1就依靠外部電路了,如果外部電路沒有“吃掉”上拉電阻的電流,則讀取得到1,反之,雖然程序置io腳為1,但是讀取得到的就是0。

因此,如果用io腳的高電平驅動外部電路時,要小心外部電路把這個1“吃掉”從而輸出不了1。而作為輸入時,為0電平的外設必須足夠有能力將io腳拉低。所以,用io腳直接點亮led的時候,最好用反邏輯,就是輸出0,讓led亮。這樣能保證驅動能力。就是io腳接led的負端,led的正端過電阻接vcc。

因此,io腳輸出1時,外部電路將它強行接地是沒有關系的,而io腳輸出0的時候,外部電路強行接電源就會把io腳損壞。所以,程序加電之后,一般把所有io口都寫成1:MOV P0,0FFH。

P3口引腳復用,必須引腳都處于輸出1狀態。例如,把RXD腳輸出0,則它什么數據都讀不進來了,筆者早期曾調試一整天才發現串口收不到數據是沒有把RXD置1的原因,把時間都浪費在外圍了,當時很是汗顏。

⑩ ,單片機報警系統有哪兩種程序設計方法?

依據報警參數和傳感器劃分,簡單的報警程序可分為兩種:一種是全軟件報警程序,另一種是硬件申請,軟件處理報警程序。

怎樣使用全軟件報警程序的方法實現報警?

全軟件件報警程序的基本方法是:作業現場的被測參數經傳感器、變送器、模/數轉換器送到單片機后,再與規定的上、下限給定值相比較,根據比較的結果進行報警或處理,其整個過程都由軟件實現。

⑪,怎樣用硬件申請、軟件處理報警程序的方法實現報警?

使用這種報警方法時,報警要求不是通過程序比較法得到的,而是直接由傳感器產生的。在發現警性,傳感器發出報警要求之后,立即向CPU提出中斷申請,CPU響應中斷后,立刻進入中斷服務程序,實現報警或對參數、位置實現監控。例如:電接點壓力式報警,吊車的限位控制等。

⑫,在單片機報警系統中,發光二極管常用何種型號的集成電路驅動?

由于發光二極管的驅動電流在20~30mA,所以不能用TTL門電路的輸出直接啟動。在單片機報警系統中,發光二極管常見的驅動方法是采用OC門進行驅動,如74LS06或74LS07等型號的OC門。

給大家總結了十二條單片機中常用的或者是會遇到的一些問題,希望對那些看到這篇文章的朋友的實際開發時會有所幫助。

熱門推薦嵌入式學習方法://www.einuk.cn/emb/danpianji/lbj165.html?lbjgw

上一篇:嵌入式系統應用領域介紹,引流時代潮流

下一篇:作為小白想自學單片機需要注意什么?

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5,京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 女人色熟女乱 | 成人免费网站高清观看素材在线 | 亚洲国产2021精品无码 | 屁股大丰满高潮尖叫视频 | 性色蜜桃臀X88AV | 色偷偷色噜噜狠狠网站久久 | 曰批全过程免费视频在线观看草莓 | 亚洲欧美日韩v中文在线 | 午夜精品a片一区二区三区 gogogo高清在线观看免费中国 | 野狼AV午夜福利在线 | 国产激情大臿免费视频 | 在线视屏 | 国产免费拔擦拔擦8X高清在线 | 国产成人精品无码一区二区蜜柚 | 无码成人中文字幕不卡 | 精品自拍亚洲一区在线 | 国产精品白丝喷浆 | 久久99精品国产综合久久久口爆 | 亚洲AV无码精品色午夜 | 人妻无码一区二区视频 | 色婷婷五月综合亚洲小说 | 狠狠爱亚洲五月婷婷av | 国产乱码久久 | 欧美成人激情在线 | 在线观看AV网站永久 | 色偷偷色偷偷色偷偷在线视频 | 国产成人无码视频一区二区三区 | 厨房人妻hd中文字幕 | 亚洲国产精品无码AV | 色人阁26uuu 中文天堂最新版www | A毛看片免费观看视频 | 各种高潮videos抽搐合集免费 | 人妻无码一区二区三区免费 | 少妇人妻无码专区在线视频 | 涩里番网污站 | 日本岛国片在线观看一区二区 | 成人a片永久免费网站 | 成人a片产无码免费视频奶头鸭度 | 精品无码人妻一区二区免费蜜桃 | 把插八插露脸对白内射 | 色噜噜狠狠网站狠狠爱 |