王 超, 朱鵬遠
(昌吉學院 物理系, 新疆 昌吉 831100)
基于Proteus的單片機中斷電路的設計與仿真
王 超, 朱鵬遠
(昌吉學院 物理系, 新疆 昌吉 831100)
針對單片機中斷程序執行中異常狀態多、偶發性和隱蔽性比較突出等問題,設計了由AT89C51單片機、外部中斷電路、串行口中斷電路和中斷指示電路組成的基于Proteus的單片機中斷電路。在Proteus仿真平臺下完成硬件電路的搭建,對Keil C與Proteus軟件進行聯合調試,借助Proteus提供的虛擬儀器、激勵源和仿真圖表等仿真工具對電路運行情況進行實時觀測和精確分析。該單片機中斷電路可分析多中斷源共同作用下的動態執行過程,可將抽象的中斷過程直觀化,有助于分析調試過程中存在的問題。
單片機; 中斷電路; 電路仿真; Proteus
查詢優先級是指單片機上電復位后,不對IP寄存器進行設置(上電復位后為00H)的優先級,這種優先級順序無法更改,與是否發生中斷服務程序的嵌套沒有關系。物理優先級則需要通過IP寄存器進行設置,若某位為“1”,則相應的中斷源為高優先級;若為“0”,則為低優先級,可實現中斷嵌套。此外,由中斷源發出的中斷請求信號會使相應的中斷請求標志位置“1”,CPU響應中斷后,必須清除中斷請求“1”標志,否則就會再次進入中斷,引發死循環[7-9]。
對51系列單片機來說,在定時器T0/T1和外部中斷邊沿觸發方式下,硬件可自動清除中斷請求標志位,串行口中斷需用軟件清除;而外部中斷電平觸發方式下則需要軟硬件結合才能清除中斷請求標志位。
為了全面分析51單片機的中斷過程,把51系列單片機5個中斷源分成3類,即外部中斷(不同觸發方式)、定時器中斷和串行口中斷,分別設計相應的硬件電路(見圖1),以實現多中斷源作用下的中斷申請、中斷嵌套和中斷請求信號的處理等過程。
圖1中,AT89C51為51系列單片機。外部中斷0電路主要實現電平觸發方式下中斷信號的撤除功能,由按鍵K1的通斷作為中斷請求源,使用D觸發器74LS74作為撤除中斷請求信號的硬件,并用發光二極管D1的亮/滅指示中斷的發生。

圖1 中斷電路設計圖
外部中斷1電路主要實現模擬實際按鍵通斷產生邊沿觸發的中斷過程,由按鍵SW1、RS觸發器74LS279和分段線性激勵源組成。分段線性激勵源用來模擬產生按鍵通斷瞬間的前、后沿抖動,RS觸發器用于消除抖動,并用發光二極管D2亮/滅指示中斷的發生。
串行口中斷電路主要實現擴展輸出口功能,由按鍵K、CD4094組成,CD4094為串入-并出的移位寄存器,將串行數據并行輸出,并用發光二極管D3的亮/滅指示中斷的發生。
定時器中斷屬于內部中斷,采用定時方式,用發光二極管D4的亮/滅指示中斷發生。
在1923年南華足球隊訪問澳洲時,當地報紙曾評論說:“這17名球員所組成的球隊,不只是有使者的責任,而是代表世界上最古老的中國與地球上最新領土的澳洲之間,建立起來的深厚的友誼和加深彼此之間的了解。[16]”所以無論是20世紀70年代發生的中美乒乓外交,還是20世紀末發生在美國與古巴之間的棒球交往,都說明了現代社會條件下體育在改善國家關系和推動國際進步方面有著獨特的優勢和巨大影響力,因此應注意發揮和加強體育在對外關系上的作用。某種意義上說,我們主動進行的體育對外交往活動,就是在用特殊的肢體語言向世界宣講中國故事。
根據圖1要實現的功能,分別編寫主程序和各中斷服務程序。
主程序首先要完成初始化操作,包括中斷允許控制寄存器IE、中斷優先級控制寄存器IP、定時/計數控制寄存器TCON、串行口控制寄存器SCON、定時/計數器控制寄存器TMOD以及D觸發器74LS74。D觸發器初始化要依據真值表設置,即S=0,R=1,S=0,以保證D觸發器初始輸出為高電平。之后進入while循環,判斷是否有按鍵K閉合,決定是進入串行口發送數據或是其他中斷,如圖2和圖3所示。

圖2 主程序流程圖

