p1口转弯灯实验程序,情人帮忙把汇编语言转位C语言

来源:百度知道 编辑:UC知道 时间:2024/06/21 01:12:17
ORG 0060H
MOV P1,#OFFH ;初始化
PX03: MOV A,P1
MOV B,A
ANL A,#03H
CJNE A,#01H,PX01 ;满足只是P1.0为高条件吗?
JB 00H,PX04 ;闪烁标志位
SETB P1.4
SETB P1.5 ;关左灯
CLR P1.6
CLR P1.7 ;开右灯
LCALL DELY ;延时
SETB 00H ;置标志位
LJMP PX03 ;继续查状态
PX04: SETB P1.4
SETB P1.5
SETB P1.6
SETB P1.7 ;关灯
LCALL DELY ;延时
CLR 00H ;清标志位
LJMP PX03 ;继续查状态
PX01: CJNE A,#02H,PX02 ;满足只是P1.1为高条件吗?
JB 01H,PX05 ;判标志位
CLR P1.4
CLR P1.5 ;开左灯
SETB P1.6
SETB P1.7 ;关右灯
LCALL DELY ;延时
SETB 01H ;置标志位
LJMP PX03 ;继续查状态
PX05: SETB P1.4
SETB P1.5
SETB P1.6
SETB P1.7 ;关灯
LCALL DELY ;延时
CLR 01H ;清标志位
LJMP PX03 ;继续查状态
PX02: SETB P1.4
SETB P1.5
SETB P1.6
SETB P1.7 ;关灯
LJMP PX03 ;继续
ORG 0170H
DELY: MOV R4,#0FFH
DELY1: MOV R5,#0FFH
DELY2: DJNZ R5,DELY2 ;延时
DJNZ R4,DELY1
RET
END
谁能帮我把这个汇编语言转位C语言,个别感谢```

#include<REG51.H>
sbit PB4=P1^4;
sbit PB5=P1^5;
sbit PB6=P1^6;
sbit PB7=P1^7;
bit F_00H;
bit F_01H;
void delay(void);

void main(void)
{
P1=0XFF;//初始化
while(1)
{//PX03
if(P1&0X03!=0X01)//满足只是P1.0为高条件吗?
{//PX01
if(P1&0X03!=0X02)//满足只是P1.1为高条件吗?
{//PX02
PB4=1;
PB5=1;
PB6=1;
PB7=1;
DELY();
F_01H=0;
}

}
else
{
if(F_01H==1)//判标志位
{//PX05
PB4=1;
PB5=1;
PB6=1;
PB7=1;
DELY();
F_01H=0;
}
else
{
PB4=0;
PB5=0;
PB6=1;
PB7=1;
DELY();
F_01H=1;
}

}

else
{
if(F_00H==1)//闪烁标志位
{//PX04
PB4=1;
PB5=1;
PB6=1;
PB7=1;
DELY();
F_00H=0;
}
else
{
PB4=1;
PB5=1;
PB6=0;