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

📄 dianyayuan.asm

📁 采用proteus仿真环境 可实现数控恒压电源的数控功能
💻 ASM
字号:
        ORG     0000H
        LJMP    MAIN
        ORG     0030H
;******************
;初始化变量
;******************
MAIN:   MOV     R0,#30H
        MOV     R7,#10H
        MOV     P3,#00H
        CLR     C
        MOV     00H,C
LOOP:   MOV     @R0,#00H
        INC     R0
        DJNZ    R7,LOOP
        MOV     R1,#2FH
LOOP1:  LCALL   DISPLAY
        LCALL   SHUCHU;电压D/A转换输出
        JNB     P1.0,WEIXUAN;进入位选状态
        JNB     P1.2,JIA;进入加状态
        JNB     P1.3,JIAN;进入减状态
        AJMP    LOOP1

;******************
;位选程序
;******************
WEIXUAN:LCALL   DISPLAY
        JNB     P1.0,WEIXUAN;去抖动
        INC     R1
        MOV     A,R1
        CJNE    A,#34H,LOP1
        MOV     R1,#30H
LOP1:   JNB     P1.1,DUANXUAN;进入段选状态
        JNB     P1.0,WEIXUAN;进入位选状态
        LCALL   DISPLAY
        JNB     P1.4,LOP2; 进入确定状态
        AJMP    LOP1
LOP2:   JNB     P1.4,LOP2;去抖动
        MOV     R1,#2FH
        AJMP    LOOP1
;******************
;段选程序
;******************
DUANXUAN:LCALL  DISPLAY
        JNB     P1.1,DUANXUAN;去抖动
        MOV     A,R1
        MOV     R0,A
        MOV     A,@R0
        INC     A
        CJNE    A,#10,L1
        MOV     A,#00H
L1:     MOV     @R0,A
        LCALL   DISPLAY
        AJMP    LOP1
;******************
;加1程序
;******************
JIA:    LCALL   DISPLAY
        JNB     P1.2,JIA;去抖动
        MOV     A,30H
        JZ      Y4
        AJMP    MAIN
Y4:     CLR     C
        MOV     A,33H
        ADD     A,#5
        ACALL   BIJIAO1
        MOV     33H,A
        MOV     C,00H
        MOV     A,32H
        ADDC    A,#00H
        MOV     00H,C;存进位
        ACALL   BIJIAO1
        MOV     32H,A
        MOV     C,00H
        MOV     A,31H
        ADDC    A,#00H
        MOV     00H,C;存进位
        ACALL   BIJIAO1
        MOV     31H,A
        MOV     A,#00H
        ADDC    A,#00H
        MOV     30H,A
Y3:     AJMP    LOOP1
BIJIAO1:CJNE    A,#0AH,Y1
        MOV     A,#00H
        SETB    C
        MOV     00H,C
        AJMP    Y2
Y1:     CLR     C
Y2:     RET
;******************
;减1程序
;******************
JIAN:   LCALL   DISPLAY
        JNB     P1.3,JIAN;去抖动
        MOV     A,30H
        JNZ     Y7
        MOV     A,31H
        JNZ     Y7
        MOV     A,32H
        JNZ     Y7
        MOV     A,33H
        JNZ     Y7
        MOV     30H,#01H
        AJMP    LOOP1
Y7:     CLR     C
        MOV     A,33H
        SUBB    A,#5
        JZ      Y8
        MOV     A,#05H
Y8:     MOV     33H,A
        MOV     A,32H
        SUBB    A,#00H
        ACALL   BIJIAO2
        MOV     32H,A
        MOV     A,31H
        SUBB    A,#00H
        ACALL   BIJIAO2
        MOV     31H,A
        MOV     A,30H
        SUBB    A,#00H
        MOV     30H,A
        AJMP    LOOP1
BIJIAO2:JNC     Y9
        MOV     A,#09H
Y9:     RET
;******************
;电压D/A转换输出子程序
;******************
SHUCHU: SETB    RS0
        MOV     A,30H
        JZ      Y5
        MOV     A,#200
        AJMP    Y6
Y5:     MOV     A,30H
        SWAP    A
        ORL     A,31H
        MOV     B,#20
        MUL     AB
        MOV     45H,A
        MOV     A,32H
        MOV     B,#2
        MUL     AB
        ADD     A,45H
        MOV     45H,A
        MOV     A,33H
        MOV     B,#5
        DIV     AB
        ADD     A,45H
        MOV     45H,A
