本人用心整理的51單片機定時器及中斷圖解,希望大家喜歡,如果有用可以收藏一下本帖
0.png (168.01 KB, 下載次數: 200)
下載附件
2018-1-20 22:02 上傳
51單片機定時器與中斷示意圖(汪永海整理)部分細節展示(完整的pdf清晰版文檔可在本帖附件下載):
0.png (142.44 KB, 下載次數: 153)
下載附件
2018-1-20 22:06 上傳
0.png (48.95 KB, 下載次數: 148)
下載附件
2018-1-20 22:06 上傳
定時器工作流程(LED閃爍)
1、TMOD=Ox01設置T0為工作模式1
2、TH0=0xdc、 Tl0=0x00TO賦初值,設置10毫秒
3、TR0=1打開定時器0
4、while(1)循環體
5、if(TF0==1)判斷T0是否溢出
6、TF=0將中斷標志位清零(軟件清零)
7、TH0=0xdc、 Tl0=0x00定時器溢出后自動從零開始,這里重新附初值
8、cnt++計數變量自加1
9、if(cnt>=100)判斷溢出是否達到100次
10、cnt=0計數變量清零
11、LED=~LED
定時值存儲寄存器
(初始10ms)
1、時鐘周期=1秒/晶振頻率
2、機器周期=12*時鐘周期
3、1秒=時鐘周期*晶振頻率=(機器周期/12)*頻率=(110592/12)機器周期=921600機器周期
4、10ms=9216機器周期
5、也就是說設定10ms需要經過9216個機器周期
中斷寄存器總開關EA=1打開及定時器0中斷分開關EX=1打開的時候,一旦檢測到TF0=1也就是定時器0溢出,程序直接執行中斷函數
中斷工作流程(LED閃爍)
1、TMOD=0x01 //設置T0為工作模式1
2、TH0=0xdc、 Tl0=0x00 //TO賦初值,設置10毫秒
3、TR0=1 //打開定時器0
4、EA=1 打開總中斷
5、ET0=1 //打開定時器0中斷分開關
6、while(1) 處理中斷發生后的循環體
7、void name() interrupt 1注意格式和關鍵字,1是定時器T0中斷優先級控制位
8、TH0=0xdc、 Tl0=0x00 //因定時器溢出后自動清零,要想繼續按照設置的計時,需要重新附初值
9、cnt++ 計數變量自加1
10、if(cnt>=100)判斷中斷次數是否達到100次
11、cnt=0 計數變量清零
12、LED=~LED(按位取反)
完整的pdf格式文檔51黑下載地址(清晰版):
51單片機定時器與中斷示意圖(汪永海整理).pdf
(92.64 KB, 下載次數: 624)
2018-1-20 22:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|