定时器流水灯
#include <REGX52.H>
#include "Timer0.h"
#include "Key.h"
#include <INTRINS.H>
unsigned char KeyNum,LEDMode;
void main()
{
P2=0xFE;
Timer0Init();
while(1)
{
KeyNum=Key();
if(KeyNum)
{
if(KeyNum==1)
{
LEDMode++;
if(LEDMode>=2)
{
LEDMode=0;
}
}
}
}
}
void Timer0_Routine() interrupt 1
{
static unsigned int T0Count;//¾²Ì¬¾Ö²¿±äÁ¿ ±£Ö¤Í˳öº¯ÊýʱÊý¾Ý²»¶ªÊ§È¥
TL0 = 0x18;
TH0 = 0xFC;
T0Count++;
if(T0Count >= 500)
{
T0Count=0;
if(LEDMode==0)
P2=_crol_(P2,1);
if(LEDMode==1)
P2=_cror_(P2,1);
}
}
定时器时钟
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "Timer0.h"
unsigned char Sec;
unsigned char Min;
unsigned char H;
void main()
{
LCD_Init();
Timer0Init();
LCD_ShowString(1,1,"Clock:");
LCD_ShowString(2,3,":");
LCD_ShowString(2,6,":");
while(1)
{
LCD_ShowNum(2,7,Sec,2);
if(Sec == 60)
{
Sec = 0;
}
LCD_ShowNum(2,4,Min,2);
if(Min == 60)
{
Min = 0;
}
LCD_ShowNum(2,1,H,2);
}
}
void Timer0_Routine() interrupt 1
{
static unsigned int T0Count;//¾²Ì¬¾Ö²¿±äÁ¿ ±£Ö¤Í˳öº¯ÊýʱÊý¾Ý²»¶ªÊ§È¥
TL0 = 0x18;
TH0 = 0xFC;
T0Count++;
if(T0Count >= 1000)
{
T0Count=0;
Sec++;
}
}