ada682.asm

来自「24V逆变AC220电源,采用SPWM双脉宽调制方法实现正弦波的输出.」· 汇编 代码 · 共 1,101 行 · 第 1/3 页

ASM
1,101
字号
             JBC ZTBZ1,5
             JMP GZM2
             JBC ZTBZ1,6
             JMP GZM2
             JBC ZTBZ1,4
             JMP GZM2
             JBC ZTBZ1,6
             JMP GZM2
             JBC ZTBZ1,7
             JMP GZM2
             JBC ZTBZ1,7
             JMP GZM2
             JBS PORT7,0		
             CALL SET_2            ;调用负离子发生器子程序 
        GZM2:WDTC
             MOV A,@0X09        
	         IOW IOC50	
             MOV A,@0X0B         
	         IOW IOC60	
         	MOV A,@0X00	        	
	         IOW IOC70	
             NOP
             BS PORT5,7
             BS PORT7,0
             BC PORT5,2
             BC PORT5,1	
             BC PORT5,6
             JBC PORT6,0           ;检测定时键S3是否有按下?
             BC  ZTBZ1,4
             JBC ZTBZ1,5
             JMP GZM3
             JBC ZTBZ1,6
             JMP GZM3
             JBC ZTBZ1,4
             JMP GZM3
             JBC ZTBZ2,6
             JMP GZM3
             JBC ZTBZ1,7
             JMP GZM3
             JBC ZTBZ1,7
             JMP GZM3
             JBS PORT6,0
             CALL SET_3            ;定时设置 
        GZM3:MOV A,@0XC1
             IOW IOC50
             MOV A,@0X0A
             IOW IOC60
             MOV A,@0X00
             IOW IOC70
             NOP
             BS PORT7,0
             BS PORT6,0
             BC PORT5,2
             BC PORT5,1
             BC PORT5,3
             NOP
             JBC PORT5,7           ;检测静音键S4是否按下?
             BC  ZTBZ2,6
             JBC ZTBZ1,5
             JMP GZM4
             JBC ZTBZ1,6
             JMP GZM4
             JBC ZTBZ1,4
             JMP GZM4
             JBC ZTBZ2,6
             JMP GZM4
             JBC ZTBZ1,7
             JMP GZM4
             JBC ZTBZ1,7
             JMP GZM4
             JBS PORT5,7           ;检测静音键S4是否释放?
             CALL SET_4            
        GZM4:MOV A,@0X41
             IOW IOC50
             MOV A,@0X0A
             IOW IOC60
             MOV A,@0X01
             IOW IOC70
             NOP
             BS PORT5,7
             BS PORT6,0
             BC PORT5,2
             BC PORT5,1
             BC PORT5,3
             NOP
             JBC PORT7,0           ;检测SPEED键S5是否按下?
             BC  ZTBZ1,7
             JBC ZTBZ1,5
             JMP GZM5
             JBC ZTBZ1,6
             JMP GZM5
             JBC ZTBZ1,4
             JMP GZM5
             JBC ZTBZ1,6
             JMP GZM5
             JBC ZTBZ1,7
             JMP GZM5
             JBC ZTBZ1,7
             JMP GZM5
             JBS PORT7,0
             CALL SET_5
        GZM5:MOV A,@0X41
             IOW IOC50
             MOV A,@0X0B
             IOW IOC60
             MOV A,@0X00
             IOW IOC70
             NOP
             BS PORT5,7
             BS PORT7,0
             BC PORT5,2
             BC PORT5,1
             BC PORT5,3
             NOP
             JBC PORT6,0           ;检测模式键MODE是否有按下?
             BC  ZTBZ2,7
             JBC ZTBZ1,5
             JMP GZM6
             JBC ZTBZ1,6
             JMP GZM6
             JBC ZTBZ1,4
             JMP GZM6
             JBC ZTBZ2,6
             JMP GZM6
             JBC ZTBZ1,7
             JMP GZM6
             JBC ZTBZ2,7
             JMP GZM6
             JBS PORT6,0           ;检测模式键MODE是否释放? 
             CALL SET_6
        GZM6:RET
;***********************************************************
;             粉尘传感器检测 
;*********************************************************** 
       FCCGQ:MOV A,CNT2
             MOV CNT3,A
             MOV A,@0X80
             SUB A,CNT3
             JBS STATUS,2
             JMP FCCG1
             MOV A,@0X04
             JMP FCCG4
       FCCG1:MOV A,@0X40
             SUB A,CNT3
             JBS STATUS,2
             JMP FCCG2
             MOV A,@0X03
             JMP FCCG4
       FCCG2:MOV A,@0X26
             SUB A,CNT3
             JBS STATUS,2
             JMP FCCG3
             MOV A,@0X02
             JMP FCCG4
       FCCG3:MOV A,@0X01
       FCCG4:MOV CNT4,A
             CLR CNT1
             CLR CNT2
             RET
;***********************************************************
;         功能模块控制子程序 
;***********************************************************
       SET_1:BS  ZTBZ1,5           ;置按键S1
             CALL TIME             ;计数器各变量清0
             BS  ZTBZ1,2           ;置蜂鸣器响标志 
             JBC ZTBZ1,0           ;判断开关状态是ON&OFF?
             JMP SPE1              ;开关为ON,则停止工作 
;*****************净化器开机********************************
             JBC ZTBZ1,1           ;开关为OFF,则开启工作 
             BS  PORT6,5
             JBS ZTBZ1,1
             BC  PORT6,5
             CALL ZS_M
             MOV  A,@0X03
             MOV  FSCS,A
             BS  ZTBZ1,0
             BC  ZTBZ2,1
             BS  ZTBZ2,5           ;开机2S标志位 
             CLR DSCS        
             RET
;*****************净化器关机********************************
        SPE1:BC PORT6,5            ;电机停止工作 
	         BC PORT5,5
	         BC PORT6,2
	         BC PORT6,4
             CLR DSCS              ;清定时变量寄存器 
             CLR FSCS
             CLR JZDY_H
             CLR JZDY_L
	         BC ZTBZ1,1            ;置负离子为关状态 
	         BC ZTBZ2,1            ;置净化器为MANUAL模式 
	         BC ZTBZ2,3
	         BC ZTBZ1,0            ;净化器开关为关 
	         RET
       SET_2:BS  ZTBZ1,6
             BS  ZTBZ1,2           ;置蜂鸣器响标志 
             JBS ZTBZ1,1           ;负离子发生器控制程序 
             JMP FLZ_1
             BC PORT6,5
             BC ZTBZ1,1
             RET
       FLZ_1:BS PORT6,5
             BS ZTBZ1,1
             RET
       SET_3:BS   ZTBZ1,4
             CALL TIME             ;清定时计数各变量寄存器 
             BS   ZTBZ1,2          ;置蜂鸣器响标志 
             MOV  A,DSCS
             XOR  A,@0X0           ;定时2小时 
             JBS  STATUS,2
             JMP  SET1
             MOV  A,@0X02
             MOV  DSCS,A
             JMP  SET4
        SET1:MOV  A,DSCS           ;定时4小时 
             XOR  A,@0X02
             JBS  STATUS,2
             JMP  SET2
             MOV  A,@0X04
             MOV  DSCS,A
             JMP  SET4
        SET2:MOV  A,DSCS           ;定时8小时 
             XOR  A,@0X04
             JBS  STATUS,2
             JMP  SET3
             MOV  A,@0X08
             MOV  DSCS,A
             JMP  SET4
        SET3:MOV  A,DSCS           ;不定时 
             XOR  A,@0X08
             JBS  STATUS,2
             JMP  SET4
             MOV  A,@0X0
             MOV  DSCS,A
        SET4:RET
       SET_4:BS  ZTBZ2,6
             JBC ZTBZ2,1           ;判断净化器工作模式?
             RET
             BS  ZTBZ1,2           ;置蜂鸣器响标志 
             MOV A,FSCS            ;若是静音档,则跳到低档
             XOR A,@0X01
             JBS STATUS,2
             JMP ZS_1
             CALL ZS_L
             MOV A,@0X02
             MOV FSCS,A
             RET
        ZS_1:CALL ZS_J             ;若是其他档,则跳到静音档
             MOV A,@0X01
             MOV FSCS,A
             RET
       SET_5:BS  ZTBZ1,7
             JBC ZTBZ2,1           ;判断净化器工作模式?
             RET
             BS  ZTBZ1,2           ;置蜂鸣器响标志 
             MOV A,FSCS            ;静音档跳到低档 
             XOR A,@0X01
             JBS STATUS,2
             JMP ZS_2
             CALL ZS_L
             MOV A,@0X02
             MOV FSCS,A
             JMP ZS_5
        ZS_2:MOV A,FSCS            ;中档 
             XOR A,@0X02
             JBS STATUS,2
             JMP ZS_3
             CALL ZS_M
             MOV A,@0X03
             MOV FSCS,A
             JMP ZS_5
        ZS_3:MOV A,FSCS            ;高档 
             XOR A,@0X03
             JBS STATUS,2
             JMP ZS_4
             CALL ZS_H
             MOV A,@0X04
             MOV FSCS,A
             JMP ZS_5
        ZS_4:MOV A,FSCS            ;从高档跳到低档 
             XOR A,@0X04
             JBS STATUS,2
             JMP ZS_5
             CALL ZS_L
             MOV A,@0X02 
             MOV FSCS,A
        ZS_5:RET
       SET_6:BS  ZTBZ2,7
             BS  ZTBZ1,2
             JBS ZTBZ2,1           ;判断净化器工作模式?
             JMP ZS_6
             BC ZTBZ2,1
             BC ZTBZ2,3
             BS PORT6,6            ;关粉尘器开关 
             MOV A,@0X09
             IOW IOC90
             JMP ZS_7
        ZS_6:BS ZTBZ2,1
             BS ZTBZ2,3
             CALL ZS_L
             MOV  A,@0X02
             MOV  FSCS,A
             CLR KJTM
             CLR JZDY_H
             CLR JZDY_L
             CLR AUTO_30S
             BS  ZTBZ2,0
             BC PORT6,6            ;开粉尘器开关 
             MOV A,@0X19
             IOW IOC90
        ZS_7:RET
;***********************************************************
;           定时变量初始化 
;***********************************************************
        TIME:CLR TIME1
             CLR TIME2
             CLR TIME3
             CLR TIME4
             RET
;***********************************************************
;         电机风速子程序 
;***********************************************************
        ZS_J:BC PORT5,5            ;静音档 
             BS PORT6,2
             BC PORT6,4
             RET
        ZS_L:BC PORT5,5            ;低档 
             BC PORT6,2
             BS PORT6,4
             RET
        ZS_M:BC PORT5,5            ;中档 
             BC PORT6,2
             BS PORT6,4
             RET
        ZS_H:BS PORT5,5            ;高档 
             BC PORT6,2
             BC PORT6,4
             RET
;***********************************************************
;        中断服务程序 
;***********************************************************
      ZDFWCX:MOV STORE_A,A         ;保护现场 
             SWAP STORE_A  
             SWAPA STATUS 
             MOV STORE_STATUS,A
             DISI                  ;关中断 
             JBS IMR,0             ;判断是否TCC溢出中断? 
             JMP ZD0               ;不是,转ZD0
             BC  IMR,0             ;是,TCC中断标志位清0
             INC TIME1             ;12.5MS计数寄存器加1
             MOV A,TIME1
             XOR A,@0XA0        
             JBS STATUS,2          ;是否1S到了?  
             JMP  ZDFW1
             CLR  TIME1            ;清10MS计数寄存器 
             INC  TIME2            ;秒加1
             JBC  ZTBZ2,1
             JMP  ZDFW
             JBS  ZTBZ2,0          ;判断是否有第一次测量标志 
             INC  AUTO_30S
        ZDFW:MOV  A,TIME2
             XOR  A,@0X3C          ;是否1M到了?
             JBS  STATUS,2 
             JMP  ZDFW1
             CLR  TIME2            ;清秒计数寄存器 
             INC  TIME3            ;分钟加1
             INC  KJTM

⌨️ 快捷键说明

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