新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 定時(shí)器計(jì)數(shù)LED顯示的簡(jiǎn)單程序

定時(shí)器計(jì)數(shù)LED顯示的簡(jiǎn)單程序

作者: 時(shí)間:2012-11-10 來(lái)源:網(wǎng)絡(luò) 收藏

/*
注:該程序主要是如何運(yùn)用定時(shí)器進(jìn)行計(jì)數(shù)
體現(xiàn)的子函數(shù),是一個(gè)比較淺顯的程序
*/

#includereg52.h> //頭文件
#define uchar unsigned char //宏定義
#define uint unsigned int
uchar count; //定義全局變量
void display_led() //led顯示子函數(shù)
{
if(count==20) //每隔1S發(fā)生變化(晶振為:12MHZ)
{
count=0; //計(jì)數(shù)清零,以便下次計(jì)數(shù)
P2=~P2; //P2的值取反
P2=P21; //P2的值左移
P2=~P2;
if(P2==0xff) //如果最后一個(gè)LED亮后,
P2=0xfe; //則第一個(gè)LED亮
}
}
void init() //初始化子函數(shù)
{
EA=1; //打開總中斷
ET0=1; //打開定時(shí)器中斷
TR0=1; //啟動(dòng)定時(shí)器
TMOD=0x01; //T0工作方式1,16位計(jì)數(shù)
TH0=(65536-50000)/256;//設(shè)置定時(shí)器的初始值
TL0=(65536-50000)%256;
P2=0xfe; //給P2口賦初始值
while(1)
{
display_led(); //調(diào)用子函數(shù)
}
}
void main() //主函數(shù)
{
init(); //調(diào)用初始化子函數(shù)
}
void delay() interrupt 1 //定時(shí)中斷子函數(shù)
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++; //計(jì)數(shù)變量自加1
}



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