1. 51單片機中的定時器中斷是怎麼用的
代碼如下:
//實現led燈一秒亮滅閃爍
void main()
{
TMOD=0x01;//設置定時器0為工作方式1(M1 M0為01)
TH0=(65536-45872)/256;//裝初值11.0582晶振定時50ms數為45872
TL0=(65536-45872)%256;
EA=1;//開總中斷
ET0=1;//開定時器0中斷
TR0=1;//啟動定時器0
while(1);//程序停止在這里等待中斷發生
}
void T0_time() interrupt 1
{
TMOD=0x01;//重裝初值
TH0=(65536-45872)/256;
num++;//num每加一次判斷一次是否到20次
if(num==20)//如果到了20次,說明1秒時間到
{
num=0;//num清0重新計數
led=~led1;
}
}
(1)單片機如何使用中斷燈擴展閱讀
定時器有兩種工作模式,分別為計數模式和定時模式。對Px,y的輸入脈沖進行計數為計數模式。定時模式,則是對MCU的主時鍾經過12分頻後計數。因為主時鍾是相對穩定的,所以可以通過計數值推算出計數所經過的時間。
51單片機計數器的脈沖輸入腳。主要的脈沖輸入腳有Px,y, 也指對應T0的P3.4和對應T1的P3.5,主要用來檢測片外來的脈沖。而引腳18和19則對應著晶振的輸入脈沖,脈沖的頻率和周期為
F = f/12 = 11.0592M/12 = 0.9216MHZ T = 1/F = 1.085us
51計數器的計數值存放於特殊功能寄存器中。T0(TL0-0x8A, TH0-0x8C),T1(TL1-0x8B, TH1-0x8D)
定時器常用作定時時鍾,以實現定時檢測,定時響應、定時控制,並且可以產生ms寬的脈沖信號,驅動步進電機。定時和計數的最終功能都是通過計數實現,若計數的事件源是周期固定的脈沖則可實現定時功能,否則只能實現計數功能。因此可以將定時和計數功能全由一個部件實現。
2. 單片機定時中斷 循環點亮LED燈
在此我指出你程序的三點:
1:你寫匯編程序注意程序的入口地址,比如:「ORG
0000H,主程序開始的入口ORG
0100,中斷程序開始的入口
ORG
0200等等...」。你要知道匯編和C不同,匯編比起C語言要相對機械一些。匯編程序是寫入硬體內部的,嚴格的配合硬體的結構,於是從上往下執行時,你的匯編程序注意標程序的入口地址,加上合適的跳轉。
2:你把PSW
ACC入棧保護起來做什麼?
搞得程序執行都不按常理了。你找書熟悉下它們,有時畫蛇添足也會出問題的。
3:main程序前面一般都是初始化程序,而你的程序前面是要循環的內容。寫程序不僅需要邏輯,還需要你寫得規范,條理清澈。
以下我幫你修改了你寫得程序,「//」後面接的是多餘的程序。我還幫你添加了幾條,你自己對照看。
下面的程序可以直接燒進單片機板子調試出現象。你也可以用KEIL自己模擬看。下面的程序你把它們完整黏貼上KEIL編譯就可。不需要改了,我QQ272414531,有什麼問題可以直接問我。如果答案滿意,請採納,謝謝:
ORG
0000H
LJMP
MAIN
ORG
001BH
LJMP
SERVE
ORG
0100H
MAIN:
//MOV
A,#01H
LOOP:
//RL
A
SETB
C
MOV
A,#0feH
MOV
P1,#0FEH
MOV
TMOD,#10H
MOV
30H,#0AH
SETB
ET1
SETB
EA
MOV
TH1,#3CH
MOV
TL1,#0B0H
SETB
TR1
SJMP
$
ORG
0200H
SERVE://PUSH
PSW
//PUSH
ACC
MOV
TH1,#3CH
MOV
TL1,#0B0H
DJNZ
30H,RETUNT
MOV
30H,#0AH
RLC
A
MOV
P1,A
//AJMP
LOOP
LOOP1:RETI
RETUNT://POP
ACC
//POP
PSW
//
RETI
LJMP
LOOP1
END
3. 單片機中斷如何使用
單片機的中斷使用一般遵循如下步驟:
1、按中斷號(C語言)或者中斷入口地址(匯編)別寫中斷服務程序。如果是編寫匯編中斷服務程序,如果中斷程序中用到了寄存器或者有可能影響程序狀態字的指令,應注意現場保護(C語言會自動保護)。對不能硬體清除中斷標志的中斷響應,退出中斷前要軟體清除中斷標志。對復合中斷(如串口收發中斷)服務程序,要判斷中斷具體來源執行對應程序。
2、使能相應的中斷。
3、開啟總中斷。
4. 單片機中斷實驗交通燈的實驗原理
根據圖3.2電路,用單片機的IO口控制4組紅綠黃共12個發光二極體,使發光二極體按照一定規則與次序發光與閃亮以實現模擬交通燈的功能。假設初始狀態為:(南北通行狀態)南北綠燈、東西紅燈(25s);後轉為過度狀態:南北黃燈、東西紅燈(5s);再轉為東西通行狀態:東西綠燈、南北紅燈25(s)。再轉為過渡狀態:東西黃燈、南北紅燈(5s),然後循環往復。
要求採用定時器實現所需要的定時時間。
2、鍵控交通燈。
按一下K1鍵
,保持南北通行狀態;按一下K2鍵
,保持東西通行狀態;按一下K3鍵
,保持正常交通燈。
要求在中斷中進行按鍵處理。
3、具有閃爍的交通燈。
在2的基礎上增加,綠燈最後5s閃爍,即亮0.5S滅0.5S閃爍。
四、實驗原理圖
圖3.2交通燈實驗電路原理圖
圖3.2共有4個按鍵K1、K2、K3、K4,分別連接到單片機P2.0、P2.1、P2.2、P2.3引腳,按鍵後對應引腳為低電平,通過4個二極體D17、D18、D19、D20連接到P3.2(外部中斷0),這是二極體構成的相與電路,即任意按一個鍵能在P3.2上產生一個低電平或下降,作為中斷觸發信號。
五、軟體設計思想
1、定時思想。
採用定時器T0或T1的方式1定時500ms,每500ms中斷進行計數,計數10次即0.5s,計數20次即1s,對秒計數實現所需要的定時時間。
2、亮燈控制思想。
單片機控制燈引腳與燈對應如下,0點亮。
一共有四種狀態S0、S1、S2、S3,
a、南北通行S0狀態:
南北綠燈、東西紅燈,P0=11110111=0xf7,P1=10011110=0x9e;
南北通行S0
b、過渡狀態S1:
南北黃燈、東西紅燈,P0=11111011=0xfb,P1=10101110=0xae;
過渡狀態S1
c、東西通行狀態S2:
東西綠燈、南北紅燈,P0=11111100=0xfc,P1=11110011=0xf3;
東西通行狀態S2
d、過渡狀態S3:
東西黃燈、南北紅燈,P0=11111101=0xfd,P1=01110101=0x75;
過渡狀態S3
設置一個秒計數單元SEC每秒+1,設置兩個控制值變數a,b。