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

📄 proc_101.asm

📁 这是我们做课程设计的时候频率发生器的一些程序模块,希望对大家有用
💻 ASM
字号:
SUM     EQU    30H
ADDR    EQU    32H

ORG     0000H
JMP     START



ORG     0040H
START:  MOV   SP,#50H        
        MOV P0,#0
        
MAIN:   CALL  INIT_51
        JMP   MAIN

INIT_51:     MOV IE,#0
             MOV  IP,#0
             MOV TMOD,#51H
             MOV TL1,#0
             MOV TH1,#0            
             MOV    TL0,#LOW(65536-9997)
             MOV    TH0,#HIGH(65536-9997)
             SETB TR1
             SETB TR0
             JNB  TF0,$         
             CLR TR1
             CLR TR0         
             CALL ASKTOBCD
             CLR P0.5
             SETB P0.4
             SETB P1.0
             CLR P1.1
             CALL DISP
             CALL DELAY
        RET

DELAY:      MOV   R4,#10
        SETB   TR0
   L3:  MOV   TL0,#LOW(65536-50000)
        MOV   TH0,#HIGH(65536-50000)
        JNB   TF0,$
        CLR   TF0
        DJNZ   R4,L3
        RET


READ:     CALL   ASKTOBCD
          SETB   P0.4
          CALL   DISP
          CLR    P1.1
          RET




ASKTOBCD:   MOV   R4,TH1
            MOV   R5,TL1
            CALL  CLR_SUM
            MOV   A,R4
            SWAP  A
            MOV   DPTR,#TAB1
            CALL  BCDAD
            MOV   A,R4
            MOV   DPTR,#TAB2
            CALL  BCDAD
            MOV   A,R5
            SWAP  A
            MOV   DPTR,#TAB3
            CALL  BCDAD
            MOV   A,R5
            MOV   DPTR,#TAB4
            CALL  BCDAD
            RET

BCDAD:      ANL   A,#0FH
            CALL  READ_TAB
            CALL  BCD_ADD
            RET

CLR_SUM:    MOV   R0,#SUM
            MOV   R2,#2
            CLR   A
CLR_SUM_NEXT: MOV  @R0,A
              INC  R0
              DJNZ R2,CLR_SUM_NEXT
            RET

READ_TAB:   MOV    R1,#ADDR
            MOV    R2,#2
            MOV    B,#2
            MUL    AB
            MOV    B,A

READ_TAB_NEXT:
            MOV    A,B
            MOVC  A,@A+DPTR
            MOV    @R1,A
            INC    DPTR
            INC    R1
            DJNZ   R2,READ_TAB_NEXT
            RET

BCD_ADD:    MOV    R0,#SUM
            MOV    R1,#ADDR
            MOV    R2,#2
            CLR    C
BCD_ADD_NEXT:
            MOV    A,@R0
            ADDC   A,@R1
            DA     A
            MOV    @R0,A
            INC    R0
            INC    R1
            DJNZ   R2,BCD_ADD_NEXT
            RET

TAB1:       DB     00H,00H
            DB     96H,40H
            DB     92H,81H
TAB2:       DB     00H,00H
            DB     56H,02H
            DB     12H,05H
            DB     68H,07H
            DB     24H,10H
            DB     80H,12H
            DB     36H,15H
            DB     92H,17H
            DB     48H,20H
            DB     04H,23H
            DB     60H,25H
            DB     16H,28H
            DB     72H,30H
            DB     28H,33H
            DB     84H,35H
            DB     40H,38H

TAB3:       DB      00H,00H
            DB       16H,00H
            DB       32H,00H
            DB       48H,00H
            DB       64H,00H
            DB       80H,00H
            DB       96H,00H
            DB       12H,01H
            DB       28H,01H
            DB       44H,01H
            DB       60H,01H
            DB       76H,01H
            DB       92H,01H
            DB       08H,02H
            DB       24H,02H
            DB       40H,02H

TAB4:       DB       00H,00H
            DB       01H,00H
            DB       02H,00H
            DB       03H,00H
            DB       04H,00H
            DB       05H,00H
            DB       06H,00H
            DB       07H,00H
            DB       08H,00H
            DB       09H,00H
            DB       10H,00H
            DB       11H,00H
            DB       12H,00H
            DB       13H,00H
            DB       14H,00H
            DB       15H,00H



DISP:      MOV    R0,#SUM+1
            MOV    A,@R0
            ANL    A,#0F0H
            JNZ    DISP_NEXT
            MOV    A,@R0
            ANL    A,#0FFH
            JNZ    DISP_NEXT1
            ORL    A,#0FFH
            JMP    DISP_NEXT2

DISP_NEXT:
            MOV     A,@R0
            JMP     DISP_NEXT2
DISP_NEXT1:MOV     A,@R0
            ORL     A,#0F0H
DISP_NEXT2:
            SETB    P0.7
            MOV     P2,A
            CLR     P0.7
            DEC     R0
            MOV     A,@R0
            SETB    P0.6
            MOV     P2,A
            CLR     P0.6
            
            RET

         END

⌨️ 快捷键说明

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