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

📄 数控电源程序清单.asm

📁 数控电源程序设计,可以产生直波
💻 ASM
📖 第 1 页 / 共 2 页
字号:
ZHENGSHU EQU 30H
XIAOSHU  EQU 31H
JINWEI   EQU 32H
JIEWEI   EQU 33H
ORG 0000H

AJMP MAIN
ORG 0003H
AJMP IP0
ORG 0013H
AJMP IP1
MAIN: MOV XIAOSHU,#00H ;小数值存储
      MOV JINWEI,#00H ;‘+’操作存储
      MOV JIEWEI,#00H ;'-'操作存储

      SETB EA
      SETB EX0
      SETB EX1
      SETB IT1
      SETB IT0
      SETB P3.0
AGAIN: SETB P3.1
      MOV A,P1 ;读P1口状态
      ANL A,#0FH ;屏蔽高四位


      ADD A,JINWEI ;加'+'操作的进位
      CLR C
      SUBB A,JIEWEI;减'-'操作的借位
      JC LC3;有借位,产生溢出,转‘指示灯闪烁示警

      CJNE A,#0AH,LC1;判断整数部分是否小于10
 LC1: JC LC2;小于10,有借位,转LC2正常运行
 LC3: LCALL ERR;非规则状态,指示灯闪烁示警

       AJMP AGAIN



 LC2: MOV ZHENGSHU,A
      SWAP A
      ORL A,XIAOSHU
      MOV 20H,A;组合整数小数,为D/A转换作准备

      LCALL  LEDXP;调LED显示子程序
      MOV A,P1;读P1口状态
      SWAP A ;高低四位交换
      ANL A,#0FH;高四位屏蔽
      CJNE A,#00H,LC4
      LCALL LCZB      ;状态0000转直波发生子程序
      AJMP AGAIN
 LC4: CJNE A,#01H,LC5
      LCALL LCFB      ;状态0001转方波发生子程序
      AJMP AGAIN
 LC5: CJNE A,#02H,LC6
      LCALL LCSJB     ;状态0010转三角波发生子程序
      AJMP AGAIN
 LC6: CJNE A,#03H,LC7
      LCALL LCTXB     ;状态0011转梯形波发生子程序
      AJMP AGAIN
 LC7: CJNE A,#04H,LC8
      LCALL LCZXB     ;状态0100转正弦波发生子程序
      AJMP AGAIN
 LC8: CJNE A,#05H,LC9
      LCALL ZJCB     ; 状态0101转左锯齿波发生子程序
      AJMP AGAIN
 LC9: CJNE A,#06H,LC10
      LCALL YJCB      ;状态0110转右锯齿波发生子程序
      AJMP AGAIN
 LC10:CJNE A,#07H,LC11 ;状态0111转直流正扫描
     LCALL ZLZSM
     AJMP AGAIN
 LC11:CJNE A,#08H,LC12 ;状态1000转直流负扫描
     LCALL ZLFSM
     AJMP AGAIN

 LC12: AJMP LC3     ;非标准状态,转灯闪烁

 ;************************************************************
  ;外部中断处理程序
 IP0: PUSH PSW
      PUSH A        ;外部中断1,小数位加1
      MOV A,XIAOSHU
      CLR C

      SUBB A,#09H
      JZ TP1
      INC XIAOSHU  ; 判断小数部分是否小于10
      AJMP  TP2;小于10,转TP2,直接中断返回
 TP1:  ;MOV A,ZHENGSHU
       ;CLR C
       ;SUBB A,#09H
       ;JZ TP7
       ;INC ZHENGSHU
       INC JINWEI
       MOV XIAOSHU,#00H;无借位,即XIAOSHU=10时清零
       AJMP TP2
  ;TP7: CALL ERR
  TP2:  POP A
        POP PSW
        PUSH DPH
        PUSH DPL
        MOV DPTR,#AGAIN
        POP DPL
        POP DPH
        CALL DIMS
        RETI;中断返回




 IP1:   PUSH PSW
        PUSH A
        MOV A,XIAOSHU
        CLR C
        SUBB A,#00H ;产生外部中断2,先判断小数部位是否为0
        JZ TP3
        DEC XIAOSHU
        AJMP TP4
 TP3:   MOV  XIAOSHU,#09H;有借位,R0等于0,整数位借1使R0=10
        INC JIEWEI ;借位存储器JIEWEI加1
 TP4:   POP A
        POP PSW
        PUSH DPH
        PUSH DPL
        MOV DPTR,#AGAIN
        POP DPL
        POP DPH
        RETI;中断返回
        POP A
        ;JNB P3.3,$
        CALL DIMS
        RETI;中断返回
 ;************************************************************
 ;闪烁子程序:

