中斷法相對於查詢法有兩個優點:1.節省能量 2.節省時間
定時器的使用方法:
1.開啟總中斷
2.設定定時器的工作方式
3.設定初值
4.開啟定時中斷
5.開啟定時計數
對於定時器0的初始化:
void timer0(void)
同理可得定時器1 的初始化:
void timer0(void)
在設定工作方式時,需要注意
以下的這個**:
m1 m0 方式 說明
0 0 0 13位定時器
0 1 0 16位定時器
1 0 0 8位定時器
1 1 0 8位定時器
寫完中斷的初始化後,還要寫中斷服務函式:
void timer0_isr() interrupt 1
void timer1_isr() interrupt 3
在此附上用中斷寫的,數碼管顯示的時鐘鬧鐘:
#include
#define segport p3
sbit bit_sel = p2^0;
sbit seg_sel = p2^1;
unsigned
char segdata[16] = ;
unsigned
char coode[8] = ;
unsigned
char outdata[8] = ;
unsigned
char second = 0;
unsigned
char minute = 0;
unsigned
char hour = 0;
unsigned
char j = 0;
void timer0(void)
void timer1(void)
void display(void)
}void main()
void timer0_isr() interrupt 1}}
}outdata[0] = segdata[hour/10];
outdata[1] = segdata[hour%10];
outdata[2] = 0x40;
outdata[3] = segdata[minute/10];
outdata[4] = segdata[minute%10];
outdata[5] = 0x40;
outdata[6] = segdata[second/10];
outdata[7] = segdata[second%10];
}void timer1_isr() interrupt 3
微控制器的定時器
定時器則是由微控制器自身提供的乙個非常穩定的計數器,這個穩定的計數器就是微控制器上連線的晶振部件,晶振經過12分頻之後提供給微控制器的只有1mhz的穩定脈衝 晶振的頻率是非常準確的,所以微控制器的計數脈衝之間的時間間隔也是非常準確的,這個準確的時間間隔是1微秒 12mhz晶振內部的工作頻率 時鐘脈衝...
微控制器定時器雙擊 關於51微控制器定時器的靈活使用
前段時間,做乙個專案,有串列埠收發指令判斷,按鍵型別判斷,長短按之類,power的定時關電,事件的輪詢掃瞄更新和display的定時掃瞄。這些要求就對定時器提出了要求,但是我的51微控制器只有兩個定時器,其中乙個又有debug口的波特率產生之用。於是乎我可以用的定時器就只剩下了乙個。怎麼辦?可能大家...
51微控制器 定時器
定時 計數器的結構和工作原理 定時 計數器的實質是加1計數器 16位 由高8位和低8位兩個暫存器組成。80c51 微控制器定時 計數器的工作是由兩個特殊功能暫存器控制的。tmod是定時 計數器的工 作方式暫存器,確定工作方式和功能,低四位用於t0,高四位用於t1。t con是控制寄 存器,控制t0和...