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

📄 mrv.c

📁 一款C语言编写的小家电程序
💻 C
📖 第 1 页 / 共 5 页
字号:
/************************************************/
/*	格力商用空调之中央空调程序		*/
/*						*/
/*	型号:	MRV				*/
/*	版本:	1.0				*/
/*						*/
/*	CPU:	Toshiba 8-bit TMP86C829		*/
/*	时钟:	8MHz,32.768KHz			*/
/*						*/
/*	作者:	王黔	日期:	01/12/2002	*/
/************************************************/



/**** 程序的结构资源及分配 ****/
 /*** 8位单片微控器TLCS-870/C系列(编程有132种共731条基本指令) ***/
 /*** 19个中断源(外部中断有5个,内部中断有14个) ***/
 /*** 18位的计时/计数器1个,可用于:Timer,事件计数,脉冲宽度测量,频率测量模式 ***/
 /*** 8位的计时/计数器4个,可用于:Timer,事件计数,PWM输出,PDO(可编程分频输出),PPG输出模式 ***/
 /*** 基本时钟中断 ***/
 /*** 看门狗:中断/复位输出(可编程) ***/
 /*** 总共39个I/O口,其中24个口也可用于LCD显示的SEG口 ***/
 /*** 串行界面输出:8位的UART/SIO1个 ***/
 /*** 10位的A/D转换输入8个通道 ***/
 /*** 四个按键可唤醒管脚 ***/
 /*** LCD驱动/控制:显示内存区,32SEG*4COM,可通过编程选1/4,1/3,1/2duties或静态驱动,可调控LCD显示亮度 ***/
 /*** 双时钟运作:可选单/双时钟控制 ***/
 /*** 9种节电模式:STOP;STOP1,2;IDLE0,1,2;SLEEP0,1,2 ***/
 /*** 电压运行范围宽:1.8~5.5V,4.2M/32.768K;2.7~5.5,8M/32.768K;4.5~5.5,16M/32.768K ***/

 /*** CPU:0x0000 ~ 0xFFFF ***/
 /*** SFR:包括I/O口,资源控制,资源状态,系统控制,中断控制,程序状态字 ***/
 /*** RAM:包括MEMORY及堆栈 ***/
 /*** DBR:资源控制,资源状态,LCD显示内存 ***/
 /*** ROM:包括程序区及向量表 ***/


/**** 系统所用到的资源 ****/
 /*** 程序包括一个主流程,一个中断 ***/
 /*** 基本中断用于计时及基本时间单位 ***/


/**** 程序里各种写法的定义 ****/
 /*** 每种分块是三行,块中的第一个一行,块中不同的两个二行 ***/
 /*** 程序起始地址名:用startup ***/
 /*** 程序的中断:未用的中断INT_Dummy,已用的则前面为INT_,后面加中断名,字母全部大写 ***/
 /*** 程序的函数名:一律用小写字母,并且都不用下划线,除非很多是同一类的程序 ***/
 /*** 程序的常量:全部大写 ***/
 /*** 表格名字:表格前面加TBL_,后面所跟的每个单词也是第一个字母大写其它字母小写 ***/
 /*** 管脚定义:前面加PIN_,后面的每个单词的第一个字母大写,如果定义一组键盘则PIN后没有短横 ***/
 /*** 标志定义:前面加F_,后面每个单词的第一个字母大写 ***/
 /*** RAM定义:前面加R_,后面每个单词的第一个字母大写 ***/
 /*** 大括号的用法:对只有一层,左括号可不另起一行,甚至右括号也可在同一行,但一层以上一定另起 ***/
 /*** if如果只是一两句语句,可写同一行,else也是一样 ***/



/************************************************/
/*	预包含文件的定义			*/
/*	两种写法:""是当前目录,<>是预设目录	*/
/************************************************/
#include "IOSFR86.h"		// 系统输入/输出口的定义,具体管脚具体定义,系统的特别控制寄存器定义
#include "RAM86.h"		// 此处用于RAM的定义



/************************************************/
/*	软件更改记录及清单			*/
/************************************************/



