定时器T1每0.05秒中断一次,单片机P1口接8个发光二极管LED0~LED7,编写程序,使发光二极管有规律地循环点

定时器T1每0.05秒中断一次,单片机P1口接8个发光二极管LED0~LED7,编写程序,使发光二极管有规律地循环点亮。例如:开机后,第一秒钟LED0、LED2亮,第二秒钟LED1、LED3亮,第三秒钟LED4、LED6亮,第四秒钟LED5、LED7亮,第五秒钟LED0、LED2、LED4、LED6亮,第六秒钟LED1、LED3、LED5、LED7亮,第七秒钟全亮,第八秒钟全灭;再从头开始一直循环下去。

#include<reg51.h>

unsigned char t,n,a[8]={0xfa,0xf5,0xaf,0x5f,0xaa,0x55,0x00,0xff};

void t0_init()
{
EA=1;
ET0=1;
TMOD=0X01;
TH0=0X3C;
TL0=0XB0;
TR0=1;
}

void t0_col() interrupt 1
{
TH0=0X3C;
TL0=0XB0;
if(++t>=20)
{
t=0;
if(++n>7)n=0;
P1=a[n];
}
}

void main()
{
t0_init();
while(1)
{
;
}
}

差不多就这样,你试试吧!追问

谢谢!我已经做了!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-13
不会吧?这么简单的还用提问?书上都有的啊追问

这个自己已经解决了!

第2个回答  2011-06-13
可以啦
加我!追问

谢啦!我自己搞定了!

追答

heng hao!

第3个回答  2011-06-16
ORG 0000H
LJMP MAIN
ORG 0050H
MAIN:MOV 20H,#0
MOV A,20H
MOV R2,#8
XS:MOV DPTR,#1000H
MOVC A,@A+DPTR
MOV P1,A
LOP0:MOV R1,#40
LOP1:MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
JNB TF0,$
CLR TF0
DJNZ R1,LOP1
INC 20H
MOV A,20H
DJNZ R2,XS
LJMP MAIN
ORG 1000H
DB 0FAH,0F5H,0AFH,5FH,0AAH,55H,00H,0FFH
END
相似回答