#include
#include
#define uchar unsigned char 宏定义
uchar a,b;
uchar b=1;
uchar a=0xfe; 变量定义和初始化
void main() 主函数
{
EA=1;IT1=1;ET0=1;中断允许设置
TH0=-5000/256;
TL0=-5000%256; 赋值
TMOD=0x01;
TR0=1; 启动
while(1); 等待中断产生
}
void timer0(void) interrupt 1 using 1 中断函数
{
TH0=-5000/256;
TL0=-5000%256; 重新赋值
b=b+1; 计算时间
if(b==40) 0.5秒时间到
{
b=0; 清0
P1=a; P1口赋值 0XFE 二进制11111110 也就是第一盏亮其他灭
a=_crol_(a,1); 库函数实现循环
P1=a; 把循环后的值重新付给P1口
}
}
以上只是单方向的循环 还缺少延时函数 加在赋值后面
双向循环 可以用左移右移指令
赋值 P1口 A=A<<1 循环左移一位 A=A>>1 循环右移一位
/*单片机,用定时中断实现每隔0.2秒让接在P1口的8个小灯从左往右循环点亮。*/
#include
#include
#define uchar unsigned char
uchar a,b;
uchar b=1;
uchar a=0xfe;
void main()
{
EA=1;IT1=1;ET0=1;
TH0=-5000/256;
TL0=-5000%256;
TMOD=0x01;
TR0=1;
while(1)
}
void timer0(void) interrupt 1 using 1
{
TH0=-5000/256;
TL0=-5000%256;
b=b+1;
if(b==40)
{
b=0;
P1=a;
a=_crol_(a,1);
P1=a;
}
}