新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用定時(shí)器進(jìn)行計(jì)數(shù)的一個簡單例子

用定時(shí)器進(jìn)行計(jì)數(shù)的一個簡單例子

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

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

#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) //如果最后一個LED亮后,
P2=0xfe; //則第一個LED亮
}
}
void init() //初始化子函數(shù)
{
EA=1; //打開總中斷
ET0=1; //打開中斷
TR0=1; //啟動
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)用LED顯示子函數(shù)
}
}
void main() //主函數(shù)
{
init(); //調(diào)用初始化子函數(shù)
}
void delay() interrupt 1 //定時(shí)中斷子函數(shù)
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++; //自加1
}



評論


相關(guān)推薦

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

關(guān)閉