/************************************************/
/*	具体程序中管脚分配及定义		*/
/************************************************/
//
//
//							 QFP64
//								P  P  P  P  P  P  P  P  P
//							  P  P  7  7  7  7  7  7  5  5  5
//							  7  7  5  4  3  2  1  0  7  6  5
//							  7  6	/  /  /  /  /  /  /  /  /
//							  /  /	S  S  S  S  S  S  S  S  S
//					   S  S  S  S  S  S  S  E  E  E  E  E  E  E  E  E
//					   E  E  E  E  E  E  E  G  G  G  G  G  G  G  G  G
//					   G  G  G  G  G  G  G  1  1  1  1  1  1  1  1  1
//					   3  4  5  6  7  8  9  0  1  2  3  4  5  6  7  8
//					 _________________________________________________
//					/ 48 47 46 45 44 43 42 41 40 39	38 37 36 35 34 33 \
//				       / 						   \
//			   SEG2	<---> |49						  32| <---> P54(SEG19)
//			   SEG1	<---> |50						  31| <---> P53(SEG20)
//			   SEG0	<---> |51						  30| <---> P52(SEG21)
//			   COM3	<---> |52						  29| <---> P51(SEG22)
//			   COM2	<---> |53						  28| <---> P50(SEG23)
//			   COM1	<---> |54						  27| <---> P17(SEG24//SCK)
//			   COM0	<---> |55						  26| <---> P16(SEG25/TXD/SO)
//			     V3	<---> |56						  25| <---> P15(SEG26/RXD/SI)
//			     V2	<---> |57						  24| <---> P14(SEG27/INT3)
//			     V1	<---> |58						  23| <---> P13(SEG28/INT2)
//			     C1	<---> |59						  22| <---> P12(SEG29/INT1)
//			     C0	<---> |60						  21| <---> P11(SEG30)
//		      (/DVO)P30	<---> |61						  20| <---> P10(SEG31)
//	   (/PWM3//PDO3/TC3)P31	<---> |62						  19| <---> AVDD
//   (/PWM4//PDO4//PPG4/TC4)P32	<---> |63						  18| <---> VAREF
//   (/PWM6//PDO6//PPG6/TC6)P33	<---> |64						  17| <---> P67(AIN7/STOP5)
//				       \ o						   /
//					\ 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 /
//					 -------------------------------------------------
//					   V  X  X  T  V  P  P  R  P  P  P  P  P  P  P  P
//					   S  I  O  E  D  2  2  E  2  6  6  6  6  6  6  6
//					   S  N  U  X  D  1  2  S  0  0  1  2  3  4  5  6
//						 T  T     /  /  E  /  /  /  /  /  /  /  /
//							  X  X  T  /  A  A  A  A  A  A  A
//							  T  T	   S  I  I  I  I  I  I  I
//							  I  O	   T  N  N  N  N  N  N  N
//							  N  U	   O  0  1  2  3  4  5  6
//							     T	   P	 /  /  /  /  /  /
//								   /	 E  E  I  S  S  S    
//								   /	 C  C  N  T  T  T
//								   I	 I  N  T  O  O  O
//								   N	 N  T  0  P  P  P
//								   T		  2  3  4
//								   5


/**** 这里用来具体定义管脚分配 ****/
 /*** 这些在RAM.H文件里其实已经定义,但具体用什么表示要在这里定义 ***/
#define	PIN_Test	OP20			// P20口作为软件测试口,用于测试时不停的将管脚反向
#define	PIN_KBOP0	OP21			// 键盘输出口,平时输出高电平,低电平按键有效
#define	PIN_KBOP1	OP22			// 键盘输出口,平时输出高电平,低电平按键有效

#define	PIN_Buz		OP30			// 此管脚用于蜂鸣器发音

#define	PIN_HIFANRL	OP50			// 两个继电器用于控制风速的选择,可以选择无风,高风,低风三种状态
#define	PIN_LOWFANRL	OP51			// 用一个存储单元表示状态,0为关,1为高,2为低
#define	PIN_LOHILIGHTRL	OP52			// 两个继电器用于控制亮度的选择,可以选择不开,高亮,低亮三种状态
#define	PIN_HILIGHTRL	OP53			// 用一个存储单元表示状态,0为关,1为高,2为低
#define	PIN_VPCRL	OP54			// 用于微波控制,低电平为打开微波输出
#define	PIN_TURNRL	OP55			// 用于转盘控制,低电平为转动
#define	PIN_MAINRL	OP56			// MAIN继电器
#define	PIN_DOOR	IP57			// 输入门的状态,L表示关门

