蹭分
跑马灯只要循环移位就好了,没啥难度吧,单片机里面最简单的是闪烁灯,第二简单就是跑马灯了。又叫流水灯,你可以找找,很多例子的。
[ 本帖最后由 pauljames 于 2012-10-26 21:06 编辑 ]
2012-10-26 16:04

2012-10-26 21:05
2012-10-26 21:11
2012-10-26 21:14

2012-10-26 21:19
程序代码:#include <reg52.h>
void delay(unsigned int i); //声明延时函数
char LED;
main()
{
unsigned char i;
while (1)
{ LED = 0xfe;
for (i = 0 ;i < 8 ; i++)
{
P2 = LED;
delay(500);
LED = LED << 1; // 左移
LED = LED | 0x01; // 移位后,后面的位为高电平
if (LED == 0x7f) break; //提前退出 FOR 循环
}
for (i = 0 ;i < 8 ; i++)
{
P2 = LED;
delay(500);
LED = LED >> 1; // 右移
LED = LED | 0x80; // 移位后,后面的位为高电平
}
}
}
/*******延时函数*************/
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 255; j > 0; j--);
}

2012-10-26 21:27
2012-10-26 21:28
程序代码: ORG 0000h
AJMP start
ORG 0030h
start:
MOV A,#0ffh
CLR C
MOV R2,#08h ;循环八次。
loop: RLC A ;带进位左移。
MOV P2,A ;输出到P1口。
CALL delay ;延时一段时间
DJNZ R2,loop ;反复循环
MOV R2,#07h ;再往回循环。
loop1: RRC a ;带进位右移
MOV P2,a ;输出到P1口。
CALL delay ;延时一段时间
DJNZ R2,loop1 ;反复循环
JMP start ;重新开始
delay: MOV R3,#20 ;延时子程序
d1: MOV R4,#20
d2: MOV R5,#248
DJNZ R5,$
DJNZ R4,d2
DJNZ R3,d1
RET
END再来一个汇编版的

2012-10-26 21:31
2012-10-26 21:59
?我才学单片机的,不希望给予鼓励,也不比这样说我吧。

2012-10-26 22:05