ERR:
    CPL P3.0
       CLR P3.1
         MOV R6,#0FFH
         MOV R3,#0FFH

 SS1:    DJNZ R6,SS1
          DJNZ R3,SS1

         SETB P3.0
         MOV R6,#0FFH
         MOV R3,#0FFH
 SS3:    DJNZ R6,SS3
         DJNZ R3,SS3


         RET

 ;************************************************************
 ;LED显示子程序:

LEDXP:;ORL ZHENGSHU,#50H;位选通整数显示器
 ;    MOV P2,ZHENGSHU
  ;   MOV R6,#0FH
;DP1: DJNZ R6,DP1
 ;    ORL XIAOSHU,#60H;位选通小数显示器
  ;   MOV P2,XIAOSHU
   ;  MOV R6,#0FH
 ;DP2:DJNZ R6,DP2
  ;   RET
  MOV A,20H
  SWAP A
  MOV P2,A
  RET

 ;************************************************************
 ;直波发生子程序:

 LCZB:MOV A,20H
      MOV DPTR,#BCD_SJZ
      MOVC A,@A+DPTR
      RL A
      MOV DPTR,#7FFFH
      MOVX @DPTR,A
      ;MOV R6,#0FFH

  ;ZB1:CALL LEDXP
   ;  DJNZ R6,ZB1
     CALL DELAYS
     CALL DELAYS
     CALL DELAYS
     ;MOV A,#00H
     ;MOVX @DPTR,A
     ;CALL DELAYSS
      RET

 ;************************************************************
 ;方波发生子程序:

 LCFB:MOV A,20H ;
      MOV DPTR,#BCD_SJZ
      MOVC A,@A+DPTR
      RL A
      MOV DPTR,#7FFFH
      MOVX @DPTR,A
      CALL DELAYS
      CALL DELAYS
      CALL DELAYS
      MOV A,#00H
      MOVX @DPTR,A ;送低电平
      CALL DELAYS
      CALL DELAYS
      CALL DELAYS
      RET

 ;************************************************************
 ;三角波发生子程序:

 LCSJB:MOV A,20H
       MOV DPTR,#BCD_SJZ
       MOVC A,@A+DPTR
       RL A
       MOV 21H,A
       MOV A,#00H

  UP:  MOV DPTR,#7FFFH
       MOVX @DPTR,A
       ;CALL DELAYSS
       INC A ;电压随时间上升
       CJNE A,21H,UP;小于峰值电压,继续上升
 DOWN: DEC A ;电压随时间下降
       MOVX @DPTR,A
       ;CALL DELAYSS
       JNZ DOWN;电压下降到0结束
       RET

 ;************************************************************
 ;梯形波发生子程序:

  LCTXB:MOV A,20H
        MOV DPTR,#BCD_SJZ
        MOVC A,@A+DPTR
        RL A
        MOV 21H,A
        MOV A,#00H

    UP1: MOV DPTR,#7FFFH;送入数值电压
         MOVX @DPTR,A
         ;CALL DELAYSS
        INC A ;电压随时间上升
        CJNE A,21H,UP1;小于峰值电压,继续上升
        MOV R5,#02H
    TXB1:CALL DELAYS
        DJNZ R5,TXB1

  DOWN1: DEC A  ;电压随时间下降至0
       MOVX @DPTR,A
       ;CALL DELAYS
        JNZ DOWN1
        RET

 ;************************************************************
 ;正弦波发生子程序:

  LCZXB:MOV A,ZHENGSHU
        CJNE A,#00H,ZXB0
        AJMP ZXB00
 ZXB0:  CJNE A,#01H,ZXB1
        AJMP ZXB10
 ZXB1:  CJNE A,#02H,ZXB2
        AJMP ZXB20
 ZXB2:  CJNE A,#03H,ZXB3
        AJMP ZXB30
 ZXB3:  CJNE A,#04H,ZXB4
        AJMP ZXB40
 ZXB4:  CJNE A,#05H,ZXB5
        AJMP ZXB50
 ZXB5:  CJNE A,#06H,ZXB6
        AJMP ZXB60
 ZXB6:  CJNE A,#07H,ZXB7
        AJMP ZXB70
 ZXB7:  CJNE A,#08H,ZXB80
        AJMP ZXB80
 ZXB8:  AJMP ZXB90
        ;MOV DPTR,#ZXBTAB
        ;JMP @A+DPTR
 ;ZXBTAB:AJMP ZXB00
        ;AJMP ZXB10
        ;AJMP ZXB20
        ;AJMP ZXB30
        ;AJMP ZXB40
        ;AJMP ZXB50
        ;AJMP ZXB60
        ;AJMP ZXB70
        ;AJMP ZXB80
        ;AJMP ZXB90
 ZXB00: MOV R7,#0FFH
        MOV R6,#00H
 ZXB9:  MOV A,R6
        MOV DPTR,#ZXBTAB01
        MOVC A,@A+DPTR
        MOV R5,A
        MOV A,XIAOSHU
        MOV B,R5
        MUL AB
        PUSH DPL
        PUSH DPH
        MOV DPTR,#7FFFH
        MOVX @DPTR,A
        POP DPH
        POP DPL
        INC R6
        DJNZ R7,ZXB9
        JMP ZXBTX
 ZXB10: MOV DPTR,#ZXBTAB10
        JMP ZXBTX
 ZXB20: MOV DPTR,#ZXBTAB20
        JMP ZXBTX
 ZXB30: MOV DPTR,#ZXBTAB30
        JMP ZXBTX
 ZXB40: MOV DPTR,#ZXBTAB40
        JMP ZXBTX
 ZXB50: MOV DPTR,#ZXBTAB50
        JMP ZXBTX
 ZXB60: MOV DPTR,#ZXBTAB60
        JMP ZXBTX
 ZXB70: MOV DPTR,#ZXBTAB70
        JMP ZXBTX
 ZXB80: MOV DPTR,#ZXBTAB80
        JMP ZXBTX
 ZXB90: MOV DPTR,#ZXBTAB90
        JMP ZXBTX
 ZXBTX: MOV A,R6
        MOVC A,@A+DPTR
        CALL  HUANSUAN
        ADD A,R5
        PUSH DPL
        PUSH DPH
        MOV DPTR,#7FFFH
        MOVX @DPTR,A
        POP DPH
        POP DPL

        INC R6
        CJNE R6,#00H,ZXBTX
        RET

 ;************************************************************
 ;正弦函数小数位换算子程序:

HUANSUAN: PUSH DPL
          PUSH DPH
          PUSH A
          MOV A,R6
          MOV DPTR,#ZXBTAB01
          MOVC A,@A+DPTR
          MOV R5,A
          MOV A,XIAOSHU
          MOV B,R5
          MUL AB
          MOV R5,A
          POP A
          POP DPH
          POP DPL
          RET

 ;************************************************************
 ;左锯齿波发生子程序

 ZJCB:  MOV A,20H
        MOV DPTR,#BCD_SJZ
        MOVC A,@A+DPTR
        RL A
 ZJCB1: MOV DPTR,#7FFFH
        MOVX @DPTR,A
        ;CALL DELAYSS
        DEC A
        JNZ ZJCB1
        MOVX @DPTR,A

⌨️ 快捷键说明

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