#define	PIN_HTCS	P60			// I/O OP HT IC 片选
#define	PIN_HTCLK	P61			// I/O OP HT IC VFT驱动CLK
#define	PIN_HTDI	P62			// I/O OP HT IC 输入(即此MCU输出)
#define	PIN_ROTA	P63			// I/O IP
#define	PIN_ROTB	P64			// I/O IP

#define	PINKYIN		IP7			// 7口为键盘输入口
#define	PIN_KBIP0	IP70			// IP 用于键盘的输入口#0
#define	PIN_KBIP1	IP71			// IP 用于键盘的输入口#1
#define	PIN_KBIP2	IP72			// IP 用于键盘的输入口#2
#define	PIN_KBIP3	IP73			// IP 用于键盘的输入口#3
#define	PIN_KBIP4	IP74			// IP 用于键盘的输入口#4
#define	PIN_KBIP5	IP75			// IP 用于键盘的输入口#5
#define	PIN_KBIP6	IP76			// IP 用于键盘的输入口#6
#define	PIN_KBIP7	IP77			// IP 用于键盘的输入口#7



/************************************************/
/*	具体程序中所用到的常量的定义		*/
/************************************************/

/**** 键盘构造及键定义 ****/
 /*** 键盘的输入口用7口,输出口用2口,可在输入口上加上拉电阻,输出口则不必 ***/
 /*** 按照相应的位置进行定义 ***/
//	=============
//
//	--------------------------------------------------------------------------------
//	|输入/出|	P77	P76	P75	P74	P73	P72	P71	P70	|
//	--------------------------------------------------------------------------------
//	|  P21  |	K07	K06	K05	K04	K03	K02	K01	K00	|
//	|  P22	|	K15	K14	K13	K12	K11	K10	K09	K08	|
//	--------------------------------------------------------------------------------

 /*** 按键的情况下,高位是为1的,以此区别NOKEY和K00 ***/
 /*** 在此,客户需要根据其键盘相应的位址,确定键盘的定义 ***/
#define	NOKEY			0x00		// 没有按键

#define	KY_K00			0x01		// " K00 "
#define	KY_K01			0x02		// " K01 "
#define	KY_K02			0x03		// " K02 "
#define	KY_K03			0x04		// " K03 "
#define	KY_K04			0x05		// " K04 "
#define	KY_K05			0x06		// " K05 "
#define	KY_K06			0x07		// " K06 "
#define	KY_K07			0x08		// " K07 "

#define	KY_K08			0x09		// " K08 "
#define	KY_K09			0x10		// " K09 "
#define	KY_K10			0x11		// " K10 "
#define	KY_K11			0x12		// " K11 "
#define	KY_K12			0x13		// " K12 "
#define	KY_K13			0x14		// " K13 "
#define	KY_K14			0x15		// " K14 "
#define	KY_K15			0x16		// " K15 "

#define	KY_COMBIN		0x80		// " K11 & K12 "

#define	KY_TEMP1		0x01		// 
#define	KY_TEMP2		0x02		// 
#define	KY_TEMP3		0x03		// 
#define	KY_TEMP4		0x04		// 

#define	KY_LIGHTHILO		0x12		// " LIGHTHILO "
#define	KY_TURNTABLEONOFF	0x13		// " TURNTABLEONOFF "
#define	KY_POWERLEVEL		0x15		// " POWERLEVVEL "
#define	KY_COMPUCOOK		0x21		// " COMPUCOOK "
#define	KY_7			0x31		// " 7 "

#define	KY_FANHILO		0x23		// " FANHILO "
#define	KY_STARTTOUCHON		0x24		// " STARTTOUCHON "
#define	KY_STOPCLEAR		0x26		// " STOPCLEAR "
#define	KY_KITCHENTIMERCLOCK	0x32		// " KITCHENTIMERCLOCK "
#define	KY_4			0x42		// " 4 "

#define	KY_MINUTEPLUS		0x34		// " MINUTEPLUS "
#define	KY_COMPUDEFROST		0x35		// " COMPUDEFROST "
#define	KY_0			0x37		// " 0 "
#define	KY_8			0x43		// " 8 "
#define	KY_1			0x53		// " 1 "

#define	KY_9			0x45		// " 9 "
#define	KY_6			0x46		// " 6 "
#define	KY_5			0x48		// " 5 "
#define	KY_2			0x54		// " 2 "
#define	KY_GROUNDMEAT		0x64		// " GROUNDMEAT "

