新建 文本文档.txt

来自「单片机入门,包括9个小实验的汇编程序和protues仿真,可连接观看程序运行效果」· 文本 代码 · 共 113 行

TXT
113
字号
 ST    BIT P3.2
        EOC   BIT P3.1
        OE    BIT P3.0
        AA    BIT P3.4
        BB    BIT P3.5
        CC    BIT P3.6
        GDATA EQU 45H
        
        ORG   00H
        LJMP  MAIN
        ORG   30H
MAIN:   CLR  CC            ;选择通道3
        SETB AA
        SETB BB
LOOP:   CLR  ST             ;给START引脚送入脉冲,开始对3通道进行转换
        SETB ST
        CLR  ST
WAIT:   JNB EOC,WAIT       ;判断是否转换完毕
        SETB  OE          ;转换完后,允许输出
        MOV   GDATA,P1       ;转换完的二进制数送入GDATA
        MOV   A,P1           ;转换完的二进制数送入累加器
        LCALL ADAD           ;调用数制转换程序
        LCALL DISPLAY        ;调用显示程序
        LJMP  LOOP           ;重新进行转换
;**********数制转换子程序********************
ADAD:   MOV   B,#100         ;100放入B
        MUL   AB             ;100*数字量送B
        MOV   R4,#00H        ;送入R4,R3,R2
        MOV   R3,B
        MOV   R2,A
        MOV   R5,#33H        ;33H送R5
        MOV   B,#10H         ;16送B
        LCALL NSDIV          ;转无符号除法程序
        MOV   B,#64H
        DIV   AB
        MOV   7BH,A          ;得50X的百位,送7BH
        ADD   A,7BH          
        MOV   7BH,A          ;得100X的百位,送7BH
        MOV   A,B
        MOV   B,#0AH
        DIV   AB
        SWAP  A
        ORL   A,B            ;得50X的十位和个位送A
        MOV   B,A
        ADD   A,B
        DA    A
        JNC   BWNOTJ1        ;若百位无进位,则转BWNOTJ1
        INC   7BH            ;否则,7BH中的内容加“1”
BWNOTJ1:MOV   B,A            ;对A中BCD码拆字
        ANL   A,#0F0H
        SWAP  A
        MOV   7AH,A          ;十位BCD码送7AH
        MOV   A,B
        ANL   A,#0FH
        MOV   79H,A          ;个位BCD码送79H
ADRETN: RET
NSDIV:  CLR   C              ;无符号数除法子程序
        MOV   A,R2           ;R4,R3,R2左移一位
        RLC   A
        MOV   R2,A
        MOV   A,R3
        RLC   A
        MOV   R3,A
        MOV   A,R4
        RLC   A
        MOV   R4,A
        CLR   C
        SUBB  A,R5
        JC    NSDNEXT
        MOV   R4,A
        INC   R2
NSDNEXT:DJNZ  B,NSDIV         ;除法未完,则转NSDIV
        CLR   C               ;两数之商除以2,送R2和A
        MOV   A,R3
        RRC   A
        MOV   A,R2
        RRC   A
        MOV   R2,A
        RET
;***************显示子程序*************
DISPLAY:MOV   DPTR,#TAB       ;表头地址送DPTR
        MOV   P2,#0FEH        ;位选码送P2口
        MOV   40H,7BH         ;百位数送40H
        MOV   41H,#10H        ;小数点送41H
        MOV   42H,7AH         ;十位数送42H
        MOV   43H,79H         ;个位数送43H
        MOV   R0,#40H         ;立即数40H送入R0
LOOP1:  MOV   A,@R0           ;把显示缓冲区的内容送入A
        MOVC  A,@A+DPTR       ;查表得段码
        MOV   P0,A            ;段码送P0口
        LCALL DELAY           ;调用延时子程序
        INC   R0              ;移显示缓冲区
        MOV   A,P2
        JNB   ACC.3,RETURN    ;判断是否显示到最后一位
        RL    A
        MOV   P2,A
        LJMP  LOOP1
RETURN: RET
; ************延时10ms程序*********
DELAY:  MOV     R7,#50
   D2:  MOV     R6,#100
   D1:  DJNZ    R6,D1
        DJNZ    R7,D2
        RET

TAB:    DB      3FH,06H,5BH,4FH
        DB      66H,6DH,7DH,07H
        DB      7FH,6FH,77H,7CH
        DB      39H,5EH,79H,71H
        DB      80H
        END
      

⌨️ 快捷键说明

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