51单片机里的汇编程序不懂,请翻译下,最好是能用C语言写出来

来源:百度知道 编辑:UC知道 时间:2024/06/09 02:28:20
NAME DISPLAY
?PR?_DISPLAY?DISPLAY SEGMENT CODE
?CO?_DISPLAY?DISPLAY SEGMENT DATA
EXTRN CODE (_DELAY)
PUBLIC _DISPLAY
RSEG ?CO?_DISPLAY?DISPLAY
?_DISPLAY?BYTE:
DISPBIT: DS 1
DISPNUM: DS 1
RSEG ?PR?_DISPLAY?DISPLAY
_DISPLAY: PUSH ACC
PUSH DPH
PUSH DPL
PUSH PSW
INC DISPNUM
MOV A, DISPNUM
CJNE A, #4D, DISP1
DISP1: JC DISP2
MOV DISPNUM, #00H
MOV DISPBIT, #0FEH
DISP2: MOV A, R1
ADD A, DISPNUM
MOV R0, A

貌似是数码管显示的程序。
你自己参考一下吧
#include <reg51.h>
//LCD的口线
sbit E=P3^5;
sbit RW=P3^6;
sbit RS=P3^7;
//8字LED的连接方法
//P0.7 P.06 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
// H G F E D C B A

unsigned char code ledcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //数码管段码表

void Delay_ms(unsigned int t); //延时 t秒钟 :fosc=12MHz

void main(void)
{
unsigned char led12,led34,led56;
E=0; //取消LCD对LED的影响
RW=0;
RS=1;
led12=0x12;
led34=0x34;
led56=0x56;
while(1)
{
P2=0xff; //关显示
P0=ledcode[(led12>>4)&0x0f];
P2=0xfe;
Delay_ms(1);

P2=0xff;
P0=ledcode[led12&0x0f];
P2=0xfd;
Delay_ms(1);

P2=0xff; //关显示
P0=ledcode[(led34>>4)&0x0f];
P2=0xfb;
Delay_ms(1);

P2=0xff;
P0=ledcode[led34&0x0f];