單片機(jī)關(guān)鍵技術(shù)基礎(chǔ)詳解(一)
一、關(guān)于C51單片機(jī)的中斷號以及中斷向量
1、中斷號
2、interrupt 和 using 在C51中斷中的使用
8051 系列 MCU 的基本結(jié)構(gòu)包括:32 個 I/O 口(4 組8 bit 端口);兩個16 位定時計數(shù)器;全雙工串行通信;6 個中斷源(2 個外部中斷、2 個定時/計數(shù)器中斷、1 個串口輸入/輸出中斷),兩級中斷優(yōu)先級;128 字節(jié)內(nèi)置RAM;獨(dú)立的 64K 字節(jié)可尋址數(shù)據(jù)和代碼區(qū)。中斷發(fā)生后,MCU 轉(zhuǎn)到 5 個中斷入口處之一,然后執(zhí)行相應(yīng)的中斷服務(wù)處理程序。中斷程序的入口地址被編譯器放在中斷向量中,中斷向量位于程序代碼段的最低地址處,注意這里的串口輸入/輸出中斷共用一個中斷向量。8051的中斷向量表如下:
二、CPU與單片機(jī)的復(fù)位電路的作用及基本復(fù)位方式
在上電或復(fù)位過程中,控制CPU的復(fù)位狀態(tài):這段時間內(nèi)讓CPU保持復(fù)位狀態(tài),而不是一上電或剛復(fù)位完畢就工作,防止CPU發(fā)出錯誤的指令、執(zhí)行錯誤操作,也可以提高電磁兼容性能。
無論用戶使用哪種類型的單片機(jī),總要涉及到單片機(jī)復(fù)位電路的設(shè)計。而單片機(jī)復(fù)位電路設(shè)計的好壞,直接影響到整個系統(tǒng)工作的可靠性。許多用戶在設(shè)計完單片機(jī)系統(tǒng),并在實驗室調(diào)試成功后,在現(xiàn)場卻出現(xiàn)了“死機(jī)”、“程序走飛”等現(xiàn)象,這主要是單片機(jī)的復(fù)位電路設(shè)計不可靠引起的。
基本的復(fù)位方式
單片機(jī)在啟動時都需要復(fù)位,以使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。89系列單片機(jī)的復(fù)位信號是從RST引腳輸入到芯片內(nèi)的施密特觸發(fā)器中的。當(dāng)系統(tǒng)處于正常工作狀態(tài)時,且振蕩器穩(wěn)定后,如果RST引腳上有一個高電平并維持2個機(jī)器周期(24個振蕩周期)以上,則CPU就可以響應(yīng)并將系統(tǒng)復(fù)位。單片機(jī)系統(tǒng)的復(fù)位方式有:手動按鈕復(fù)位和上電復(fù)位。
1、手動按鈕復(fù)位
手動按鈕復(fù)位需要人為在復(fù)位輸入端RST上加入高電平(圖1)。一般采用的辦法是在RST端和正電源Vcc之間接一個按鈕。當(dāng)人為按下按鈕時,則Vcc的+5V電平就會直接加到RST端。手動按鈕復(fù)位的電路如所示。由于人的動作再快也會使按鈕保持接通達(dá)數(shù)十毫秒,所以,完全能夠滿足復(fù)位的時間要求。
圖1
2、上電復(fù)位
AT89C51的上電復(fù)位電路如圖2所示,只要在RST復(fù)位輸入引腳上接一電容至Vcc端,下接一個電阻到地即可。對于CMOS型單片機(jī),由于在RST端內(nèi)部有一個下拉電阻,故可將外部電阻去掉,而將外接電容減至1?F。上電復(fù)位的工作過程是在加電時,復(fù)位電路通過電容加給RST端一個短暫的高電平信號,此高電平信號隨著Vcc對電容的充電過程而逐漸回落,即RST端的高電平持續(xù)時間取決于電容的充電時間。為了保證系統(tǒng)能夠可靠地復(fù)位,RST端的高電平信號必須維持足夠長的時間。上電時,Vcc的上升時間約為10ms,而振蕩器的起振時間取決于振蕩頻率,如晶振頻率為10MHz,起振時間為1ms;晶振頻率為1MHz,起振時間則為10ms。在圖2的復(fù)位電路中,當(dāng)Vcc掉電時,必然會使RST端電壓迅速下降到0V以下,但是,由于內(nèi)部電路的限制作用,這個負(fù)電壓將不會對器件產(chǎn)生損害。另外,在復(fù)位期間,端口引腳處于隨機(jī)狀態(tài),復(fù)位后,系統(tǒng)將端口置為全“l”態(tài)。如果系統(tǒng)在上電時得不到有效的復(fù)位,則程序計數(shù)器PC將得不到一個合適的初值,因此,CPU可能會從一個未被定義的位置開始執(zhí)行程序。
圖2
3、積分型上電復(fù)位
常用的上電或開關(guān)復(fù)位電路如圖3所示。上電后,由于電容C3的充電和反相門的作用,使RST持續(xù)一段時間的高電平。當(dāng)單片機(jī)已在運(yùn)行當(dāng)中時,按下復(fù)位鍵K后松開,也能使RST為一段時間的高電平,從而實現(xiàn)上電或開關(guān)復(fù)位的操作。
根據(jù)實際操作的經(jīng)驗,下面給出這種復(fù)位電路的電容、電阻參考值。
圖3中:C:=1uF,Rl=lk,R2=10k
圖3 積分型上電復(fù)位電路
三、單片機(jī)雙機(jī)并行通信中所遇問題
1 引言
本系統(tǒng)采用的CPLD為 ATMEL公司生產(chǎn)的ATF1540AS器件,該器件是一種高性能、高密度復(fù)合可編程邏輯器件,簡稱CPLD,它利用ATMEL 的電可擦除存儲器技術(shù),有 64個邏輯宏單元和68個I/O端口,很容易和多個TTL、SSI、MSI、LSI和經(jīng)典的PLDS組合使用。每個宏單元包括積項和積項多路選擇器、 OR/XOR/CASCADE邏輯、觸發(fā)器、輸出選擇和使能、輸入邏輯陣列五個部分。ATF1504AS的增強(qiáng)選路開關(guān)增加了可用的門計數(shù),提高了管腳鎖存設(shè)計修改的成功率。
圖1 雙機(jī)通信框圖
2 系統(tǒng)結(jié)構(gòu)
系統(tǒng)的CPU采用W77E58,由ATF1504AS構(gòu)成通信接口,系統(tǒng)框圖如圖1所示。
2.1 問題提出
電腦刺繡機(jī)為達(dá)到良好的人機(jī)界面交互功能,采用上下位機(jī)方式,下位機(jī)主要進(jìn)行繡花動作的控制,上位機(jī)主要進(jìn)行花樣的跟蹤。為了實現(xiàn)繡花的同時在液晶屏上進(jìn)行繡花跟蹤,單CPU方式存在系統(tǒng)資源透支, CPU處理數(shù)據(jù)將十分困難,于是提出了采用雙CPU的工作方式,但同時帶來一個問題—雙CPU的通信問題。
2.2 解決方案
?。?) 采用串行通信方式
優(yōu)點(diǎn):在由單片機(jī)組成的多機(jī)方式中,串行接口方式是最常用的。串行通信方式接口電路簡單,可以方便實現(xiàn)長距離傳輸??垢蓴_能力比較好。
缺點(diǎn):傳輸數(shù)據(jù)慢,不適合實時數(shù)據(jù)傳輸。在數(shù)據(jù)傳輸要求高的情況下,容易造成瓶頸堵塞現(xiàn)象。
?。?) 采用并行通信方式
優(yōu)點(diǎn):并行通信傳輸數(shù)據(jù)快,適合進(jìn)行實時控制。
缺點(diǎn):抗干擾能力差,不適合長距離傳輸,最大距離不超過5m。
由于本系統(tǒng)對數(shù)據(jù)傳輸?shù)膶崟r性要求比較高,并且上下位機(jī)之間的距離不超過3m,進(jìn)行適當(dāng)?shù)目垢蓴_措施,完全可以達(dá)到系統(tǒng)的要求,所以確定采用并行通信方式。
2.3 具體措施
(1) 采用ATF1504AS(可編程邏輯器件)進(jìn)行并行通信,減少分立器件所產(chǎn)生的雜散電容而帶來的噪聲干擾。
?。?) 在輸入數(shù)據(jù)端加斯密特電路(74LS14),將外部傳輸線上耦合噪聲濾除掉。從而提高總線接收的抗干擾性能。
?。?)采用三態(tài)門驅(qū)動方式可以提高總線的抗干擾能力,因為三態(tài)門有三種狀態(tài)輸出,既所謂的低阻高電平、低阻低電平、高阻態(tài)(禁態(tài))。由于三態(tài)門的輸入具有的三態(tài)性,所以使三態(tài)門的信號源的負(fù)擔(dān)減輕。有利于提高速度和抗干擾能力。
3 雙CPU通信原理設(shè)計
3.1 雙CPU通信原理圖
從圖2雙CPU通信原理圖中可以看出,在輸入接口上都接上74LS14斯密特電路和74LS244三態(tài)門驅(qū)動器,以提高抗干擾能力。在SRZB、SCYX(上位機(jī))及SRZB、SCYX(下位機(jī))的握手信號線上接入74LS14斯密特電路,以提高抗干擾能力。
圖2 雙機(jī)通信原理圖
3.2 ATF1504AS內(nèi)部原理圖
由于篇幅有限,僅列出上位機(jī)的ATF1504AS的內(nèi)部原理圖如圖3,下位機(jī)的ATF1504AS的內(nèi)部原理圖與此相類似。
評論