❶ 51單片機程序定時中斷
先讓它一個一個亮起來到全亮,每一步的時間間隔為500mS;
全亮持續三秒後開始一起閃,間隔為500mS,閃爍5秒後重新再來;
❷ 單片機定時中斷
跟你理清一下思路,你的問題就解決了。首先,你的程序很簡單,就是讓發光二極體1秒亮1秒滅。因此,你前提是要定時1秒,但51單片機無法定時1秒,因此,你的程序就要定時50毫秒,每到了50毫秒,你就讓num自加1,當num加到20時,換句話說,已經定時50毫秒20次了,那就是1秒咯,所以此有led1=~led1; //讓發光管狀態取反,達到程序目的。另外,定時50毫秒你要給TH0和TL0賦給初值,因此 TH0=(65536-45872)/256; //重新裝載初值TL0=(65536-45872)%256;才會有這兩句,但定時50毫秒後,你的初值也會隨之消失,因此才會在void T0_time()這個函數中重新賦初值。的確像你所說的初值是裝滿了開始執行中斷,其實從你TMOD=0x01; //設置定時器0位工作模式1(M1,M0位0,1)這句已經開始定時了,而賦初值是為了准確的定時50毫秒罷了。明白了沒有?
(其實你可以這樣理解,定時計數器就好比一個空的瓶子,當你給TMOD=0x01時,水就開始一滴一滴的往瓶子你滴,當瓶子滿了的時候,中斷就發生了。假如從一個空的瓶子滴到滿的瓶子定時是80毫秒的話,可你只需要定時50毫秒就夠了,所以就要一開始往瓶子里倒水,使滴水的起點不是空瓶子,這就是賦初值的作用。當瓶子滿了後,瓶子就會自動清空,重新從零開始。而第二次你再想定時50毫秒,你就必須從新再往瓶子里倒水,這就是第二次賦初值的作用)
❸ 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;
}
}
(3)單片機定時中斷擴展閱讀
定時器有兩種工作模式,分別為計數模式和定時模式。對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寬的脈沖信號,驅動步進電機。定時和計數的最終功能都是通過計數實現,若計數的事件源是周期固定的脈沖則可實現定時功能,否則只能實現計數功能。因此可以將定時和計數功能全由一個部件實現。
❹ 單片機定時中斷實驗
是用匯編嗎?
(假設系統晶振是12MHz)
ORG 0000H
LJMP START
ORG 000BH
LJMP TIMER0
ORG 0300H
START:
MOV R0,#FEH
MOV R1,#32H ;50次
MOV TMOD,#01H
SETB ET0
SETB EA
MOV TH0,#0B1H ;定時20ms
MOV TL0,#0E0H
SETB TR0
HERE:
SJMP HERE
TIMER0:
CLR TR0
MOV TH0,#0B1H
MOV TL0,#0E0H
DJNZ R1,GOON
MOV A,R0
MOV P1,A
RL A
MOV R0,A
MOV R1,#32H
GOON:
SETB TR0
RETI
❺ C51單片機定時器和中斷有什麼聯系
定時器是經過多少個周期之後執行什麼程序
中斷是有中斷請求時中斷正在運行的程序,沒有中斷請求時不影響
當有中斷或者中斷優先順序高於正在運行的程序時就產生中斷進入中斷程序
❻ 單片機中斷定時器中斷方式2
方式2,當低位溢出時候,會自動將高位的值裝入低位,如此循環。
❼ 單片機定時器中斷功能和定時器定時功能有什麼區別,什麼情況需要中斷,什麼時候不需要呢,講好必採納
定時器的定時,就像你設置的鬧鍾,中斷,就像你設置的鬧鍾到點自動發出聲音。如果只是定時,不產生中斷,就需要你編寫的主程序經常去查看定時的時間到了沒,而且就算查看到定時時間到了,你也不知道是什麼時候到的,如果有中斷,則會自動跳到中斷函數執行你安排好的代碼(鬧鍾發出聲音就是安排好的,也可以是震動)。
❽ 51單片機中斷定時
30秒這個時間比較長,不知道你的晶振選用的什麼頻率。一般來說16位方式也很難做到30秒,所以需要藉助一個全局的counter變數來輔助提升定時器位數。
❾ 單片機定時/計數器和中斷到底有什麼用
中斷是處理器響應事件的方法,例如,串口中斷,定時器中斷
中斷的特點是,當指定的事件發生時,如串口有數據進入,定時器溢出等,處理器將保存當前程序指令寄存器的值,轉而運行中斷服務子程序。
顧名思義,定時/計數器的作用就是定時或者計數,某些應用中需要用到定時或者計數功能,例如精確延時,顯示屏每100ms進行一次刷新等
定時器計數器的中斷是可以開關的,一般他們有兩個寄存器,一個保存初始值,一個保存目標值,每一個定時周期,初始值會加1,當初始值超過目標值時為溢出,此時可以觸發定時器中斷,然後就可以自動進入中斷服務子程序了。