#define	KY_3			0x56		// " 3 "
#define	KY_CUSTOMHELP		0x57		// " CUSTOMHELP "
#define	KY_RICE			0x59		// " RICE "
#define	KY_FROZENENTREES	0x65		// " FROZENENTREES "
#define	KY_FRESHVEGETABLES	0x75		// " FRESHVEGETABLES "

#define	KY_FISHSEAFOOD		0x67		// " FISHSEAFOOD "
#define	KY_FROZENVEGETABLES	0x68		// " FROZENVEGETABLES "
#define	KY_REHEAT		0x6A		// " REHEAT "
#define	KY_BAKEDPOTATO		0x76		// " BAKEDPOTATO "
#define	KY_POPCORN		0x86		// " POPCORN "


/**** 显示屏构造及定义 ****/
//	=============
//SEGL	EQU	09H		; 这个数也包含在显示里面的
//
//	------------------------------------------------------------
//	|  管脚	|  S1   S2   S3   S4   S5   S6   S7   S8   S9   S10 |
//	------------------------------------------------------------
//	|  COM0	|						    |
//	|  COM1	|						    |
//	|  COM2	|						    |
//	|  COM3	|						    |
//	------------------------------------------------------------
//	NOTE:


/**** 显示的接口示意图 ****/
 //
 //                  a
 //		 ---------
 //		|\   |	 /|
 //	       f| \  |j	/ |b
 //		| h\ | /k |
 //		|   \|/	  |
 //		 -------g-
 //		|   /|\   |
 //	       e| r/ | \n |c
 //		| / p|	\ |
 //		|/   |	 \|
 //		 ---------
 //                  d
 //
 // ******** GAL_9928 VFD SEUQENCE
 //   -----    -----    -----    -----    -----    -----    -----
 //  |\ | /|  |\ | /|  |\ | /|  |\ | /|  |\ | /|  |\ | /|  |\ | /| 
 //  | \|/ |  | \|/ |  | \|/ |  | \|/ |  | \|/ |  | \|/ |  | \|/ |
 //   -----    -----    -----    -----    -----    -----    ----- 
 //  | /|\ |  | /|\ |  | /|\ |  | /|\ |  | /|\ |  | /|\ |  | /|\ |
 //  |/ | \|  |/ | \|  |/ | \|  |/ | \|  |/ | \|  |/ | \|  |/ | \|
 //   -----    -----    -----    -----    -----    -----    -----   
 //   VFD7G    VFD6G    VFD5G    VFD4G    VFD3G    VFD2G    VFD1G    VFD0G
 //
 //    P50      P51      P52	P53	 P54	  P55	   P56	    P57		(DATABOOK)
 //    G15      G14      G13	G12      G11      G10      G09	    G08		(DATABOOK)
 //   0F9E,9F  0F9C,9D  0F9A,9B  0F98,99  0F96,97  0F94,95  0F92,93  0F90,91	(DATABOOK)
 //
 //9928:
 //    7G       6G       5G       4G       3G       2G       1G
 //
 //
 // DISPBUFFER --> DBR
 //
 // DBUF+0,DBUF+1 -->	 0F9E,0F9F	7G
 // DBUF+2,DBUF+3 -->	 0F9C,0F9D	6G
 // DBUF+4,DBUF+5 -->	 0F9A,0F9B	5G
 // DBUF+6,DBUF+7 -->	 0F98,0F99	4G
 // DBUF+8,DBUF+9 -->	 0F96,0F97	3G
 // DBUF+A,DBUF+B -->	 0F94,0F95	2G
 // DBUF+C,DBUF+D -->	 0F92,0F93	1G
 // DBUF+E,DBUF+F -->		NO USE
 //
 // ********	DBUF0,1	DBUF2,3	DBUF4,5	DBUF6,7	DBUF8,9	DBUFA,B	DBUFC,D
 //		P50	P51	P52	P53	P54	P55	P56	P57(NO USE)
 //		7G	6G	5G	4G	3G	2G	1G
 //P77	P8	SENSOR	col2	COOK	LOCK	TIMER	DEF	HELP
 //P76	P9		col1					DOT
 //P75	P10	d	d	d	d	d	d	d
 //P74	P11	p	p	p	p	p	p	p
 //P73	P12	n	n	n	n	n	n	n
 //P72	P15	e	e	e	e	e	e	e
 //P71	P14	c	c	c	c	c	c	c
 //P70	P13	r	r	r	r	r	r	r
 //
 //P87(NO USE)

⌨️ 快捷键说明

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