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

📄 新建 文本文档.txt

📁 单片机入门,包括9个小实验的汇编程序和protues仿真,可连接观看程序运行效果
💻 TXT
字号:
 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -