这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » 完整的数控直流电源程序

共2条 1/1 1 跳转至

完整的数控直流电源程序

高工
2008-07-08 16:58:59     打赏
       PORT    EQU     0FE00H         PORTA   EQU     0FE01H         PORTB   EQU     0FE02H         PORTC   EQU     0FE03H         DISP0   EQU     30H         DISP1   EQU     31H         DISP2   EQU     32H         DISP3   EQU     33H         DISP4   EQU     34H         DISP5   EQU     35H         DISP6   EQU     36H         DISP7   EQU     37H         WEI     EQU     38H             ;位码           DATB1   EQU     27              ;乘              0.54         DATB    EQU     50              ;除         PPPP    EQU     85              ;想少数响要增大数值           ADADH   EQU     0FB00H          ;AD地址           DAADH   EQU     ffice:smarttags" />0F700H          ;DA地址         DBUFH   EQU     3CH             ;DA高四位         DBUFL   EQU     3DH             ;DA低八位                 LENG1   EQU     24              ;双字节二进制变BCD,40H~44H         LENG2   EQU     4         LENG3   EQU     3         NUMB1   EQU     40H         NUMB2   EQU     43H             ORG     0000H         AJMP    MAIN         ORG     000BH         AJMP    LED         ORG     0013H         AJMP    KEYSCAN       MAIN:   CLR     P1.1         SETB    P1.1         CLR     P1.1         MOV     R0,#00H         MOV     R1,#00H         MOV     SP,#50H         SETB    PT0         MOV     TMOD,#01H         MOV     TH0,#0F8H               ;2MS,显示扫描间隔         MOV     TL0,#30H         SETB    EA         SETB    ET0         SETB    TR0         SETB    IT1         SETB    EX1         CLR     00H                     ;电流千位合法位         CLR     01H                     ;显示闪烁           MOV     3EH,#00H                ;显示数据         MOV     3FH,#00H         MOV     39H,#00H                ;合字暂存         MOV     3CH,#00H         MOV     3DH,#00H         MOV     45H,#00H                ;拆字暂存           SETB    P1.0                    ;过载           MOV     DPTR,#PORT              ;AB出C口入         MOV     A,#03H         MOVX    @DPTR,A         MOV     DPTR,#PORTA             ;列扫描输出低电平         MOV     A,#0H         MOVX    @DPTR,A         MOV     3AH,#00H         MOV     3BH,#00H           MOV     30H,#0         MOV     31H,#0         MOV     32H,#0         MOV     33H,#0         MOV     34H,#0         MOV     35H,#0         MOV     36H,#0         MOV     37H,#0         MOV     WEI,#00H         SETB    RS0         SETB    RS1         MOV     R0,#DISP0             ;显示指针           一定要用俩组         MOV     R6,#8                 ;显示位数         MOV     R1,#DISP0             ;键盘指针         MOV     R7,#4                 ;键盘位数         CLR     RS0         CLR     RS1   LOOP:   ACALL   LOOPP         ACALL   DTOA         ACALL   ATOD         AJMP    LOOP   ;******************电流设置子程序*************** LOOPP:     MOV          A,3AH            CJNE         A,#15,PASS1            ACALL        SETONE PASS1:     CJNE         A,#10,PASS2            ACALL        JIA PASS2:     CJNE         A,#11,PASS3            ACALL        JIAN PASS3:            RET           ;******************DA转换子程序***************** DTOA:   PUSH    PSW         SETB    RS0         MOV     R2,3CH         MOV     R3,3DH         ;MOV      R2,#00H         ;MOV      R3,#00H         CLR     P3.5         SETB    P3.5         SETB    P2.3         CLR     C         CLR     A         MOV     A,R2         MOV     R7,#4 LOOP11: RLC     A         DJNZ    R7,LOOP11         MOV     R7,#4 LOOP22: LCALL   PRD         DJNZ    R7,LOOP22         CLR     C        CLR     A         MOV     A,R3         MOV     R7,#8 LOOP34: LCALL   PRD         DJNZ    R7,LOOP34         CPL     P2.3         POP     PSW         RET   PRD:    RLC     A         MOV     P3.0,C         SETB    P3.1         CPL     P3.1         RET   ;*****************************AD采样子程序****************************** ATOD: HUMID:   MOV    DPTR,#0FB00H          CLR    A          MOVX   @DPTR,A WAIT:    JNB    P3.4,READ       ;转换结束信号          SJMP   WAIT READ:    MOVX   A,@DPTR          MOV    B,#8          MUL    AB           MOV     40H,A           ;低位         MOV     41H,B           ;高位         ;MOV      40H,#0F8H         ;MOV      41H,#07H         MOV     42H,#00H ;双字节二进制变BCD ;入口二进制42H,41H,40H高到低 ;出口44H~43H,高到低   MUBTD: MOV     R0,#NUMB2         MOV     R7,#LENG2         CLR     A LOOP18: MOV     @R0,A         INC     R0         DJNZ    R7,LOOP18         MOV     R7,#LENG1 LOOP48: MOV     R1,#NUMB1         MOV     R6,#LENG3         CLR     C LOOP28: MOV     A,@R1         RLC     A         MOV     @R1,A         INC     R1         DJNZ    R6,LOOP28         MOV     R5,#LENG2         MOV     R0,#NUMB2 LOOP38: MOV     A,@R0         ADDC    A,@R0         DA      A         MOV     @R0,A         INC     R0         DJNZ    R5,LOOP38         DJNZ    R7,LOOP48     ;拆字程序*************               MOV           R0,#DISP4               MOV           A,44H               ACALL         SEPA1               MOV           R0,#DISP6               MOV           A,43H               ACALL         SEPA1               RET   SEPA1:        MOV           45H,A               ANL           A,#0F0H               SWAP          A               MOV           @R0,A               INC           R0               MOV           A,45H               ANL           A,#0FH               ;SWAP          A               MOV           @R0,A               ;RET              MOV    DPTR,#0FB01H          CLR    A          MOVX   @DPTR,A WAIT1:   JNB    P3.4,READ1       ;转换结束信号          SJMP   WAIT1 READ1:   MOVX   A,@DPTR          CLR    C          ;MOV    A,#68          CJNE   A,#PPPP,LLI LLI:     JNC     LL2              ;集电极电压大于5V则不报警          CLR   P1.0               ;负载电压大于10V          RET LL2:     SETB P1.0          RET     ;闭环*****************************         CLR     C         MOV     A,43H         SUBB    A,3FH         MOV     46H,A              ;低         MOV     A,44H         SUBB    A,3EH         MOV     47H,A              ;高                       ;***********键盘显示中断程序*****************   ;用定时中断0,显示扫描,30H~37H是段码存放地址,38H是位码地址 ;8155 PB0~PB3段码输出,PB4~PB7位码输出   ;用外部中断1键盘扫描,PA0~PA3列扫描输出,PC0~PC3;输入,P2.0接CS,P2.1接IO/M ;出口数值是0~15,存在3AH中,3BH用作放键暂存   ;用寄存器第3组 ;已用R0,R2,R3,R4,R5,R6,其中R0,R6为显示用,R1,R2,R3,R7为键盘用,R4,R5延时用     ;*******************中断显示扫描子程序***************** LED:    PUSH    PSW         PUSH    ACC         PUSH    B         PUSH    DPH         PUSH    DPL         SETB    RS0         SETB    RS1         MOV     TH0,#0F8H             ;2MS         MOV     TL0,#30H         MOV     A,@R0         ADD     A,WEI         MOV     DPTR,#PORTB         MOVX    @DPTR,A         MOV     A,WEI         ADD     A,#10H         MOV     WEI,A         INC     R0         ;ACALL   DELAY         DJNZ     R6,LED1         MOV     WEI,#00H         MOV    R0,#DISP0         MOV     R6,#8   LED1:   POP     DPL         POP     DPH         POP     B         POP     ACC         POP     PSW         RETI   ;**************中断键盘扫描子程序************ KEYSCAN:   PUSH         PSW            PUSH         ACC            PUSH         B            PUSH         DPH            PUSH         DPL            SETB         RS0            SETB         RS1            ACALL        DELAY1                 ;消抖延时            JNB          P3.3,LIST            MOV          DPTR,#PORTA            ;恢复B口输出低电平            MOV          A,#00H            MOVX         @DPTR,A            POP          DPL            POP          DPH            POP          B            POP          ACC            POP          PSW            RETI                                ;没有按 LIST:      MOV          DPTR,#PORTC            MOVX         A,@DPTR            MOV          3BH,A            MOV          R2,#0FEH            MOV          R3,#00H LINE0:     MOV          DPTR,#PORTA            MOV          A,R2            MOVX         @DPTR,A            MOV          DPTR,#PORTC            MOVX         A,@DPTR            JB           ACC.0,LINE1            MOV          A,#0            AJMP        TRYK LINE1:     JB           ACC.1,LINE2            MOV          A,#1            AJMP         TRYK LINE2:     JB           ACC.2,LINE3            MOV          A,#2            AJMP         TRYK LINE3:     JB           ACC.3,NEXT            MOV          A,#3            AJMP         TRYK NEXT:      ;INC          R3            MOV          A,R3            ADD          A,#4            MOV          R3,A              MOV          A,R2            JNB          ACC.3,EXIT            RL           A            MOV          R2,A            AJMP         LINE0 EXIT:      MOV          DPTR,#PORTA              ;恢复B口输出低电平            MOV          A,#00H            MOVX         @DPTR,A            POP          DPL            POP          DPH            POP          B            POP          ACC            POP          PSW            RETI                                  ;没有按 TRYK:      ADD          A,R3            MOV          3AH,A     LETK:      MOV          DPTR,#PORTC            MOVX         A,@DPTR            XRL          A,3BH            JZ           LETK            MOV          DPTR,#PORTA              ;恢复B口输出低电平            MOV          A,#00H            MOVX         @DPTR,A            POP          DPL            POP          DPH            POP          B            POP          ACC            POP          PSW            RETI               ;*******************电流设置**************** SETONE:            SETB         RS0            SETB         RS1            ;SETB         01H                     ;置显示闪烁位 SETONE1:   MOV          A,3AH            CJNE         A,#10,L1 L1:        JNC          SETONE1              JB           00H,L3            CJNE         A,#2,L2                  ;2000MA            MOV          DISP0,#2            MOV          DISP1,#0            MOV          DISP2,#0            MOV          DISP3,#0              ;CLR          01H            CLR          RS0            CLR          RS1            PUSH         PSW            SETB         RS1            ACALL        BCDHEX                   ;十六位BCD变十六进制            ACALL        SUBBV                    ;*2再送DA            POP          PSW            CLR          A            RET L2:        MOV          3AH,#0FFH            JNC          SETONE1            SETB         00H   L3:        MOV          @R1,A                    ;即时刷新显示缓冲区            INC          R1            MOV          3AH,#0FFH            DJNZ         R7,SETONE            MOV          R7,#4            MOV          R1,#30H            CLR          00H            ;CLR          01H            CLR          RS0            CLR          RS1              PUSH         PSW            SETB         RS1            ACALL        BCDHEX                  ;16字节BCD变二进制            ACALL        SUBBV                   ;*5/8            POP          PSW            CLR          A            RET       ;**********加电流 JIA:       MOV          3AH,#0FFH            MOV          A,DISP3            INC          A            MOV          DISP3,A            CJNE         A,#10,OUT            MOV          DISP3,#0            MOV          A,DISP2            INC          A            MOV          DISP2,A            CJNE         A,#10,OUT            MOV         DISP2,#0            MOV          A,DISP1            INC          A            MOV          DISP1,A            CJNE         A,#10,OUT            MOV          DISP1,#0            MOV          A,DISP0            INC          A            MOV          DISP0,A            CJNE         A,#2,OUT            MOV          DISP0,#1            MOV          DISP1,#9            MOV          DISP2,#9            MOV          DISP3,#9   OUT:       PUSH         PSW            SETB         RS1            ACALL        BCDHEX            ACALL        SUBBV            POP          PSW            CLR          A            RET ;**********减电流 JIAN:      MOV          3AH,#0FFH            MOV          A,DISP3            DEC          A            MOV          DISP3,A            CJNE         A,#0FFH,OUT1            MOV          DISP3,#9            MOV          A,DISP2            DEC          A            MOV          DISP2,A            CJNE         A,#0FFH,OUT1            MOV          DISP2,#9            MOV          A,DISP1            DEC          A            MOV          DISP1,A            CJNE         A,#0FFH,OUT1            MOV          DISP1,#9            MOV          A,DISP0            DEC          A            MOV          DISP0,A            CJNE         A,#0FFH,OUT1            MOV          DISP0,#0            MOV          DISP1,#0            MOV          DISP2,#0            MOV          DISP3,#0   OUT1:      PUSH         PSW            SETB         RS1            ACALL        BCDHEX            ACALL        SUBBV            POP          PSW            CLR          A            RET     BCDHEX:        MOV R7,#03H        MOV R0,#DISP0        CLR A        MOV R1,A        MOV R2,A        MOV R4,A        MOV R5,A        MOV R3,A        MOV A,@R0        MOV R1,A        CLR C LOOP16: MOV A,R1        ADD A,R1        MOV R1,A        MOV A,R2        ADDC A,R2        MOV R2,A        MOV A,R1        MOV R3,A        MOV A,R2        MOV R4,A        MOV A,R1        ADD A,R1        MOV R1,A        MOV A,R2        ADDC A,R2        MOV R2,A        MOV A,R1        ADD A,R1        MOV R1,A        MOV A,R2        ADDC A,R2        MOV R2,A        MOV A,R1        ADD A,R3        MOV R1,A        MOV A,R2        ADDC A,R4        MOV R2,A        INC R0        MOV A,@R0        MOV R5,A        MOV A,R1        ADD A,R5        MOV R1,A        MOV A,R2        ADDC A,#00H        MOV R2,A        MOV R5,#00H        DJNZ R7,LOOP16        RET   SUBBV:     MOV          3EH,R2            MOV          3FH,R1              MOV          R4,3EH               ;高位            MOV         R3,3FH             ;低位            MOV          R2,#DATB1 ;********************************乘5 MULI:       MOV A,R2   ;取乘数       MOV B,R3   ;取被乘数低位       MUL AB     ;计算(R3)*(R2)       MOV R5,A    ; 乘积的低位送R5       MOV R6,B     ; 乘积的高位送R6       MOV A,R2      ;恢复乘数       MOV B,R4      ;取被乘数高位       MUL AB         ;计算(R4)*(R2)       ADD A,R6       ;(R3)*(R2)积的高位加(R4)*(R2)积的低位       MOV R6,A       ;存结果       MOV A,B         ;取(R4)*(R2)       ADDC A,#00H      ; (R4)*(R2)积的高位加低位进位       MOV R7,A         ;存最高位       ;RET               MOV       A,R6       MOV       R1,A       MOV       A,R5       MOV       R0,A   ;*******************除8           MOV     R2,#00H         MOV     R3,#DATB         MOV     R4,#00H         MOV     R5,#00H         MOV     R7,#10H   CHU5:   MOV     A,R0         ADD     A,R0         MOV     R0,A         MOV     A,R1         ADDC    A,R1         MOV     R1,A         MOV     A,R2         ADDC    A,R2         MOV     R2,A         MOV     A,R4         ADD     A,R4         MOV     R4,A         MOV     A,R5         ADDC    A,R5         MOV     R5,A         CJNE    R2,#DATB,LOOP07 LOOP07: JC      LOOP17         MOV     A,R2         SUBB    A,R3         MOV     R2,A         MOV     A,R4         ADD     A,#01H         MOV     R4,A         MOV     A,R5         ADDC    A,#00H         MOV     R5,A LOOP17: DJNZ    R7,CHU5           MOV     3CH,R5                ;装入DA转换         MOV     3DH,R4         RET           DELAY1:    MOV          R4,#100                   ;消抖延时20MS   70 10MS DEL21:     MOV          R5,#100 DEL11:     DJNZ         R5,$            DJNZ         R4,DEL21            RET            END  



关键词: 完整     数控     直流电     源程序     DISP1     DISP3    

菜鸟
2008-10-13 08:10:00     打赏
2楼
不错!

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]