最基本的代码如下,利用定时器中断去取反led的状态:
#include "reg52.h"
typedef unsigned int u16;
sbit led=P2^0;
void Timer0Initialize()
{
TMOD|=0x01;
TL0=0x18;
TH0=0xfc;
ET0=1; //CPU中断允许控制
EA=1;
TR0=1;
}
void Timer0() interrupt 1
{
static u16 i;
TL0=0x18;
TH0=0xfc;
i++;
if(i==1000)
{
i=0;
led=~led;
}
}
void main()
{
Timer0Initialize();
while(1);
}
但是,很多时候我们需要在两种状态间往返利用定时器切换,这种情况下就没有取反这么简单了,这样怎么去处理?我能不能在某个容器内定义led点阵的两种工作状态,使中断在这两种状态之间切换(就比如往返显示数字0和数字1)