圖3 中斷服務程序流程圖
4.1 外部中斷0運行分析
單片機P1.0、P1.1分別連接74LS74的R端和S端,D端接地,Q端連接單片機外部中斷0,同時開放T0中斷和外部中斷1,分析外部中斷0為低電平觸發方式時中斷請求信號的撤除過程。在Keil C軟件下編寫源程序,使用鏈接文件vdmagdi.exe以及進行必要的軟件設置后,可實現Keil 軟件和Proteus的動態聯合調試。程序執行后,Proteus原理圖中將顯示變化的情況[10-12]。
仿真運行后,可借助Proteus中的虛擬示波器觀察中斷撤除過程,如圖4所示:單片機從主程序進入定時器T0中斷程序,T0每隔0.5 s中斷一次,循環進行;當按鍵K1通斷后,產生外部中斷0請求信號,CPU響應后暫停定時器T0中斷服務程序進入外部中斷0服務程序,使P1.0置位、D觸發器74LS74輸出為“1”并及時撤除中斷請求標志;當外部中斷0服務程序執行完后返回T0中斷程序繼續執行,即實現了中斷嵌套功能。暫停仿真后,右鍵單擊單片機/8051CPU可方便查看單片機內部寄存器及存儲單元中數據的變化情況。
如圖5所示,TC0N=0x3C=00111100B,即TF0=1代表定時器T0中斷請求、IE1=1代表有外部中斷1請求、IE0=0代表有外部中斷0請求已經撤除、IT0=0為低電平觸發、IT1=1為邊沿觸發;IP=0x01=00000001B,即PX0=1代表外部中斷0為高優先級,其余為低優先級的設置情況。

圖4 中斷申請撤除運行時序圖

圖5 CPU寄存器窗口
4.2 外部中斷1運行分析
單片機外部中斷1與74LS279的輸出端相連,分析在定時器T0中斷、外部中斷1共同作用下,模擬實際按鍵SW通斷產生邊沿觸發方式的中斷過程。實際的機械式按鍵由于機械彈性作用的影響,通常會伴隨有一定時間的觸點機械抖動,之后觸點才能穩定下來,借助Proteus中的分段線性激勵源,可模擬實際按鍵的前沿抖動和后沿抖動曲線,如圖6所示。分段線性激勵源放置圖1中SW上,當SW通斷時引入模擬抖動,借助RS觸發器74LS279消除按鍵抖動的影響。

圖6 按鍵抖動示意圖
暫停仿真后觀察到的寄存器狀態為TCON=0x34=00110100B(見圖7),即定時器T0有中斷請求,IE1=0說明系統硬件已經自動把中斷請求標志清0、IT1=1代表下降沿觸發方式;IP=0x04=00000100B,即外部中斷1設置為EX1=1代表高優先級,其余位為“0”代表低優先級。

圖7 CPU寄存器窗口
繼續仿真運行,使用虛擬示波器觀察時序,如圖8所示。按鍵SW的抖動通過硬件電路產生一個負脈沖,代表一次按鍵,實現了抖動的消除。因外部中斷1優先級高于定時器T0,當按鍵通斷后即可中斷定時器T0進入外部中斷1程序,從而實現中斷二級嵌套。在外部中斷1執行期間暫停定時器T0中斷程序,一旦執行完立刻返回定時器T0中斷程序繼續執行。

圖8 按鍵消抖中斷嵌套時序圖
4.3 串口中斷運行分析
單片機RXD端與CD4094的D端相連,用于傳輸數據,TXD端與CD4094的CLK端相連作為同步時鐘輸出,分析在定時器T0中斷、串行口中斷共同作用下的中斷過程。通過串行移位寄存器CD4094擴展輸出口,串行口工作在方式0下的波特率固定為fosc/12,發送數據時低位在前、高位在后、長度為8位數據。CD4094的輸出端Q0—Q7接8個發光二極管用于觀察傳輸結果。
加載由Keil C軟件編譯的源程序所生成的HEX文件至單片機中,使用Proteus中的觀察窗口(Watch Window)觀察數據[13-15]。該觀察窗口可按照名稱和地址兩種方式添加自己所需要的觀測量,可以顯示地址、類型、當前值和前一值等信息。仿真運行后,單擊暫定仿真按鈕,得到觀察窗口如圖9所示。圖中SBUF為發送緩沖器,前一發送值為0x00,當前發送值為0x55;TCON前一值為0x34,當前值為0x14。這說明前一時刻定時器T0產生中斷請求,此時中斷請求標志已經由硬件自動清除。由SCON為0x02可知,TI=1表示已進入串口中斷服務程序。

