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

📄 ada682.asm

📁 24V逆变AC220电源,采用SPWM双脉宽调制方法实现正弦波的输出.
💻 ASM
📖 第 1 页 / 共 3 页
字号:
             MOV  A,TIME3
             XOR  A,@0X3C
             JBS  STATUS,2         ;是否1H到了? 
             JMP  ZDFW1
             CLR  TIME3            ;清分钟计数寄存器          
             INC  TIME4            ;小时加1
             MOV  A,TIME4
             XOR  A,DSCS
             JBS  STATUS,2
             JMP  ZDFW1
             CALL SPE1             ;定时时间到,关闭电机及负离子发生器工作 
       ZDFW1:MOV  A,@0X3C
             MOV  TCC,A
         ZD0:JBS IMR,1             ;判断是否PORT6输入变化中断?
             JMP ZD1               ;不是,转ZD1
             BC  IMR,1             ;是,ICIF中断标志位清0
         ZD1:JBS IMR,2             ;判断是否外部中断?             
             JMP ZD2               ;不是,转ZD2
             BC  IMR,2             ;是,EXIF中断标志位清0
         ZD2:JBS IMR,3             ;判断是否模拟到数字转换完成的的中断标志?
             JMP ZD3               ;不是,转ZD3
             BC  IMR,3             ;是,ADIF中断标志位清0
             JBS ZTBZ2,0           ;判断是否开机第一次测量?
             JMP ZD2_1             ;否,转ZD2_1
             MOV A,ADC_L           ;是,保存电压作为基准电压 
             MOV JZDY_L,A
             MOV A,ADC_H
             MOV JZDY_H,A
             JMP  ZD3
       ZD2_1:CALL DFBJ             ;ADC测量并自动选择电机的相应风速工作 
         ZD3:JBS IMR,4             ;判断是否PWM1(脉冲宽度调制器)中断标志?
             JMP ZD4               ;不是,转ZD4
             BC  IMR,4             ;是,清PWM1IF中断标志位 
             CALL INIT_IR
             JBS ZTBZ2,3           ;判断工作模式是否为AUTO模式?
             JMP ZD3_0 
             JBC PORT6,3           ;检测P63口状态 
             JMP ZD3_0
             MOV A,@0X01           ;低电平计数 
             ADD CNT1,A
             JBS STATUS,0          ;计数是否计满?
             JMP ZD3_0
             CLR CNT1
             MOV A,@0X01
             ADD CNT2,A
       ZD3_0:JBS ZTBZ1,2           ;蜂鸣器驱动 
             JMP ZD4
             INC FMQ1
             MOV A,FMQ1
             XOR A,@0X50
             JBS STATUS,2
             JMP ZD3_1
             CLR FMQ1
             INC FMQ2
             MOV A,FMQ2
             XOR A,@0X14
             JBS STATUS,2
             JMP ZD3_1 
             CLR FMQ2
             BC  ZTBZ1,2
       ZD3_1:JBS ZTBZ2,2
             JMP ZD3_2
             BC  PORT6,7
             BC  ZTBZ2,2
             JMP ZD4
       ZD3_2:BS  PORT6,7
             BS  ZTBZ2,2
         ZD4:JBS IMR,5             ;判断是否PWM2(脉冲宽度调制器)中断标志?
             JMP ZD5               ;不是,转ZD5    
             BC  IMR,5             ;是,清PWM2IF中断标志位 
             MOV A,@0X01           ;低电平计数 
             ADD CNT1,A
             MOV A,CNT1
             XOR A,@0X64
             JBS STATUS,2          ;计数是否已经达到100个1MS即0.1S?
             JMP ZD5
             CLR CNT1
             MOV A,@0X01
             ADD CNT2,A
         ZD5:JBS IMR,6             ;判断是否PWM3(脉冲宽度调制器)中断标志?
             JMP ZD6               ;不是,转ZD6
             BC  IMR,6             ;是,清PWM3IF中断标志位 
         ZD6:JBS IMR,7             ;判断是否比较器中断?
             JMP ZD7               ;不是,转ZD7
             BC  IMR,7
         ZD7:SWAPA STORE_STATUS    ;恢复现场 
             MOV STATUS,A
             SWAPA STORE_A
             ENI                   ;开中断 
             RETI