Y6:     MOV     DPTR,#TAB2
        MOVC    A,@A+DPTR
        MOV     P3,A
        CLR     RS0
        ACALL   CLZ;调用电压测量值子程序
        RET

;******************
;调用电压测量值子程序
;******************
CLZ:    MOV     48H,A
        MOV     R0,#34H
        MOV     R6,#4
LOOP7:  MOV     B,#10
        MUL     AB
        MOV     62H,A
        MOV     A,B
        MOV     @R0,A
        ADD     A,62H
        MOV     63H,A
        MOV     A,@R0
        ADDC    A,#00H
        MOV     @R0,A
        MOV     A,63H
        INC     R0
        DJNZ    R6,LOOP7
        RET


;******************
;显示子程序
;******************
DISPLAY:MOV     A,#01H
        MOV     R7,#8
        MOV     R0,#30H
LOOP2:  MOV     P2,A
        MOV     10H,A
        MOV     A,@R0
        MOV     DPTR,#TAB1
        MOVC    A,@A+DPTR
        MOV     60H,A
        MOV     A,R0
        CJNE    A,#31H,M1
M3:     MOV     A,60H
        ANL     A,#7FH
        MOV     60H,A
        AJMP    M2
M1:     CJNE    A,#34H,M2
        AJMP    M3
M2:     MOV     P0,60H
        LCALL   DS1MS
        INC     R0
        MOV     A,10H
        RL      A
        MOV     10H,A
        DJNZ    R7,LOOP2
        RET
;******************
;延时1ms子程序
;******************
DS1MS:  MOV     TMOD,#01H
        MOV     TH0,#0FCH
        MOV     TL0,#18H
        SETB    TR0
LOOP3:  JBC     TF0,NOOP
        SJMP    LOOP3
NOOP:   CLR     TR0

        RET

TAB1:   DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
TAB2:   DB 00H, 01H, 03H, 04H, 05H, 06H, 08H, 09H, 0AH, 0BH
        DB 0DH, 0EH, 0FH, 11H, 12H, 13H, 14H, 16H, 17H, 18H
        DB 1AH, 1BH, 1CH, 1DH, 1FH, 20H, 21H, 22H, 24H, 25H
        DB 26H, 28H, 29H, 2AH, 2BH, 2DH, 2EH, 2FH, 30H, 32H
        DB 33H, 34H, 36H, 37H, 38H, 39H, 3BH, 3CH, 3DH, 3EH
        DB 40H, 41H, 42H, 44H, 45H, 46H, 47H, 49H, 4AH, 4BH
        DB 4DH, 4EH, 4FH, 50H, 52H, 53H, 54H, 55H, 57H, 58H
        DB 59H, 5BH, 5CH, 5DH, 5EH, 60H, 61H, 62H, 63H, 65H
        DB 66H, 67H, 69H, 6AH, 6BH, 6CH, 6EH, 6FH, 70H, 71H
        DB 73H, 74H, 75H, 77H, 78H, 79H, 7AH, 7CH, 7DH, 7EH
        DB 80H, 81H, 82H, 83H, 85H, 86H, 87H, 88H, 8AH, 8BH
        DB 8CH, 8EH, 8FH, 90H, 91H, 93H, 94H, 95H, 96H, 98H
        DB 99H, 9AH, 9CH, 9DH, 9EH, 9FH, 0A1H,0A2H,0A3H,0A4H
        DB 0A6H,0A7H,0A8H,0AAH,0ABH,0ACH,0ADH,0AFH,0B0H,0B1H
        DB 0B2H,0B4H,0B5H,0B6H,0B8H,0B9H,0BAH,0BBH,0BDH,0BEH
        DB 0BFH,0C1H,0C2H,0C3H,0C4H,0C6H,0C7H,0C8H,0C9H,0CBH
        DB 0CCH,0CDH,0CFH,0D0H,0D1H,0D2H,0D3H,0D5H,0D6H,0D7H
        DB 0D9H,0DAH,0DBH,0DDH,0DEH,0DFH,0E0H,0E2H,0E3H,0E4H
        DB 0E5H,0E7H,0E8H,0E9H,0EBH,0ECH,0EDH,0EEH,0F0H,0F1H
        DB 0F2H,0F4H,0F5H,0F6H,0F7H,0F9H,0FAH,0FBH,0FCH,0FEH,0FFH


⌨️ 快捷键说明

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