📄 mrv.c
字号:
//P86 P7 g g g g g g g
//P85 P6 f f f f f f f
//P84 P1 j j j j j j j
//P83 P2 a a a a a a a
//P82 P3 h h h h h h h
//P81 P4 k k k k k k k
//P80 P5 b b b b b b b
/**** 本身所处的模式: MODE ****/
// =============
#define M_STANDBY 0x00 // 指系统刚上电时的状态:待机状态
#define M_RTC 0x01 // 实时显示模式,显示内容为时间,带冒号
#define M_HELP 0x02 // 帮助显示模式,显示用户所需要的帮助信息
#define M_QUICK 0x02 // 快速烹调模式
#define M_COOKING 0x03 // 烹调倒计时模式
#define M_DIGITCOOK 0x04 // 在实时模式下按数字键进入此模式,在此模式下可按开始及火力键设置
#define M_ADJPWRLVL 0x05 // 在直接输入数字时按此键进入烹调微波强度的调整过程中,之后可按开始
#define M_HLPLOCKON 0x07 // 在帮助菜单里,设定锁定模式
#define M_HLPLOCKOFF 0x08 // 系统处于的锁定模式
#define M_SNDONOFF 0x09 // 设定声音开或声音关的模式
#define M_TMRCLK 0x0a // 进入设定定时器或时钟的显示模式
#define M_TMRSET 0x0b // 定时器设定模式
#define M_CLKSET 0x0c // 时钟设定模式
#define M_TMROK 0x0d // 定时器时间已设定模式
#define M_CLKOK 0x0e // 时钟时间已设定模式
// 以下这一小组模式在使用时会连著用,所以定义上不可以分开,且记!!!
#define M_POPCORN1 0x0f // 按一次POPCORN键的处理程序
#define M_POPCORN2 0x10 // 按两次POPCORN键的处理程序,在上面基础上再按一次键则到本状态
#define M_BAKEPOTATO 0x11 //
#define M_REHEAT1 0x12 //
#define M_REHEAT2 0x13 //
#define M_REHEAT3 0x14 //
#define M_FRESHVEG1 0x15 //
#define M_FRESHVEG2 0x16 //
#define M_FROZENENTREES 0x17 //
#define M_FROZENVEG 0x18 //
#define M_GROUNDMEAT 0x19 //
#define M_RICE 0x1a //
#define M_FISHSEAFOOD 0x1b //
#define M_COMPUCOOK 0x1e //
#define M_COMPUDEF 0x1f //
// 以下这一小组模式在使用时会连著用,所以定义上不可以分开,且记!!!
#define M_FRESHROLLMUFFIN 0x20 //
#define M_FROZENROLLMUFFIN 0x21 //
#define M_HOTCEREAL 0x22 //
#define M_TURKEYBREAST 0x23 //
#define M_PORKLOIN 0x24 //
#define M_MEATLOAF 0x25 //
#define M_COMPUGROUNDMEAT 0x26 //
#define M_STEAKCHOPSORFISH 0x27 //
#define M_CHICKENPIECES 0x28 //
#define M_ROAST 0x29 //
#define M_CASSEROLE 0x2a //
#define M_SOUP 0x2b //
#define M_FRMTIME 0x2c //
/**** 程序里所用到的其它各种常量定义 ****/
#define MAXHOUR12 0x13 // 12小时制时小时的溢出值限,该值不在正常值内,已溢出
#define MAXHOUR24 0x24 // 24小时制时小时的溢出值限,该值不在正常值内,已溢出
#define MAXMINUTE 0x60 // 分钟所能够取到的溢出值限,该值不在正常值内,已溢出
#define MAXSECOND 0x60 // 秒钟所能够取到的溢出值限,该值不在正常值内,已溢出
#define BTTU 0.015625 // !!!!!!定义基本时钟单位的值!!!!!!
#define DIV62MS 0.0625/BTTU // 62.5毫秒是15.625毫秒的倍数,注意不能直接引用
#define DIV1S 1/BTTU // 1秒是15.625毫秒的倍数,注意不能直接引用
#define MC5S 5/DIV62MS/BTTU // 基于15.625毫秒分频分出的62.5毫秒的时间单位,可直接引用
#define MC8S 8/DIV1S/BTTU // 基于15.625毫秒分频分出的1秒的时间单位
#define MC00 0x00 // 00/0.0625 = 00 = 0x00
#define T500MS 0.5/DIV62MS/BTTU// 持续按键的0.5秒再处理计时
#define T2S 2/DIV62MS/BTTU // 持续按键的两秒计时
#define KHDNO 0x00 // 没有按住键不放
#define KHDONCE 0x01 // 按住键不放时只处理一次
#define KHDMORE 0x02 // 按住键不放时不停处理,直至松开手为止
#define KHDCOMBIN 0x03 // 同时按住两个键过一段时间当第三个键处理
/**** 跟显示有关的常量定义 ****/
/*** 句子分布定义 ***/
#define S_TOSHIBATESZTCEMICHAELWANG 0x00 // " TOSHIBA TESZ MICHAEL WANG "
#define S_GOFORTHEBESTGOFORTHEDREAM 0x01 // " GO FOR THE BEST GO FOR THE DREAM "
#define S_A PASSION FOR GROWTH 0x02 // " A PASSION FOR GROWTH "
#define S_TOSETKITCHENPRESS1TOSETCLOCKP 0x01 // " TO SET KITCHEN PRESS 1 TO SET CLOCK PRESS 2 "
#define S_ENTERTIME 0x02 // " ENTER TIME "
#define S_PRESSSTART 0x05 // " PRESS START "
#define S_LOCKPRESS1SOUNDONOFFPRESS2AUT 0x06 // " LOCK PRESS 1 SOUND ON/OFF PRESS 2 AUTO START PRESS 3 LAN- GUAGE PRESS 4 "
#define S_TOSETLOCKONPRESSSTART 0x07 // " TO SET LOCK ON PRESS START "
#define S_TOTURNOFFSOUNDPRESSCLEAR 0x08 // " TO TURN OFF SOUND PRESS CLEAR "
#define S_TOTURNONSOUNDPRESSSTART 0x0B // " TO TURN ON SOUND PRESS START "
#define S_LOCKON 0x0C // " LOCK ON "
#define S_TOCANCELLOCKPRESSCLEAR 0x0D // " TO CANCEL LOCK PRESS CLEAR "
#define S_SOUNDOFF 0x0E // " SOUND OFF "
#define S_SOUNDON 0x0F // " SOUND ON "
#define S_PRESSSTARTORPOWERLEVEL 0x16 // " PRESS START OR POWER LEVEL "
#define S_PRESSPOWERLEVELNUMBER 0x17 // " PRESS POWER LEVEL NUMBER "
#define S_TURNTABLEOFF 0x18 // " TURN TABLE OFF "
#define S_TURNTABLEON 0x19 // " TURN TABLE ON "
#define S_REGULARPRESSAGAINFORSNACK 0x27 // " REGULAR PRESS AGAIN FOR SNACK "
#define S_SELECTFOODNUMBERSEELABEL 0x3A // " SELECT FOOD NUMBER SEE LABEL "
#define S_FRESHROLLHOWMANYPRESSNUMBER 0x3B // " FRESH ROLL HOW MANY PRESS NUMBER "
#define S_LOCKOFF 0x74 // " LOCK OFF "
/*** 单词表格分布定义,句子由单词组成 ***/
#define BLANK 0x00 // " "
#define SENTENSEEND 0xff
/*** 数字及字母分布定义,单词由字母组成的字母的定义图 ***/
#define CHAR_0 0x00 // " 0 "
#define CHAR_1 0x01 // " 1 "
#define CHAR_2 0x02 // " 2 "
#define CHAR_3 0x03 // " 3 "
#define CHAR_4 0x04 // " 4 "
#define CHAR_5 0x05 // " 5 "
#define CHAR_6 0x06 // " 6 "
#define CHAR_7 0x07 // " 7 "
#define CHAR_8 0x08 // " 8 "
#define CHAR_9 0x09 // " 9 "
#define CHAR_ 0x0a // 不显示
#define CHAR_A 0x0b // " A "
#define CHAR_B 0x0c // " B "
#define CHAR_C 0x0d // " C "
#define CHAR_D 0x0e // " D "
#define CHAR_E 0x0f // " E "
#define CHAR_F 0x10 // " F "
#define CHAR_G 0x11 // " G "
#define CHAR_H 0x12 // " H "
#define CHAR_I 0x13 // " I "
#define CHAR_J 0x14 // " J "
#define CHAR_K 0x15 // " K "
#define CHAR_L 0x16 // " L "
#define CHAR_M 0x17 // " M "
#define CHAR_N 0x18 // " N "
#define CHAR_O 0x19 // " O "
#define CHAR_P 0x1a // " P "
#define CHAR_Q 0x1b // " Q "
#define CHAR_R 0x1c // " R "
#define CHAR_S 0x1d // " S "
#define CHAR_T 0x1e // " T "
#define CHAR_U 0x1f // " U "
#define CHAR_V 0x20 // " V "
#define CHAR_W 0x21 // " W "
#define CHAR_X 0x22 // " X "
#define CHAR_Y 0x23 // " Y "
#define CHAR_Z 0x24 // " Z "
#define CHAR_XG 0x25 // " / "
#define CHAR__ 0x26 // " - "
#define WORDEND 0xff
/************************************************/
/* CPU内部功能配置的定义 */
/************************************************/
/**** 系统配置所用的常量定义 ****/
/*** 对于870C来说,没有寄存器区,可从0x0040开始使用,而870则0040~0047用于寄存器WA,HL,DE(RBS=0) ***/
/*** 对于870C的堆栈不必要少8个单元,对于870从安全角度上来说,最好少8个单元用于安全 ***/
// =============
#define CRAMMIN 0x0040 // 虽然可以运用的RAM从0040开始,但0040~0047用于寄存器WA,HL,DE(RBS=0)
#define CRAMMAX 0x023F // 根据每种CPU的类型具体确定结束的值,为堆栈少8个
#define INTVECTOR 0xFFE0 // 中断向量表的起始地址
#define SINGLECLOCK 0x80 // 选择单时钟模式
#define WDOGEN 0x0B // 启动看门狗功能,开始计数,时间设为1秒钟长度
#define WDOGCLR 0x4E // 清掉看门狗计数器
/************************************************/
/* RAM 分配 */
/************************************************/
/**** 下面定义的是标志,同管脚一样,在.H文件里已经定义了 ****/
/*** 但这里是用作具体用途的定义 ****/
/*** 每一个标志单元共有8位,一共有16个单元,具体地址从0x0050~0x005f,曾改动了.LCF文件 ***/
#define F_WQTest FLAG00 // 专门用于程序测试时的临时标志,主要用管脚来处理
#define F_BTTUnit FLAG01 // 程序系统所用到的基本时钟单位,一定要考虑误差的影响
#define F_KeyAction FLAG02 // 判断有无按键产生,没有按键及按住键不放时都不再处理按键,标志也都为0
#define F_LockOn FLAG03 // 系统锁定标志,为1时除了锁定键以外,不响应任何按键功能
#define F_RTCEn FLAG04 // 时钟计时使能,为1开始计时功能,为0取消计时功能
#define F_62ms FLAG10 // 根据基本时钟中断算出的62.5毫秒的中断
#define F_1s FLAG11 // 根据基本时钟中断算出的1秒的中断
#define F_ADEn FLAG12 // 启动A/D检测功能使能
#define F_Melody FLAG20 // 用于表示应该发电子音乐,为1时发音
#define F_BuzEn FLAG21 // 蜂鸣器选项,为1蜂鸣器才可能响,为0关闭蜂鸣器
#define F_DorPrev FLAG22 // 读门状态时的缓存标志,根据门管脚的状态决定此标志
#define F_DorDeb FLAG23 // 读门状态时的防抖动标志,两次读到相同确定门状态
#define F_DoorStatus FLAG24 // 表示门的状态,0为打开门,1为关住门的
#define F_DSBufEn FLAG25 // 为1将当前显示句子备份,显示特别指定的语句
#define F_Menu FLAG30 // 菜单模式,为1表示选中的是菜单模式,全自动的
#define F_CookEn FLAG31 // 如果为1,表示微波可以开始输出,如果为0,即使在烹模式,也不能工作
#define F_TimerEn FLAG32 // 为1表明设定了定时器
#define F_Def FLAG33 // 解冻设定
#define F_Help FLAG34 // 帮助,屏幕显示提示语句
#define F_TurnStatus FLAG35 // 表示转盘的状态,为1才可能转动,为0绝对不转动
#define F_LBKG FLAG36 // 英磅和千克的选项,1为千克,0为英磅
#define F_PAFlg FLAG40 //
#define F_PBFlg FLAG41 //
#define F_PABuf FLAG42 //
#define F_PBBuf FLAG43 //
#define F_PBOld FLAG44 //
/************************************************/
/* RAM区的定义,从0x0040开始 */
/************************************************/
/**** 这里的RAM是从0x0040开始在0x00ff前结束的 ****/
/*** 注意一定要在0x00ff时结束 ***/
/*** 注意根据实验结果,[16]中的16是指这个数组一共有16个而不是17个 ***/
/*** 系统所要用到的几个特别重要的全程存储单元 ***/
unsigned char __tiny R_SMode; // 用于表示该系统所处的模式,由它决定其它状态及变量反应方式
unsigned char __tiny R_SStep; // 该系统处于的某种模式的第几步
/*** 系统所用的存储单元 ***/
unsigned char __tiny R_BTSlot; // 根据基本时钟中断的时间,通过一个slot得到各种时钟单位
unsigned char __tiny R_Pointer; // 系统指针,每次使用之前初始化:键盘,显示
unsigned char __tiny R_Temp[2]; // 主程序里暂时用于计算等等的暂存单元,用完即无效,任何程序均可调用
unsigned char __tiny R_KeyBuf; // 用作按键的去抖动
unsigned char __tiny R_CurKey; // 当前按键值
unsigned char __tiny R_KHType; // 有无按住的标志,按住不放时为1,进入模式预设
unsigned char __tiny R_CntKHF; // 按住键不处理计时,不同的按住不放时间也有可能不一样
unsigned char __tiny R_CurSecond; // 实时计时秒
unsigned char __tiny R_CurMinute; // 实时计时分
unsigned char __tiny R_CurHour; // 实时计时小时
unsigned char __tiny R_MCCnt; // 模式转换的计时计数器,每次按键清零
unsigned char __tiny R_BPType; // 具体是哪种Bep方式发声
unsigned char __tiny R_BPCounter; // 用于在BEP发声时的计数计时
unsigned char __tiny R_BPOn; // 蜂鸣器发声的声音时间长度
unsigned char __tiny R_BPOff; // 蜂鸣器发声的没有声音的时间长度
unsigned char __tiny R_MPointer; // 电子音乐的指针,指示当前电子音乐所演到的位置
unsigned char __tiny R_SPointer; // 音阶的指针,指示当前音阶的位置
unsigned char __tiny R_SLength; // 每个音阶的长度
/*** 以下专门用于显示驱动程式里面,专用 ***/
unsigned char __tiny R_UpdDPointer; // 显示所用的指针,指示应更换的DRAM表格等等,是临时性的但专用于显示
unsigned char __tiny R_Digit[7]; // 显示屏的7个字符
unsigned int __tiny R_DispBuf[8]; // 这16个RAM用于显示的数据缓冲区存储所用
unsigned char __tiny R_SPointer; // 显示哪一句语句的指针
unsigned char __tiny R_WPointer; // 在句子里的哪一个单词
unsigned int __tiny R_STBLPointer; // 专用句子作查表时的指针,要做到进程序时启动,退出时一定不再用
unsigned int __tiny R_WTBLPointer; // 专用单词作查表时的指针,要做到进程序时启动,退出时一定不再用
unsigned char __tiny R_SWFCounter; // 句子和单词闪烁的计数
unsigned char __tiny R_SPBuf; // 当显示特别句子时用来备份当前显示的句子指针
unsigned char __tiny R_SVConnectCnt; // 专门用于当一些特别显示及后面连有句子时的显示
unsigned char __tiny R_DDCom; // 专门用于HT16215芯片控制时的命令发射
unsigned char __tiny R_VFTBuf[10]; // 专门用于HT16215芯片控制时的命令发射
/*** 以下专门用于定时器计时,专用 ***/
unsigned char __tiny R_TMRSecond; // 定时器计时秒
unsigned char __tiny R_TMRMinute; // 定时器计时分
unsigned char __tiny R_TMRHour; // 定时器计时小时
/**** 以下专门用于烹调过程中的资料,在烹调过程过后全部清除 ****/
/*** 以下专门用于微波输出,专用 ***/
unsigned char __tiny R_VPCPointer; // 表示处于微波处理的步骤,0为读表,1为打开微波,2为关闭微波
unsigned char __tiny R_VPCLevel; // 选定的微波强度,0为常关,0A为常开
unsigned char __tiny R_VPCOnTime; // 微波开的时间,为0表示常关
unsigned char __tiny R_VPCOffTime; // 微波关的时间,为0表示常开
/*** 以下专门用于烹调计时,专用 ***/
unsigned char __tiny R_CookSecond; // 烹调计时秒
unsigned char __tiny R_CookMinute; // 烹调计时分
unsigned char __tiny R_CookHour; // 烹调计时小时
/*** 菜单烹调资料储存单元,专用 ***/
unsigned char __tiny R_CookData[8]; // 烹调资料
unsigned char __tiny R_MenuMaxTimL; // 烹调的最大时间存储单元
unsigned char __tiny R_MenuMaxTimH; // 烹调的最大时间存储单元
unsigned char __tiny R_LowWeight; // 最低重量
unsigned char __tiny R_HighWeight; // 最高重量
unsigned char __tiny R_CompuPointer; // 用于作COMPU COOK及COMPU DEF处理时用
unsigned char __tiny R_FenShu; // COMPU里的份数烹调
unsigned int __tiny R_CalBuf; // 计算里的缓冲区,16位的
unsigned char __tiny R_LightStatus; // 用于表示灯的状态,0为关,1为高亮,2为低亮
unsigned char __tiny R_FanStatus; // 用于表示风的状态,0为关,1为高风,2为低风
unsigned char __tiny R_IncDec; // 当前的旋扭码的值,1表示正旋,2表示反旋
unsigned char __tiny R_ADNew; // 新读到的A/D值
unsigned char __tiny R_Temperture; // 温度值
unsigned char __tiny R_ADBuf[8]; // 温度值
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -