对,没错,还是我!单片机proteus仿真,有接线图和汇编语言,求把这个汇编语言改成c语言!好的可追加!

内容要求:P1.0-P1.3分别连接左移、右移、双向流水控制键,P2口连接用于流水显示的八个放光管。汇编语言:;SUDU流水速度(1秒、0.5秒、0.2秒、0.1秒)(对... 内容要求:P1.0-P1.3分别连接左移、右移、双向流水控制键,P2口连接用于流水显示的八个放光管。汇编语言:;SUDU流水速度(1秒、0.5秒、0.2秒、0.1秒)(对应的值为10、5、2、1) SUDU EQU 3 MOV P2,#11101111B ;设置流水灯初始点亮状态 MOV 21H,#11111011B START: MOV C,P1.0 ANL C,P1.1 ANL C,P1.2 JC NEXT MOV 21H,P1NEXT: JB 8H,NEXT1 ACALL DXZY ;P1.0=0,单向左移方式NEXT1: JB 9H,NEXT2 ACALL DXYY ;P1.1=0,单向右移方式NEXT2: JB 0AH,NEXT3 ACALL SXZYY ;P1.2=0,双向左右移方式NEXT3: JMP STARTSXZYY: MOV C,P2.7 ANL C,P2.0 ;判断是否换方向,C=0 换方向 JNC HFXZUOYI: JB 0H,YOUYI ;按原方向继续移位 MOV A,P2 RL A JMP CLYOUYI: MOV A,P2 RR A JMP CLHFX: ;否换方向,P2.7=0,改方向为左移,P2.0=0,改方向为右移 JB P2.7, GFXZY SETB 0H ;0H为方向标志位,(0H)为0向左移,为1右移 JMP YOUYIGFXZY: CLR 0H JMP ZUOYICL: MOV P2,A ACALL delay RETdelay: MOV R2,#SUDUL1: MOV R3,#200L2: MOV R4,#250L3: DJNZ R4,L3 DJNZ R3,L2 DJNZ R2,L1 retDXZY: MOV A,P2 RL A MOV P2,A ACALL DELAY RET DXYY: MOV A,P2 RR A MOV P2,A ACALL DELAY RET END 展开
 我来答
zhxiufan
2016-06-30 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38385
国家科技进步奖

向TA提问 私信TA
展开全部
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit key_l=P1^0;
sbit key_r=P1^1;
sbit key_d=P1^2;
sbit p27=P2^7;
sbit p20=P2^0;
bit flag;
uchar sudu=3;
void delay(uchar sd)
{
int i;
while(sd--)for(i=0;i<12000;i++);
}
void dxzy(void)
{
while(P1&0x07 == 0)
{
P2=_crol_(P2,1);
delay(sudu);
}
}
void dxyy(void)
{
while(P1&0x07 == 0)
{
P2=_cror_(P2,1);
delay(sudu);
}
}
void sxzyy(void)
{
while(P1&0x07 == 0)
{
if(p27 & p20)
{
if(p27)flag=0;
else flag=1;
}
if(flag)P2=_cror_(P2,1);
else P2=_crol_(P2,1);
delay(sudu);
}
}
main()
{
P2=0xef;
while(1)
{
if(key_l==0)
{
while(key_l==0);
dxzy();
}
if(key_r==0)
{
while(key_r==0);
dxyy();
}
if(key_d==0)
{
while(key_d==0);
sxzyy();
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式