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

📄 时序控制器汇编程序.asm

📁 时序控制器程序
💻 ASM
字号:
;///////////////////////////////////////////////////////////////////////////
;// 时序控制器程序                                                //
;// 作用:分时接通/断开各路加热板(有24路),防止大电流对电网过冲击         //
;// 晶振3.57MHz                                                            //
;// P2.6为接通/断开控制端,P2.7预留                                        //
;// P0、P1、P2.0~P2.5为输出端,经过驱动电路驱动各继电器                    //
;// 2008年4月18日,通过测试,实际使用                                //
;///////////////////////////////////////////////////////////////////////////

      WDT EQU 0E1H         ;定义看门狗地址

      ORG 0000H            ;主程序入口
      LJMP KS

;****************************************************************************
;初始化程序
;****************************************************************************
      ORG 0100H
KS:   MOV WDT,#00111100B   ;设置看门狗
      MOV P0,#0FFH         ;设置PO口继电器断开
      MOV P1,#0FFH         ;设置P1口继电器断开
      MOV P2,#0FFH         ;设置P2口继电器断开
      MOV R0,#0FFH         ;延时,待电源正常后系统才开始工作
      DJNZ R0,$
      MOV SP,#60H          ;设SP开始位置
;****************************************************************************
;检测是否启动
;****************************************************************************
L1:   MOV R0,#100          ;延时,作喂狗准备
L2:   JNB P2.6,L3          ;P2.6为接通/断开控制端,检查是否接通(0为接通)
      DJNZ R0,L2
      MOV WDT,#00111100B   ;喂狗
      SJMP L1
L3:   ACALL YS1            ;延时防误
      JB P2.6,L1

;L1:  JB P2.6,$
;     ACALL YS1            ;延时防误
;     JB P2.6,L1

;****************************************************************************
;以下为继电器接通程序,分时接通,防止固态继电器全部接通时对电网的过冲击
;****************************************************************************
      MOV A,#0FFH          ;设置A初值
LL1:  CLR C
      RLC A
      MOV P0,A             ;P0端各口依次输出低电平
      ACALL YS2            ;延时
      JNZ LL1              ;判断P0端的各继电器是否全部接通,全部接通后开始接通P1口

      MOV A,#0FFH
LL2:  CLR C
      RLC A
      MOV P1,A             ;P1端各口依次输出低电平
      ACALL YS2
      JNZ LL2

      MOV A,#0FFH
LL3:  CLR C
      RLC A
      MOV P2,A             ;P2端各口依次输出低电平
      ACALL YS2            ;长延时
      SETB ACC.7           ;屏蔽高4位(使其不受P2.7状态的影响)
      SETB ACC.6           ;屏蔽高3位(使其不受P2.6状态的影响)
      CJNE A,#11000000B,LL3;P2等于C0H时接通完毕,P2.6、P2.7为输入端,不接继电器

;****************************************************************************
;检测启动/断开开关是否断开
;****************************************************************************
Z1:   MOV R0,#100          ;延时,作喂狗准备
Z2:   JB P2.6,Z3           ;P2.6为接通/断开控制端,检查是否断开(1为断开)
      DJNZ R0,Z2
      MOV WDT,#00111100B   ;喂狗
      SJMP Z1
Z3:   ACALL YS1            ;延时防误
      JNB P2.6,Z1
;      SJMP L4

;Z1:  JNB P2.6,$
;      ACALL YS1            ;延时防误
;      JNB P2.6,Z1
;      SJMP L4

;****************************************************************************
;检测启动/断开开关是否断开
;****************************************************************************
;L5:   MOV R0,#100          ;延时,作喂狗准备
;L6:   JNB P2.7,L7          ;P2.7为断开端,检查是否断开(为0断开)
;      DJNZ R0,L6
;      MOV WDT,#00111100B   ;喂狗
;      SJMP L5
;L7:   ACALL YS1            ;延时防误
;      JB P2.7,L5

;L2:  JNB P2.7,$            ;P2.7为断开端,检查是否断开(为0断开)
;     ACALL YS1             ;延时防误
;     JNB P2.7,L2

;****************************************************************************
;以下为断开继电器程序,分时断开,防止冲击
;****************************************************************************
L4:   CLR A                ;设置A初值
LY1:  SETB C
      RLC A
      MOV P0,A             ;P0端各口依次输出低电平
      ACALL YS3            ;延时
      CJNE A,#11111111B,LY1;判断P0端的各继电器是否全部接通,接通后开始接通P1口

      CLR A
LY2:  SETB C
      RLC A
      MOV P1,A             ;P1端各口依次输出低电平
      ACALL YS3
      CJNE A,#0FFH,LY2

      CLR A
LY3:  SETB C
      RLC A
      MOV P2,A             ;P2端各口依次输出低电平
      ACALL YS3            ;延时
      SETB ACC.7           ;屏蔽高4位(使其不受P2.7状态的影响)
      SETB ACC.6           ;屏蔽高3位(使其不受P2.6状态的影响)
      CJNE A,#11111111B,LY3;P2等于3FH时接通完毕,P2.6、P2.7为输入端,不接继电器
      SETB P2.7            ;P2.7恢复高电平
      SETB P2.6            ;P2.6恢复高电平
      AJMP L1 

;****************************************************************************
;以下为延时子程序
;****************************************************************************
;开关延时防误延时子程序
YS1:  MOV R1,#200          ;延时1
Y1:   MOV R2,#100
Y2:   NOP
      NOP
      NOP
      DJNZ R2,Y2
      MOV WDT,#00111100B   ;设置看门狗
      DJNZ R1,Y1
      RET                  ;返回

;继电器延时接通延时子程序
YS2:  MOV R1,#60           ;延时2
S1:   MOV R2,#100
S2:   NOP
      NOP
      NOP
      DJNZ R2,S2
      MOV WDT,#00111100B
      DJNZ R1,S1
      RET

;继电器延时断开延时子程序
YS3:  MOV R1,#40           ;延时2
X1:   MOV R2,#100
X2:   NOP
      NOP
      NOP
      DJNZ R2,X2
      MOV WDT,#00111100B
      DJNZ R1,X1
      RET

;****************************************************************************
;软件陷阱程序
;****************************************************************************
      ORG 0300H            ;程序入口
      NOP                  ;软件陷阱
      NOP
      NOP
      LJMP KS              ;返回主程序

      END

⌨️ 快捷键说明

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