//## 定時器控制 led閃爍 (500ms) ##//
/*** 關於定時器0方式1初值的設定 ***/預備知識:
首先我們要知道 51微控制器普遍是1個機器週期 = 12 個時鐘週期(晶振週期),頻率與週期互為倒數關係。
示例:
假定晶振頻率為12mhz
時鐘週期:1/12(mhz)==1/12(μs)。
機器週期:12 x 1/12(μs)=1(μs)。
定時1ms,即1000(μs),要經過x個機器週期得到1000(μs),求得x=1000(μs)/1(μs)=1000個機器週期。16位定時器的溢位值是65536(因65535再加1才是溢位)。
所以我們可以先給th0和tl0乙個初始值,每過乙個機器週期+1,經過1000個機器週期後剛好達到65536,也就是溢位,溢位後的事件處理通常有2種方式:
①通過軟體查詢tf0位是否置1,注意要將tf0軟體清零。
②進入定時器中斷服務函式,中斷號注意別寫錯,本文用的就是進入定時器 中斷服務函式的方式。
th0=(65536-x)/256;
tl0=(65536-x)%256;
#include
"reg51.h"
typedef
unsigned
int u16;
typedef
unsigned
char u8;
#define led p1
#define led_on() led = 0xfe
#define led_off() led = 0xff
static u8 ledstate =0;
//led狀態標誌,0表示亮,1表示滅
static u16 ledtimecount =0;
//led計數器
void
ledprocess
(void
)else
}void
ledstatechange
(void)}
void
timer0init
(void
)void
main()
}void
timer0isr
(void
)interrupt 1
51微控制器 定時器
定時 計數器的結構和工作原理 定時 計數器的實質是加1計數器 16位 由高8位和低8位兩個暫存器組成。80c51 微控制器定時 計數器的工作是由兩個特殊功能暫存器控制的。tmod是定時 計數器的工 作方式暫存器,確定工作方式和功能,低四位用於t0,高四位用於t1。t con是控制寄 存器,控制t0和...
51微控制器 定時器
標準的51微控制器內部有t0和t1兩個定時器。定時器的計數值儲存在暫存器中。th0 tl0用於t0,th1 tl1用於t1.定時器儲存暫存器 名稱描述 sfr位址 復位值th0 t0高位元組 0x8c 0x00 tl0t0低位元組 0x8a 0x00 th1t1高位元組 0x8d 0x00 tl1t...
51微控制器定時器 彙編
定時器控制流水燈的速度,但流水燈到邊緣的時候,自動調整方向,先反方向繼續流動 使用的是 定時器0 org 0000h ljmp mian org 000bh ljmp t0 break org 0200h init mov tmod,01h 定時器0為方式1 定時器0計時100us mov tl0,...