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

📄 stemper.a51

📁 包括打印需要的启动停止信号 实时温度控制等程序及源码
💻 A51
字号:
                ORG 0000H
                AJMP MAIN
                ORG 000BH
                AjMP T0INT
                ORG 001BH
                AJMP T1INT
                ORG 0030H

MAIN:         MOV SP,#60H
                MOV TMOD,#11H
                MOV TH0,#3CH        ;设置T0定时器100MS中断
                MOV TL0,#0B0H       ;
                MOV TH1,#3CH        ;设置T1定时器100MS中断
                MOV TL1,#0B0H       ;
                SETB P3.4           ;关闭打码指示
                CLR  P3.3           ;开启加温指示
                SETB P3.2           ;关闭打码输出
                CLR  P3.5           ;开启停止指示
                MOV R2,#0           ;清T0软计数器
                MOV R3,#0           ;清T1软计数器
                SETB EA             ;开总中断
                SETB ET0            ;允许T0中断
                SETB ET1            ;允许T1中断
                SETB TR0            ;开启T0定时器
START:          JNB P3.1,QIDONG     ;判断开始信号是否有效
                AJMP START

QIDONG:         ACALL D10MS         ;延时10毫秒去除干扰
                JNB P3.1,START0     ;再次判断信号是否有效
                AJMP START          ;否则返回
START0:         JNB P3.1,$          ;若开始信号持续则等待
                SETB P3.5           ;否则关闭停止指示
                CLR  P3.4           ;开启打码指示
                CLR  P3.2           ;开启打码输出
                ACALL D100MS        ;延时100毫秒,防止在停止范围不启动
START1:         JB P3.0,START2      ;判断停止A信号是否有效
                JNB P3.0,START3     ;判断停止B信号是否有效
START2:         JB P3.0,START2      ;
                ACALL D10MS         ;延时去抖
                JB P3.0,START0      ;再次判断
                SETB P3.2           ;关闭打码输出
                SETB P3.4           ;关闭打码指示
                CLR  P3.5           ;开启停止指示
                AJMP START
START3:         JNB P3.0,START3     ;
                ACALL D10MS         ;延时去抖
                JNB P3.0,START0     ;再次判断
                SETB P3.2           ;关闭打码输出
                SETB P3.4           ;关闭打码指示
                CLR  P3.5           ;开启停止指示
                AJMP START
T0INT:          CLR TR0             ;关闭T0定时器
                INC R2              ;将计数器加一
                MOV A,R2            ;送累加器
                CJNE A,#5,NEXT      ;判断是否等于5
                MOV R2,#0           ;   
                SETB P3.3           ;取反加热管输出
                MOV TH1,#3CH        ;设置T1定时器100MS中断
                MOV TL1,#0B0H       ;
                SETB TR1            ;开启T1定时器
                RETI
NEXT:           MOV TH0,#3CH        ;设置T0定时器100MS中断
                MOV TL0,#0B0H       ;
                SETB TR0            ;开启T0定时器
                RETI
T1INT:          CLR TR1             ;关闭T0定时器
                INC R3              ;将计数器加一
                MOV A,R3            ;送累加器
                CJNE A,#6,NEXT1     ;判断是否等于5
                MOV R3,#0           ;等于则清零计数器
                CLR P3.3            ;取反加热管输出
                MOV TH0,#3CH        ;设置T0定时器100MS中断
                MOV TL0,#0B0H       ;
                SETB TR0            ;开启T0定时器
                RETI
NEXT1:          MOV TH1,#3CH        ;设置T1定时器100MS中断
                MOV TL1,#0B0H       ;
                SETB TR1            ;开启T1定时器
                RETI
D10MS:          MOV R6,#10          ;
DEL0:           MOV R5,#250         ;
DEL1:           DJNZ R5,DEL1        ;
                DJNZ R6,DEL0        ;
                RET
D100MS:         MOV R4,#10          ;
DEL2:           ACALL D10MS         ;
                DJNZ R4,DEL2        ;
                RET
                END


⌨️ 快捷键说明

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