单片机用汇编语言8灯的 先全闪烁2次,然后在依次从两边向里循环程序 谁会

如题所述

第1个回答  2014-04-11
表示不懂汇编
C程序如下
#include <REGX52.H>
unsigned char code table[]={
0x7e,0xbd,0xdb,0xe7,};
void delay(unsigned char xms)
{
unsigned char i=200;
while(--xms)while(--i);
}
void main()
{
unsigned char i;
P2=0x00;
delay(200);
P2=0xff;
delay(200);
P2=0x00;
delay(200);
P2=0xff;
delay(200);
while(1)
{
for(i=0;i<4;i++)
{
P2=table[i];
delay(200);
}
}
}追问

先谢谢啦 但是要求用汇编

本回答被网友采纳
第2个回答  2014-04-12
ORG 0000h

mov p1 ,#00000000b ;点亮P1口所有的灯 。0为低点位 点亮灯 ,共8个口
lcall ys1s ;调用延时程序让上的灯点亮一定时间
mov p1,#11111111b ;关闭P1口全部的灯,1为高点位 关闭 灯
lcall ys1s ;调用延时程序让上的灯熄灭一定时间
mov p1 ,#00000000b ;和上面的一样 共全亮全灭2次
lcall ys1s
mov p1,#11111111b
lcall ys1s

xf:
mov p1 ,#01111110b ;让P1.0和P1.7的两端为0 ,点亮两端的灯
lcall ys1s ;将上面状态保持一定时间
mov p1, #00111100b ;让P1.0 P1.1 P1.6P P1.7 两端的4个灯为0 点亮
lcall ys1s ;将上面状态保持一定时间
mov p1 ,#00011000b ;以下就不说啦 ,这些花样显示 自己可以随便改,或添加
lcall ys1s
mov p1, #00000000b
lcall ys1s
ljmp xf ;让程序返回到 XF 处循环无限执行

ys1s: mov r1,#0ffh ;延时程序, 延时时间为R1乘R2乘R3的内容,根据需要自己调节
ys1s1: mov r2,#0ffh
ys1s2: mov r3,#0ffh
ys1s3: djnz r3,$
djnz r2,ys1s2
djnz r1,ys1s1

END

好几年没有写汇编了,自己在调试一下把。
第3个回答  2014-04-11
这个很简单啊。追问

你会么

追答

就是在每条全亮跟循环的下面加一个调用1秒延时。

相似回答