哪位程序大神帮我把这段汇编语言改为C语言程序,谢谢了。

程序开始
ORG 000H
AJMP 主程序
ORG 0050H
主程序:
MOV R1,#00H
SB1键控制程序:
MOV P1,#0FH
JB P3.3,SB2键控制程序
MOV R0,#0CH
ACALL 闪灯程序
SB2键控制程序:
MOV P1,#0F0H
JB P3.2,SB3键控制程序
MOV R0,#09H
ACALL 闪灯程序
SB3键控制程序:
MOV P1,#0F0H
JB P3.1,SB4键控制程序
MOV R0,#0FH
ACALL 闪灯程序
SB4键控制程序:
MOV P1,#0F0H
JB P3.0,查询完毕
MOV R0,#03H
ACALL 闪灯程序
查询完毕:
AJMP 主程序
RET
闪灯程序:
MOV R4,#10H
闪烁循环程序:
MOV P1,R0
ACALL 延时子程序
MOV P1,R1
ACALL 延时子程序
DJNZ R4 闪烁循环程序
RET
延时子程序:
MOV A,#0FFH
延时子程序第一段循环:
DEC A
JNZ 延时子程序第一段循环
DJNZ R3, 延时子程序第一段循环
RET
END
程序结束

#include "reg52.h"
sbit KEY_SB1 = P3 ^ 3;
sbit KEY_SB2 = P3 ^ 2;
sbit KEY_SB3 = P3 ^ 1;
sbit KEY_SB4 = P3 ^ 0;
unsigned char gucLit;
unsigned char gucBlank;

void LED_Flash(void);
void Delay(void);
void main()
{
   gucBlank = 0;
   P1 = 0x0F; // 怀疑这里你写错了
   if (KEY_SB1 == 0)
   {
      gucLit = 0x0C;
      LED_Flash();
   }
   P1 = 0xF0;
   if (KEY_SB2 == 0)
   {
      gucLit = 0x09;
      LED_Flash();
   }
   P1 = 0xF0;
   if (KEY_SB3 == 0)
   {
      gucLit = 0x0F;
      LED_Flash();
   }
   P1 = 0xF0;
   if (KEY_SB4 == 0)
   {
      gucLit = 0x03;
      LED_Flash();
   }
}
void LED_Flash()
{
   unsigned char i = 0x10;
   
   for (i = 0x10; i; i--)
   {
      P1 = gucLit;
      Delay();
      P1 = gucBlank;
      Delay();
   }
}
void Delay()
{
   unsigned char i, j;
   
   for (i = 255; i; i--)
      for (j = 255; j; j--);
}

追问

恩恩 我检查下。谢谢了 喔

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答