📄 cooker_head.asm
字号:
;;*****************************************************
; 特殊寄存器表
;;*****************************************************
IE EQU 00H ;中断使能IEX, IET0, IET1, IEP
IRQ EQU 01H ;中断标志
TM0 EQU 02H ;定时器0分频寄存器
TM1 EQU 03H ;定时器1分频寄存器
TL0 EQU 04H ;定时器0的计数器
TH0 EQU 05H
TL1 EQU 06H ;定时器1的计数器
TH1 EQU 07H
PORTA EQU 08H ;I/O口缓存
PORTB EQU 09H
PORTC EQU 0AH
PORTD EQU 0BH
PORTE EQU 0CH
PORTF EQU 0DH
TBR EQU 0EH
INX EQU 0FH
DPL EQU 10H ;数据指针
DPM EQU 11H
DPH EQU 12H
VACR EQU 13H ;A/D口配置控制
ADCS EQU 14H ;ADC通道选择
ADCDL EQU 15H ;ADC结果低位
ADCDH EQU 16H ;ADC结果高位
GOT EQU 17H ; BIT3=GO/DONEB, BIT2&BIT1=TADC1&0, BIT0=ADCS
PAXOUT EQU 18H ;PORT口输出控制
PBXOUT EQU 19H
PCXOUT EQU 1AH
PDXOUT EQU 1BH
PEXOUT EQU 1CH
PFXOUT EQU 1DH
T0SE EQU 1EH ;定时器源选择
WDT EQU 1FH ;看门狗设置
PWM0 EQU 20H ;PWM0控制寄存器
PWM1 EQU 21H ;PWM1控制寄存器
PP0L EQU 22H
PP0M EQU 23H
PP0H EQU 24H
PD0L EQU 25H
PD0M EQU 26H
PD0H EQU 27H
PP1L EQU 28H
PP1M EQU 29H
PP1H EQU 2AH
PD1L EQU 2BH
PD1M EQU 2CH
PD1H EQU 2DH
;;*****************************************************
;用户寄存器表,BANK 0
;;*****************************************************
;状态寄存器,电磁炉运行过程中需要的控制状态字节
;;*****************************************************
BUTTON_STATUS EQU 30H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;按键控制寄存器
; .0=1表示有按键出现,不管怎样,一旦按键按下,那么执
; 行键盘扫描程序,那么这一位就被置位.在执行键盘扫描
; 程序以前,清除这一位.
; .1=1表示按键已经被处理,每次执行功能分析函数的时候
; 这一位被置位,一旦出现新的按键的时候,这一位被清除
; .2=1表示扫描按键定时已到,程序中的最小基本定时是
; 20MS(市电是50Hz),那么每当20MS定时已到,设置这一位
; 每当执行完毕键盘扫描程序,那么清除这一位.
; .3=1表示出现了合法按键.档出现按键,但是按键又没有
; 被处理的时候才设置这一位,当执行完按键扫描程序的时
; 候,清除这一位.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
MAIN_STATUS EQU 31H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;开关机状态寄存器
; .0=1加热状态,开机加热的默认状态是加热状态,按C/T
; 按键可以切换加热和保温状态
; .1=1保温状态标志.
; .2=1开机使能,只有在关机状态下,按ON/OFF按键,才能
; 设置这一位;在开机状态下,按ON/OFF按键或者,其他需
; 要关机的条件满足时,清除这一位.
; .3=1保温达到设定值标志,如果保温达到设定值,置位
; 这个标志,如果温度没有达到,清除这一位标志
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
PWM_STATUS EQU 32H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;PWM控制寄存器
; .0=1软启动结束标志,每次IGBT重新开启的时候都需要
; 清除这一位,而每当软启动结束的时候设置这一位
; .1=1IGBT允许开启标志
; .2=1需要过零处理标志,当系统应该开启IGBT的时候,
; 但是又没有开启IGBT,则需要设置这一位,进行过零处理
; .3=1软启动定时已到标志
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
COMPARE_STATUS EQU 33H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;比较状态寄存器
; .0=1两个数比较,前者等于后者
; .1=1两个数比较,前者小于后者
; .2=1两个数比较,前者大于后者
; .3=1
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
HEAT_POINT EQU 34H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;火力点状态寄存器:
; 系统一共分为10档火力描述如下:
; 00H,表示没有按下火力按键,不进入工作模式
; 01H,表示第一档火力,它是500W断续加热,加热3S停3S
; 02H,表示第二档火力,它是500W连续加热
; 03H,表示第三档火力,它是650W连续加热
; 04H,表示第四档火力,它是800W连续加热
; 05H,表示第五档火力,它是1000W连续加热
; 06H,表示第六档火力,它是1200W连续加热
; 07H,表示第七档火力,它是1400W连续加热
; 08H,表示第八档火力,它是1600W连续加热
; 09H,表示第九档火力,它是1800W连续加热
; 0AH,表示第十档火力,它是2000W连续加热
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
KEEP_TEMP EQU 35H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;保温寄存器:
; 系统一共分为9档保温,保温时候的火力是根据当前温
; 度,和设定温度之间的差值来确定的,如果相差越大,那
; 么,加热的火力越大
; 01H,表示第一档保温,50度
; 02H,表示第二档保温,70度
; 03H,表示第三档保温,90度
; 04H,表示第四档保温,120度
; 05H,表示第五档保温,140度
; 06H,表示第六档保温,160度
; 07H,表示第七档保温,180度
; 08H,表示第八档保温,200度
; 09H,表示第九档保温,240度
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
WRONG EQU 36H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;故障状态寄存器:
; 主要是纪录系统运行过程中可能出现的故障状态
; 0001B,表示电压故障,当电压高于260V或者低于170V的
; 时候设置这一位,当电压低于250V并且高于180V清除者
; 一位.
; 0010B,表示无锅故障,当检测到电流小于一定值时,认定
; 无锅,设置这一位.当探锅脉冲个数小于5个的时候认为
; 有锅,清除这一位.
; 0100B,表示IGBT温度故障,当IGBT温度高于100度的时候
; 设置这一位,当IGBT温度低于90度的时候清除这一位.
; 1000B,表示锅底温度故障,当锅底温度高于260度的时候
; 设置这一位,当锅底温度低于240度的时候清除这一位.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
FAULT_STATUS EQU 37H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;系统错误寄存器:
; 这个寄存器主要纪录由于系统硬件引起的故障状态.
; 01H表示IGBT热敏电阻断路
; 02H表示IGBT热敏电阻短路
; 03H表示锅底热敏电阻断路
; 04H表示锅底热敏电阻短路
; 05H表示风扇失效
; 06H表示振荡回路断路
; 07H~0FH保留
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
BUZZER_STATUS EQU 38H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;蜂鸣器状态寄存器:
; 0001B表示蜂鸣器处于鸣叫状态
; 0010B表示蜂鸣器鸣叫时间已到(160MS)
; 0100B保留
; 1000B不能使用
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
FILTER_STATUS EQU 38H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;滤波器状态寄存器:
; 0001B不能使用
; 0010B不能使用
; 0100B不能使用
; 1000B=时钟信号有效
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
FAN_STATUS EQU 39H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;风扇状态寄存器:
; 主要纪录风扇的工作状态
; 0001B=需要风扇30秒延时
; 0010B=30秒风扇延时定时已到
; 0100B=风扇失效
; 1000B=保留
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
DCONT_STATUS EQU 3AH
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;断续加热状态寄存器:
; 0001B=标志电磁炉处于断续加热状态
; 0010B=标志处于断续加热加热状态
; 0100B=1秒定时已到
; 1000B=保留
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
RUN_COUNTER EQU 3BH
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;纪录程序循环次数计数器:
; 在发出探锅脉冲后,纪录程序循环15次后,检测脉冲个
; 数,判断是否有锅
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
PLUSE_COUNTER EQU 3CH
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;探锅脉冲计数器:
; 发出探锅脉冲后,纪录振荡回路出现的振荡次数,小于5
; 次,认为有锅,否则认为无锅
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
PLUSE_STATUS EQU 3DH
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;探锅脉冲状态寄存器:
; 0001B=发送探锅脉冲定时开始标志
; 0010B=定时已到标志
; 0100B=保留
; 1000B=保留
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
BUTTON_BAK1_L EQU 3EH
BUTTON_BAK1_M EQU 40H
BUTTON_BAK1_H EQU 41H
BUTTON_BAK2_L EQU 3FH
BUTTON_BAK2_M EQU 42H
BUTTON_BAK2_H EQU 43H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;按键备份寄存器:备份出现的按键.BUTTON_BAK1_*备份前一次
;出现的按键情况.BUTTON_BAK2_*备份后一次出现的按键情况
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
TEMP EQU 44H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;暂存寄存器
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
KEY_CN EQU 45H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;按键次数计数器,只有当连续8次出现按键的时候才认为出现按
;键
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
SHOW_STATUS EQU 46H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;显示状态寄存器:
; 0001B=数码管显示使能,显示定时数据
; 0010B=保留
; 0100B=20ms定时已到标志
; 1000B=高或低标志;1=高,0=低
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
AUTO_STATUS EQU 47H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;自动功能状态寄存器:
; 01H=开水
; 02H=褒粥
; 03H=米饭
; 04H=炒菜
; 05H=烧烤
; 06H=温奶
; 07H=火锅
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
SNUM0 EQU 48H
SNUM1 EQU 49H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;按键定时计数器:用于纪录按键定时的时间.SNUM0是个位定时
;SNUM1是十位定时
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
SHOW_ORDER EQU 4AH
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;显示顺序寄存器
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
TEMP0 EQU 4BH
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;暂存寄存器
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
TIME_STATUS EQU 4CH
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;定时状态寄存器:
; 0001B=5秒定时已到,如果5秒内没有出现火力按键,那
; 么关闭显示
; 0010B=1秒定时已到标志,这1秒内不检测电流
; 0100B=5秒定时已到标志,这5秒内检测比较小的值
; 1000B=1分钟定时已到标志
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
EVEN_STATUS EQU 4DH
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;平均值状态寄存器:
; 0001B=锅底温度平均值求取完毕
; 0010B=IGBT温度平均值求取完毕
; 0100B=电罔电压平均值求取完毕
; 1000B=电流平均值求取完毕
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
COMP1 EQU 4EH
COMP2 EQU 4FH
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;4位比较寄存器:
; COMP1存储被比较数,COMP2存储比较数
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
EVEN_C1 EQU 50H
EVEN_C2 EQU 51H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;256次AD平均值计数器:
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
PSTA1 EQU 52H
PSTA2 EQU 53H
PSTA3 EQU 54H
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;程序运行备份寄存器:
; 纪录当前程序的运行入口,如果程序非法重起,那么程
; 序将不初始化而直接跳回程序
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -