⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 串并转换.asm

📁 用汇编写的串并转换程序
💻 ASM
字号:
;***********************************************************
;*****  This demonstration is a program                *****
;*****   for Electronic Clock with adjuctment function *****
;***********************************************************



       ORG  0000h
        LJMP INIT

        ORG 0030H
    INIT:CLR  EA
         MOV A,#10H
         MOV 79H,A
         MOV 7AH,A
         MOV 7BH,A
         MOV 7CH,A
         MOV 7DH,A
         MOV 7EH,A
         MOV  30H,#00H
   ;********************************************************
   ;*****   This following is main program module        ***
   ;*****   there are three tasks in it. one is Key_scan ***
   ;*****   one is display. one is Port 1 initialization ***
   ;********************************************************
          MAIN:LCALL  SP8_SUB
               LCALL  HALFHEX
               INC 30H
               MOV  R7,#0FFH
          LOOP88:LCALL DISP_SUB
               DJNZ R7,LOOP88
               AJMP   MAIN
     ;****************************************************
     ;*****   SERIEAL DATA TO 74LS164                *****
     ;****************************************************

     SP8_SUB:SETB P1.1
             MOV  A,30H
             MOV R7,#08H
      LOOP77:RRC A
             MOV P1.0, C
             SETB P1.1
             CLR P1.1
             NOP
             NOP
             SETB P1.1
             DJNZ R7,LOOP77
             RET
             
       HALFHEX:MOV  A,30H
               ANL A,#0FH
               MOV 7DH,A
               MOV A,30H
               ANL A,#0F0H
               SWAP A
               MOV 7EH,A
               RET
      ;***********************************************
      ;***   This following is display subroutine.  ***
      ;***   #0FF21H is LDD digital control address ***
      ;***   #0FF22H is LDD 7-Segment address       ***
      ;***********************************************
      DISP_SUB:MOV  R1,   #7EH        ; First LDD BCD value address
               MOV  R2,   #00100000B  ; Frist LDD latch control bit
	           MOV  R3,   #00H
         DISP1:MOV  DPTR,  #0FFddH
	           MOV  A,    R2
	           MOVX  @DPTR,   A     ; Control latch implement
	           MOV   DPTR,   #4000H  ; 7_segment_code table first address
	           MOV  A,  @R1
	           MOVC  A, @A+DPTR
               MOV   DPTR,  #0FFdcH
               MOVX  @DPTR,  A
         DISP2:DJNZ  R3,  DISP2   ; Delay  512US
               DEC  R1            ; Second LDD BCD bit is 7DH
               CLR  C
               MOV  A,  R2
               RRC  A             ;Move  '1'  to next latch control bit
               MOV  R2,  A
               JNZ  DISP1         ; R2 isnot moved to "00000000" disp1
               RET
      ;***************************************************************
      ;*****   This following is a table for BCD to 7_segment_code  **
      ;*****   You have to notice the starting address is 1000h     **
      ;***************************************************************
                   ORG 4000H
DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H  ; 0123456789
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH ;ABCDEF
                    END
        DP   G F  E D C B A
        1    0 0  0 1 1 1 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -