單片機中斷小實(shí)驗
要求是利用定時(shí)器T0的方式1,產(chǎn)生10ms的定時(shí),并使P1.0引腳上輸出周期為20ms的方波,采用中斷方式,設系統的時(shí)鐘頻率為12MHz。
本文引用地址:http://dyxdggzs.com/article/201611/320138.htm先說(shuō)程序,如下
上面的程序采用的是中斷的方式產(chǎn)生中斷的,計數器每次加1需要花一定的時(shí)間,定時(shí)器定時(shí)就是靠這個(gè)時(shí)間的積累得到的,89C51有四個(gè)寄存器單元TH0,TL0,TH1,TL1是存放計數值的,每個(gè)寄存器8位,還有一個(gè)寄存器TMOD可以設置工作模式,每種模式計數地范圍不一樣,所具有的功能也不一樣,這個(gè)問(wèn)題以后有空再說(shuō)一下。
定時(shí)器的控制是通過(guò)設置相關(guān)的寄存器得到的,主要有兩個(gè)TCON 和TMOD
TCON是控制寄存器,里面有好多中斷標志位,通過(guò)對它的設置可以控制單片機的中斷,單片機通過(guò)它可以知道系統是不是有中斷產(chǎn)生
TMOD是工作模式寄存器,它可以控制單片機的工作方式,通過(guò)它可以控制單片機的觸發(fā)方式以及C/T的切換
因為本文的思想是采用中斷控制的方式,所以還需要對中斷控制位IE進(jìn)行設置
在此再介紹一下KEIL軟件和PROTEUS軟件的聯(lián)調
先看一下keil軟件
這個(gè)軟件是免費的,用起來(lái)非常方便,可以支持C語(yǔ)言編程和匯編編程,我們選擇的是匯編編程,在編譯前要建好工程
編譯的時(shí)候,要注意,本軟件最終要生成hex類(lèi)型的文件以支持仿真,所以要點(diǎn)擊一下target左邊的按鈕,如下圖
打開(kāi)之后,就是下面的界面,選擇output選項卡,在creat hex file前面打鉤
如果程序沒(méi)有錯誤,就在工程那個(gè)文件夾下面生成了hex文件,好了,程序工作完成了
下面進(jìn)入單片機硬件電路的設計(實(shí)際中應該是先硬件后軟件,本文忘考慮這點(diǎn)了)
這是在proteus環(huán)境下的電路圖,這是一款非常不錯的仿真軟件(注意要設置一下晶振的振蕩頻率為12MHz)
我的電路是要在P1.0口輸出脈沖信號,下面是仿真
效果非常不錯,小有成就感啊
通過(guò)此次設計,可以發(fā)現,單片機的中斷是在單片機計數滿(mǎn)之后產(chǎn)生的,那么計數器在這個(gè)過(guò)程就是一個(gè)準確的計時(shí)功能,產(chǎn)生中斷,就要進(jìn)入中斷服務(wù)程序,這個(gè)程序是由我們自己編寫(xiě)的,為了脈沖可持續輸出,需要在這個(gè)程序中為計數器賦初值,并且取反P1.0,好了,休息一下
評論