;***********************************************************
;    自动模式下,电机档次选择的比较控制电压 
;***********************************************************
     BIJIAO1:MOV A,@0X01           ;基准电压+0.5V 
             ADD A,JZDY_H
             MOV CKDY_H,A
             BC STATUS,0
             MOV A,@0X9A
             ADD A,JZDY_L
             JBC STATUS,0
             JMP J1
             MOV CKDY_L,A
             RET
          J1:MOV CKDY_L,A
             INC CKDY_H
             RET
     BIJIAO2:MOV A,@0X03           ;基准电压+1V
             ADD A,JZDY_H
             MOV CKDY_H,A
             BC  STATUS,0
             MOV A,@0X34
             ADD A,JZDY_L
             JBC STATUS,0
             JMP J2
             MOV CKDY_L,A
             RET
          J2:MOV CKDY_L,A
             INC JZDY_H
             RET
;***********************************************************
;       测量电压及与传感器测量比较控制子程序 
;***********************************************************              
       DFBJ:BC  STATUS,0           ;判断‘基准电压-测量电压’的正负,来比较两者的大小 
            BC  STATUS,2
       Z1_1:MOV A,ADC_H            ;基准电压与测量电压比较 
            SUB A,JZDY_H
            JBC STATUS,2               
            JMP Z1_2               ;高位相等,则比较低位 
            JBS STATUS,0           ;高位不等,则比较大小 
            JMP Z2_1               ;高位减数小即基准电压〈 测量电压,则继续与基准电压+0.5V比较               
            JMP Z1_3               ;高位减数大即基准电压 〉测量电压,则与粉尘传感器比较 
       Z1_2:MOV A,ADC_L
            SUB A,JZDY_L
            JBC STATUS,2
            JMP Z1_3               ;低位相等,则看粉尘传感器测量结果      
            JBS STATUS,0           ;低位不等,则判断大小 
            JMP Z2_1               ;低位减数大,继续与基准电压+0.5V比较 
            JMP Z1_3               ;低位减数小,则与粉尘传感器比较 
       Z1_3:MOV A,CNT4
            XOR A,@0X04
            JBS STATUS,2
            JMP Z1_4
            MOV A,@0X04
            JMP Z4
       Z1_4:MOV A,CNT4
            XOR A,@0X03
            JBS STATUS,2
            JMP Z1_5
            MOV A,@0X03
            JMP Z4
       Z1_5:MOV A,CNT4
            XOR A,@0X02
            JBS STATUS,2
            JMP Z1_6
            MOV A,@0X02
            JMP Z4
       Z1_6:MOV A,@0X01
            JMP Z4       
       Z2_1:CALL BIJIAO1           ;基准电压+0.5V与基准电压比较 
            MOV A,ADC_H
            SUB A,CKDY_H
            JBC STATUS,2
            JMP Z2_2               ;高位相等,则比较低位 
            JBS STATUS,0           ;高位不等,则比较大小 
            JMP Z3_1               ;高位减数小即基准电压+0.5V < 测量电压,则继续与基准电压+1V比较 
            JMP Z2_3               ;高位减数大即基准电压+0.5V > 测量电压,则与传感器比较 
       Z2_2:MOV A,ADC_L
            SUB A,CKDY_L
            JBC STATUS,2
            JMP Z2_3               ;低位相等,则开启低档                
            JBS STATUS,0           ;低位不等,则判断大小 
            JMP Z3_1               ;低位减数小,则继续与基准电压+1V比较 
            JMP Z2_3               ;低位减数大,则粉尘传感器比较 
       Z2_3:MOV A,CNT4
            XOR A,@0X04
            JBS STATUS,2
            JMP Z2_4
            MOV A,@0X04
            JMP Z4
       Z2_4:MOV A,CNT4
            XOR A,@0X03
            JBS STATUS,2
            JMP Z2_5
            MOV A,@0X03
            JMP Z4
       Z2_5:MOV  A,@0X02
            JMP Z4
       Z3_1:CALL BIJIAO2
            MOV A,ADC_H
            SUB A,CKDY_H
            JBC STATUS,2
            JMP Z3_2               ;高位相等,则比较低位                 
            JBS STATUS,0           ;高位不等,则比较大小 
            JMP Z3_4               ;高位减数小即基准电压+1V < 测量电压,则开启高档 
            JMP Z3_3               ;高位减数大即基准电压+1V > 测量电压,则与粉尘传感器比较 
       Z3_2:MOV A,ADC_L
            SUB A,CKDY_L
            JBC STATUS,2
            JMP Z3_3               ;低位相等,则开启中档 
            JBS STATUS,0           ;低位不等,则判断大小 
            JMP Z3_4               ;低位减数小,开启高档         
            JMP Z3_3               ;低位减数大,与粉尘传感器比较 
       Z3_3:MOV  A,CNT4
            XOR  A,@0X04
            JBC  STATUS,2
            JMP  Z3_4
            MOV  A,@0X03
            JMP  Z4
       Z3_4:MOV  A,@0X04                     
         Z4:MOV  FSCS,A
            CALL FSXZ
            RET
