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

📄 mrv.c

📁 一款C语言编写的小家电程序
💻 C
📖 第 1 页 / 共 5 页
字号:
 //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 + -