展开全部
程序如下,P0口改为P1、P2或P3口可以省略电路图中的上拉电阻。
注意:无论选择哪组I/O,每个LED都要串联一个220Ω或470Ω的电62616964757a686964616fe78988e69d8331333332393337阻。
#include "reg51.h"
#define uint unsigned int
#define uchar unsigned char
uchar code tab[]={0xfa,0xf5,0xaf,0x5f,0xaa,0x55,0x00,0xff};//分别为1和3亮、2和4亮、5和7亮、6和8亮、奇数位亮、偶数位亮、全亮、全灭
uchar t,num;
void InitUART (void)
{
TMOD=0x01; //定时器0 工作方式1即16位定时
TH0=0x3c; //装入初值,定时50ms
TL0=0xb0;
TR0=1;
ET0=1;
EA = 1; //打开总中断
}
main()
{
InitUART ();
P0=tab[num]; //先让等处于第一种状态
while(1)
{;}
}
Timer0() interrupt 1
{
TH0=0x3c; //手动重装初值,定时50ms
TL0=0xb0;
t++;
if(t==20)
{
t=0; //够20次,即计数时间为20*50ms=1s。计时次数清零,准备下一秒的计时
num++; //num指向下一种状态
if(num==8) num=0;
P0=tab[num]; //则切换至相应的状态
}
}
纯手打,望采纳···