题目要求通过嵌入汇编语言实现流水灯,我打算在delay函数中嵌入,我不明白我的思路对不对,编译通过了,但流水灯没有亮。
```c
#include
void delay(void)
{
#pragma asm
MOV R6,#23
DELAY2:MOV R7,#191
DELAY1:DJNZ R7,DELAY1
DJNZ R6,DELAY2
RET
#pragma endasm
}
void main()
{
while(1)
{
P1=0xfe;//11111110
delay();
P1=0xfd;//1111 1101
delay();
P1=0xfb;//1011
delay();
P1=0xf7;//0111
delay();
P1=0xef;//1110 1111
delay();
P1=0xdf;//1101 1111
delay();
P1=0xbf;//1011 1111
delay();//0111 1111
P1=0x7f;
delay();
}
}
```
//你的思路没有问题,是你的延时程序太短了,可以百度一下人眼识别灯亮灭的间隔时间,我的建议是间隔时间做到150MS或以上。
//假设单片机晶振12MHZ,运行单周期指令需要1US。
//下面的DELAY程序,修改a<后面的数值可以调灯亮时间的长短。
void delay(void)
{
unsigned int a,b;
for(a = 0;a<150;a++)
for(b = 0;b<1000;b++);
}
不亮的原因:没有加入库文件C51S.lib