圖9 觀察窗口
另外,使用仿真圖表可以對傳輸數據進行定性分析。在圖1所示的電路圖中,分別在RXD、TXD、CD4094的輸出端口U4(D0)—U4(D7)處放置電壓探針,運行仿真圖表后生成各個端口電壓變化波形圖如圖10所示。圖中,TXD為同步時鐘脈沖,RXD為傳輸的數據(01010101B),在方式0下,fosc=12 MHz,波特率為fosc/12,即1 Mbit/s,傳送一位所需要的時間為1 μs。移動標尺,可測量一位數據的傳輸時間為1.000 001 μs,與理論分析一致。

圖10 傳輸數據波形
聯合Keil C軟件和Proteus軟件對單片機中斷電路進行設計、仿真和分析,使用Proteus提供的仿真工具(探針、虛擬儀器、激勵源和仿真圖表)可將單片機抽象的中斷過程直觀化,能實時觀察到單片機與外設接口之間的信號變化,有助于發現中斷過程中偶發性和隱蔽性等問題,提高分析問題和解決問題的能力。
References)
[1] 宋杰,丁志遠.基于Proteus的X86中斷仿真異常問題探究和對策[J].實驗室研究與探索,2015,34(8):81-84.
[2] 代曉倩,尤志堅.單片機軟件中斷測試技術研究[J].電腦知識與技術,2015(11):195-196.
[3] 李麗.基于Proteus和8086的交通燈控制電路仿真設計[J].太原師范學院學報(自然科學版),2016(3):48-51.
[4] 朱志偉,劉湘云.Proteus中被忽視的設置引起的誤會與拔正[J].單片機與嵌入式系統應用,2011,11(6):69-70,73.
[5] 曾宇,宋永端,王弼堃.基于Proteus和Keil軟件的溫室環境監測系統開發[J].農業工程學報,2012(14):177-183.
[6] 胡景華,童淑敏,畢玉革,等.基于Proteus的溫室溫度自動控制系統的設計與仿真[J].中國農機化,2012(5):133-136.
[7] 馬宏坤.51系列單片機的中斷擴展[J].工業控制計算機,2015(12):139-141,157.
[8] 李有光,聞新,南英.本科生AVR單片機實驗教學探索與研究[J].實驗室研究與探索,2015,34(9):216-218,276.
[9] 姚雪梅,陳永前.Proteus和Keil模擬交通燈的實踐教學[J].實驗室研究與探索,2016,35(11):107-109,136.
[10] 王超,楊蓮紅.Proteus仿真軟件在單片機實踐教學中的應用[J].現代電子技術,2014(14):84-87.
[11] 董增文,徐健寧,劉國平.面向研究性學習的單片機虛擬實驗室研究與開發[J].實驗技術與管理,2013,30(3):86-88.
[12] 王超,宋莉莉.Proteus仿真圖表在單片機時序分析中的應用[J].實驗室研究與探索,2014,33(9):93-97.
[13] 鄧力.使用Proteus仿真圖表對單片機指令時序仿真[J].科技通報,2013(5):130-133.
[14] 吳建平,吳姝瑤,劉超.Proteus仿真在虛擬示波器設計中的應用[J].中國測試,2013(3):79-83.
[15] 孫杰,張學軍,劉云,等.基于單片機的溫度控制系統設計及仿真[J].農機化研究,2015(4):219-222.
Design and simulation of SCM interrupt circuit based on Proteus
Wang Chao, Zhu Pengyuan
(Department of Physics,Changji University,Changji 831100,China)
Aiming at the problems that the abnormal state,contingency and concealment in the interrupt program execution of SCM (single-chip microcomputer) are prominent,an interrupt circuit is designed,which is composed of the AT89C51 SCM,external interrupt circuit,serial port interrupt circuit and interrupt indication circuit and based on Proteus. The construction of the hardware circuit is completed at the Proteus simulation platform. Then the joint debugging of Keil C and Proteus software are carried out. With the aid of the simulation tools such as virtual instrument,excitation source and simulation charts provided by Proteus,the operation of the circuit is observed and analyzed in real time. The SCM interrupt circuit can be used to analyze the dynamic execution process under the combined action of multiple interrupt sources and visualize the abstract interrupt process. It can also help to analyze the problems existing in the debugging process.
SCM (single-chip microcomputer); interrupt circuit; circuit simulation; Proteus
10.16791/j.cnki.sjg.2017.07.035
2017-01-22
新疆維吾爾自治區高等學校科學研究計劃項目(XJEDU2014S070);教育部“本科教學工程”地方高校專業綜合改革試點項目(ZG0550)
王超(1979—),男,新疆昌吉,碩士,講師,主要研究方向為智能控制及仿真教學.
TP332;TP391.9
A
1002-4956(2017)07-0136-05