專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

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

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2009年11月15日   【字體:

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

#include<reg52.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=P2<<1; //P2的值左移
  P2=~P2;
  if(P2==0xff) //如果最后一個(gè)LED亮后,
  P2=0xfe;  //則第一個(gè)LED亮
 } 
}
void init()   //初始化子函數(shù)  
{
 EA=1; //打開總中斷
 ET0=1; //打開定時(shí)器中斷
 TR0=1;  //啟動定時(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)用LED顯示子函數(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
}
 

關(guān)閉窗口

相關(guān)文章