急求一份 由P1口控制8个指示灯,并依次轮流闪亮,闪亮频率5次每秒

来源:百度知道 编辑:UC知道 时间:2024/06/01 13:04:34
要源程序!谢谢啊!

用单片机,AT89C2051.
源程序参考:
//********************
#include <reg51.h> // define 8051 registers
#define LED P1 // define I/O functions
void msdelay (unsigned int x)
{
unsigned char j;
while(x--)
{
for(j=0;j<125;j++)
{;}
}

}
void main ()
{ // main program
unsigned char k[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char m;
while(1)
{ //repeat forever

for(m=0;m<8;m++)
{
LED = k[m];
msdelay(200); //延时时间200ms
//msdelay(500);
}
}
}

;程序重新修改如下:
ORG 0000H
MOV C, #0 ;C位清零
MOV A, #OFFH ;ACC置1
LOOP: RLC A ;ACC带C位左循环
MOV P1, A ;点燃P1口指示灯
ACALL YAS ;调用延时程序,指示灯点燃0.024976秒
NOP ;空操作一次,为了补偿延时缺一个机器周期
SJMP ;掉转到LOOP,第二位灯点亮......
YAS: ;延时子程序
MOV R2, #111
L2: MOV R3, #111
L1: DJNZ R3, L1
DJNZ R2, L2 ;延时0.024976秒

MOV R4,#7
DJN