;***********************************************************
;             风速选择控制子程序 
;***********************************************************
        FSXZ:MOV A,FSCS
             XOR A,@0X01
             JBS STATUS,2
             JMP FSXZ1
             CALL ZS_J
             RET
       FSXZ1:MOV A,FSCS
             XOR A,@0X02
             JBS STATUS,2
             JMP FSXZ2
             CALL ZS_L
             RET
       FSXZ2:MOV A,FSCS
             XOR A,@0X03
             JBS STATUS,2
             JMP FSXZ3
             CALL ZS_M
             RET
       FSXZ3:MOV A,FSCS
             XOR A,@0X04
             JBS STATUS,2
             RET
             CALL ZS_H
             RET
;***********************************************************
;         遥控信号解码(红外信号)及译码动作处理程序 
;***********************************************************
     INIT_IR:JBC PORT5,0
             JMP INIT_2
             JBC ZTBZ1,3
             JMP INIT_1
             INC HWX3
             BS ZTBZ1,3
      INIT_1:INC HWX1
             JMP INIT_6
      INIT_2:JBS ZTBZ1,3
             JMP INIT_6
             BC ZTBZ1,3
             MOV A,@0X32
             SUB A,HWX1
             JBS STATUS,0
             JMP INIT_3
             MOV A,@0X01
             MOV HWX3,A
      INIT_3:MOV A,@0X0C
             SUB A,HWX1
             JBS STATUS,0
             JMP INIT_4
             BC STATUS,0
             RLC HWX2
             JMP INIT_5
      INIT_4:BS STATUS,0
             RLC HWX2
      INIT_5:CLR HWX1
             MOV A,HWX3
             XOR A,@0X11
             JBS STATUS,2
             JMP INIT_6
             CALL YIMA
      INIT_6:RET 
;*************遥控译码动作处理程序**************************
       YIMA:MOV A,HWX2
            XOR A,@0X0A6
            JBC STATUS,2
            CALL SET_1             ;调用开关程序 
            JBS ZTBZ1,0
            JMP YIMA_1
            MOV A,HWX2
            XOR A,@0X0A9
            JBC STATUS,2
            CALL SET_2
            MOV A,HWX2
            XOR A,@0X0CD
            JBC STATUS,2
            CALL SET_6
            MOV A,HWX2
            XOR A,@0X0F2
            JBC STATUS,2
            CALL YM1
            MOV A,HWX2
            XOR A,@0X0D1
            JBC STATUS,2
            CALL YM2
            MOV A,HWX2
            XOR A,@0X0B0
            JBC STATUS,2
            CALL YM3
            JBC ZTBZ2,1
            JMP YIMA_1
            MOV A,HWX2
            XOR A,@0X0AB
            JBC STATUS,2
            CALL SET_4
            MOV A,HWX2
            XOR A,@0X0EC
            JBC STATUS,2
            CALL YM4
            MOV A,HWX2
            XOR A,@0X0C8
            JBC STATUS,2
            CALL YM5
     YIMA_1:RET
        YM1:MOV A,DSCS
            XOR A,@0X02
            JBC STATUS,2
            MOV A,@0X0
            JBS STATUS,2
            MOV A,@0X02
            MOV DSCS,A
            BS ZTBZ1,2
            RET
        YM2:MOV A,DSCS
            XOR A,@0X04
            JBC STATUS,2
            MOV A,@0X0
            JBS STATUS,2
            MOV A,@0X04
            MOV DSCS,A
            BS ZTBZ1,2
            RET
        YM3:MOV A,DSCS
            XOR A,@0X08
            JBC STATUS,2
            MOV A,@0X0
            JBS STATUS,2
            MOV A,@0X08
            MOV DSCS,A
            BS ZTBZ1,2
            RET
        YM4:MOV A,@0X03
            MOV FSCS,A
            BS ZTBZ1,2
            RET
        YM5:MOV A,@0X04
            MOV FSCS,A
            BS ZTBZ1,2
            RET
;***********************************************************
;             延时子程序 
;***********************************************************
     DELAY_1:MOV A,@0X0C           ;0.05MS延时程序 
             MOV DEL1,A
         LP1:WDTC
             NOP
             DJZ DEL1
             JMP LP1
             RET
             EOP

             

     

⌨️ 快捷键说明

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