共2条
1/1															1							跳转至页
		完整的数控直流电源程序
 
					
				
															
	       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
共2条
1/1															1							跳转至页
		回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |


 
			
			
			
						
			 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

