標籤:使用 strong ar div 工作 時間 sp ad on
============定時器使用方法——非中斷,TF值軟體重設法======== 第一:設定特殊功能寄存器TMOD,配置好工作模式。 第二:設定計數寄存器TH0和TL0的初值。 第三:設定TCON,通過TR0置1來讓定時器開始計數。 第四:判斷TCON寄存器的TF0位,監測定時器溢出情況。
執行個體:
//LED由三極體及73HC138控制
//用定時器0實現亮與滅之間的1秒時
# include <reg52.h>
sbit led2 = P0^0;
sbit addr0 = P1^0;
sbit addr1 = P1^1;
sbit addr2 = P1^2;
sbit addr3 = P1^3;
sbit enled1 = P1^4;
int main()
{
unsigned char time0 = 0;
addr0 = 0, addr1= 1, addr2 = 1,addr3 = 1, enled1 = 0; //38解碼器控制led2時的I/O狀態(原理圖)
led2 = 0;//先點亮LED2
TR0 = 1;//啟動定時器0
TMOD = 0x01;//定時器0、工作方式1
TH0 = 0xB8;TL0 = 0x00;//已20ms定時時,裝入的初值
TF0 = 0;//單片機上電後,TF0/1預設為0,因此此步可省略。
while(1)//主程式大迴圈
{
if(TF0 == 1)//判斷TF0是否為1(溢出),若溢出則執行if內語句
{
TF0 = 0;//TF0軟體重設
TH0 = 0xB8;TL0 = 0x00;//給定時器0儲存寄存器裝入計數值為20ms時的初值(初值=65536-計數值)
time0++;//TF0每溢出一次(20ms),變數time0加1,
if(time0 >= 50)//當time0從0變50時,則1秒時間已到
{
time0 = 0;//time0清零,重新計數
led2 = ~led2;//led2取反,實現亮滅之間1秒變化
}
}
}
return 0;
}
奶爸業餘單片機學習之:定時器使用方法——非中斷,TF值軟體重設法