汇编语言四级程序

设计一个接口电路,并在这一电路的基础上设计一段程序,完成下列功能 1 该电路中包括一个8位的LED数码管 2 在程序的控制下将20130614这8个数显示在LED数码管上


TLOW    EQU  00H

THIGH   EQU  0EEH

COUN0   EQU  200     ;5ms * 200 = 1S


COUN_WEI   EQU 3CH ;显示位

;   EQU 3BH     ;

DISP_BUF EQU 50H  ;8字节缓存

VALUE EQU 30H ;8字节

VALUE0 EQU 30H

VALUE1 EQU 31H

VALUE2 EQU 32H

VALUE3 EQU 33H

VALUE4 EQU 34H

VALUE5 EQU 35H

VALUE6 EQU 36H

VALUE7 EQU 37H


LED_WEI EQU P3 ;数码管位选

LED_DAT EQU P0 ;数码管数据


;EQU 20H.0 ;20H.0 为 标记

;EQU 20H.1 ;20H.1为 标记

;EQU 20H.2 ;20H.2 为 标记

;EQU 20H.3 ;20H.3为 标记

;EQU 20H.4 ;20H.4为 标记

;EQU 20H.5 ;20H.5为 标记

;EQU 20H.6 ;20H.6 为 标记



C__   EQU   22        ;"-";22

C_DIE EQU   24        ;"熄灭";24

DELAY_VAL EQU 50


;--------------------------------------------------

ORG  0000H

JMP  MAIN

ORG  0BH

JMP  T0_INT

;--------------------------------------------------

MAIN:

MOV  SP,#60H


CALL  INIT_TIMER


SETB  TR0

MOV VALUE0,#2

MOV VALUE1,#0

MOV VALUE2,#1

MOV VALUE3,#3

MOV VALUE4,#0

MOV VALUE5,#6

MOV VALUE6,#1

MOV VALUE7,#4

CALL LED_SHOW

LOOP1:

JMP LOOP1


;;-------------------------  

;;显示子程序

;;使用寄存器组:第2组寄存器

;;出口:

;;入口:

;;--------------------------

DISPLAY:

PUSH ACC

PUSH  PSW

CLR  PSW.3 ;RS1、RS0(PSW.4、PSW.3): 1 0

SETB  PSW.4

MOV A,COUN_WEI

CJMP0:

CJNE A,#0,CJMP1

JMP DISP_WEI1

CJMP1:

CJNE A,#1,CJMP2

JMP DISP_WEI2

CJMP2:

CJNE A,#2,CJMP3

JMP DISP_WEI3

CJMP3:

CJNE A,#3,CJMP4

JMP DISP_WEI4

CJMP4:

CJNE A,#4,CJMP5

JMP DISP_WEI5

CJMP5:

CJNE A,#5,CJMP6

JMP DISP_WEI6

CJMP6:

CJNE A,#6,CJMP7

JMP DISP_WEI7

CJMP7:

CJNE A,#7,DISP_WEI0

JMP DISP_WEI8

DISP_WEI0:

MOV COUN_WEI,#0

DISP_WEI1:

MOV LED_WEI,#01H ;P3

JMP DISP_WEI_END

DISP_WEI2:

MOV LED_WEI,#02H ;P3

JMP DISP_WEI_END

DISP_WEI3:

MOV LED_WEI,#04H ;P3

JMP DISP_WEI_END

DISP_WEI4:

MOV LED_WEI,#08H ;P3

JMP DISP_WEI_END

DISP_WEI5:

MOV LED_WEI,#10H ;P3

JMP DISP_WEI_END

DISP_WEI6:

MOV LED_WEI,#20H ;P3

JMP DISP_WEI_END

DISP_WEI7:

MOV LED_WEI,#40H ;P3

JMP DISP_WEI_END

DISP_WEI8:

MOV LED_WEI,#80H ;P3

; JMP DISP_WEI_END

DISP_WEI_END:

MOV R0,#DISP_BUF

MOV A,COUN_WEI

ADD A,R0

MOV R0,A

MOV A,@R0

MOV DPTR,#LED_TAB

MOVC A,@A+DPTR

MOV LED_DAT,A

INC COUN_WEI

POP PSW

POP ACC

RET

LED_TAB:

   DB  0C0H        ;"0" 

   DB  0F9H        ;"1"

   DB  0A4H        ;"2"

   DB  0B0H        ;"3"

   DB   99H        ;"4"

   DB   92H        ;"5"

   DB   82H        ;"6"

   DB  0F8H        ;"7"

   DB   80H        ;"8"

   DB   90H        ;"9"

   DB   88H        ;"A"

   DB   83H        ;"B"

   DB  0C6H        ;"C"

   DB  0A1H        ;"D"

   DB   86H        ;"E"

   DB   8EH        ;"F";15

   DB   89H        ;"H";16

   DB  0C7H        ;"L";17

   DB  0C8H        ;"n";18;11001000

   DB  0C1H        ;"u";19

   DB   8CH        ;"P";20

   DB  0A3H        ;"o";21

   DB  0BFH        ;"-";22

   DB  0AFH   ;"r";23

   DB  0FFH        ;"熄灭";24

   DB  091H   ;"y"   ;25

   DB  0FFH        ;"自定义"


LED_SHOW:       ;在LED显示输入的值

MOV 50H,30H; ;23

MOV 51H,31H;

MOV 52H,32H;

MOV 53H,33H;

MOV 54H,34H;

MOV 55H,35H;

MOV 56H,36H;

MOV 57H,37H;

RET


;;-------------------------

INIT_TIMER:                ;初始化定时器

MOV  TMOD,#01H    ;设置定时器0 工作模式为模式1

MOV  IE,  #82H    ;启用定时器0 中断产生

MOV  TL0,#TLOW

MOV  TH0,#THIGH

RET

;;-------------------------

T0_INT:

PUSH  ACC

PUSH  PSW

MOV  TL0,#TLOW

MOV  TH0,#THIGH

CALL DISPLAY



T0_INT_EXIT:

POP PSW

    POP  ACC

RETI


;;-------------------------

END

温馨提示:答案为网友推荐,仅供参考
相似回答