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

📄 mymainedited.c

📁 这是符合国家一级汉字标准的汉字显示液晶模块程序
💻 C
字号:
#pragma	SFR		//special function register 	
#pragma NOP	
#pragma	DI		
#pragma	EI

/*
**PROJECT	= HDTV REMOTE CONTROL RECEPTION PROCESSING
**MODULE	= MyMainModi.c
**SHORT DESC.	= Main programme 
**DEVICE	= UPD789417
**VERSION	= 0.1
**DATE		= 03.07.2003
**LAST CHANGE	= -
*/

#include "MyDefine.h"
#include "Main.h"
#include "MyCommIO.h"
#include <string.h>

#define		s_g_LCDLEDCTL	P0.1		//set to 0 when initialized  																																																												 
#define		s_g_LCDPWRCTL	P0.2		//set to 0 when initialized
#define		s_g_RST		P9.0 

extern void InitReceive();
Uchar getASCII(Uchar dataCode);
Uchar getIrKey(Uchar dataCode);

extern bit g_btRPT;			//g_btRPT -- RePeaT(flag for repeat valid time)
extern bit g_btRMDTSET;		//g_btRMDTSET -- ReMote DaTa SET  

extern sreg Uchar g_TempRMDATA;

//2003-10-30 10:49
extern void GetDataFromReception();
extern void CommReceptionEnabled();
extern void InitializeCom();
extern void SetDataTransmitBuffer();

extern Uchar g_bufTransmit[SERIAL_BUF_TRANSMIT];		//Transmit buffer
extern sreg Uchar *g_p_bufTransmit;
extern Uchar g_keyValue; 

//extern Uchar hanZiByteAmount;     //2003-10-30 15:20
//2003-10-30 10:49

bit g_btReceptionEnd;
bit g_btTransmitStart;
bit btHanziEnable;
//2003-10-30 10:50

Uchar *ChinCharStr; 

//main programme for test 
int main(void)
{	
	Uchar keyValue;	
	
	Uchar keyASCIIValue;	
		
//	Uchar *ChinCharStr; 
		
	char pinYin[7];
	
	char pinYinVar[7] = {0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00};
		
	//Uchar pinYinStr[] = {"pinYin"};
	
	//Uchar charNum[] = {"70"};
	
	Uchar letterCnt = 0;
	
	DI();
	
	
	PCC = 0X00;	//fx:5.0MHz(0.2us)(Processor clock control register)	
	SCKM = 0x01;	//not use subsystem clock(Suboscillation mode register)	
	CSS = 0x00;	//use main system clock(Subclock contol register)
	      
	PM0 = 0xF0;	//PORT0 is all set to output mode--  
							//P0.0:LCD_E2; P0.1:LCD_Ctl; P0.2:LCD_VDD(WR_Ctl); 
							//P0.3:unused
							
	PM2 = 0x14;	//PORT2 is set to 00010100b. 
		  	      //output mode-P2.0:MAX_Power_ctl;P2.1:TXD;P2.3:unused;
		  	      //						P2.5:IIC_SCK;P2.6:IIC_SYNC;P2.7:unused; 	
		  	      //input mode-P2.2:RXD; P2.4/INTP0:Infrared Reception;		
		  	      	 		
	PM4 = 0xFF;	//PORT4 is set to input mode(switch DIP-8).	
	
	//PORT5.3 is set to output mode, and PORT5.0~PORT5.2 are unused.
	PM5 = 0xFC;		
	
	PM8 = 0x00;	//PORT8 is all set to output mode.
	
	//PORT9 including only PORT9.0, PORT9.1, PORT9.2 and PORT9.3, 
	//is all set to output mode.      
	PM9 = 0x00;	
	
	//PU00:PU0.0(PORT0)--doesn't use on-chip pull-up resistor;							
	//PU04:PU0.4(PORT4)--uses on-chip pull-up resistor. 	   
	PU0 = 0x10;		
	
	//input mode-P2.2:RXD; P2.4/INTP0:Infrared Reception.  			
	//The others are output mode. P2.5, P2.6 用外部上拉(不用内部的上拉).
	PU1 = 0x14;	
		
	PU2 = 0x00;	//PORT8&PORT9 don't use on-chip pull-up resistor
		
	LCDM0.7 = 0x00;	//LCD Display OFF(LCD Display Mode Register)
		
	LPS0 = 0x00;	//PORT8 and PORT9 are used as ports
	
	ADCS0 = 0x00;	//disable AD conversion 

	PIF0 = 0;		 
	PMK0 = 1;	//disable INTP0

	//注意须加入看门狗定时器:1、启动看门狗定时器;2、每隔一段程序看门狗清零。
	
	
/*	
	TMC02 = TMC02_1PT6US_D_CLKSEL;	//2^3/fx(1.6us) operation disabled
	CR02 = CR02_100us;	//0.1ms(100us) interval time
	
	TMIF02 = 0;	//clear Interrupt Request Flag 
	TMMK02 = 1; 	//INTTM2 disabled
*/
	
	CR01 = 0x1c;	//Resolution -- 51.2 us
	TMC01 =	0x82;	//8bitTimer1 is set to 1.5ms
	
	CR02 = 0x74;	//Resolution -- 25.6 us  03-7-3 15:12
	TMC02 =	0x82;	//8bitTimer2 is set to 3ms and disabled.
	
	//2003-9-25 14:26
	TMMK01 = 0; 	// Enable INTTM1 
	
	TMMK02 = 0; 	// Enable INTTM2
	
	//IR = P2.4;		//the bit  for remote control infrared ray reception
	
  InitReceive();

	InitializeCom();
	
	s_g_LCDPWRCTL = 1;
	s_g_LCDLEDCTL = 1;	
	
  EI();
 
 	/*
  //########2003-9-26 13:22 	
  pinYinVar[0] = 0x62;		//"b"
  pinYinVar[1] = 0x69;		//"i"
  pinYinVar[2] = 0x6e;		//"n"
  //########
  */
  
//  pinYinVar[3] = 0x00;
  
  /*
  //######2003-9-26 13:22
  strcpy(pinYin,pinYinVar);
  //######
  */
  
  
  
//  strcpy(pinYin,"bin");
  
  /*
  //#########
	ChinCharStr = py_ime(pinYin);	
	//
	*/
  	
  s_g_RST	= 0;
	s_g_RST	= 1;		//置为正常状态
	
	//s_g_RW = 0;

	LcdReset();
	
	LcdWriteCommandU(0x0d, 1);	//开显示,开游标		
	LcdWriteCommandD(0x0c, 1);			
	
	//A Chinese character or two ASCII are displayed in one bit address.
	LcdWriteCommandU(0x80,1);	//DDRAM bit address --(80H~9FH)
	
	/*
	//####
 	//Display English character --"pinYin" at (0,0).2003-9-25 13:30
	DisplayStr(0,0,pinYinStr); //2003-9-25 13:33
	
  DisplayStr(15,0,charNum);
	
 	DisplayStr(0,1,ChinCharStr);//Display Chinese character string indexed
  //####
  */
	g_btTransmitStart = 1;       //Test????
	 		
	while(TRUE)
	{			
		if (letterCnt >= 7)
		{
			letterCnt = 0;
		}	
		
		//keysIntervalTime
		
		if(g_btRMDTSET)	      //g_btRMDTSET -- ReMote DaTa SET 
		{
			//03-7-17 14:44
			//g_btRMDTSET = 0;	

			/*
			if(s_btTM02Start)     //TM02 starts to time?
			{
				s_btTM02Start = 0;
				
				TMC02 =	0x82;	   //8bitTimer2 is set to 2ms and eabled.				
			}
					
			if(g_btRPT)		      //g_btRPT -- RePeaT(flag for repeat valid time)
			{
				//Repeat processing     ????????
			}
			else
			{
				//Input present processing 应该在此开始计时
			}
			*/
			//03-7-17 14:44
			g_btRMDTSET = 0;	
			
			//keyValue = getIrKey(g_TempRMDATA);
			//处理接收过来的键值,未完,还有很多!!!!
			
			//2003-9-25 11:47
			keyValue = getIrKey(g_TempRMDATA);	
			
			keyASCIIValue = getASCII(keyValue) ;	
			
			pinYinVar[letterCnt++] = keyASCIIValue; 			
			
			strcpy(pinYin,pinYinVar);			//可以只用pinYinVar吧?2003-11-3 15:09
			
			ChinCharStr = py_ime(pinYin);		
			
			btHanziEnable = 1;
						
			//DisplayStr(0,0,pinYinStr); //2003-9-25 13:33
	
  		//DisplayStr(15,0,charNum);
	
			//Display Chinese character string indexed
 			DisplayStr(0,0,ChinCharStr);	 			 				
		}
		else
		{
			if(!g_btRPT)
			{
				//没有按键输入时该处理什么?No Input present processing      ???????
			}
		}
		
		//2003-10-30 11:02
	  if(g_btReceptionEnd) 		
		{										 
			NOP();
		  NOP();
		  
		  g_btReceptionEnd = 0;
		  
		  //hanZiByteAmount = 0;			//2003-10-30 11:30
		
		  GetDataFromReception(); //Process data after reception ends.		
		  
		  
		  //???g_btTransmitStart is set to 1 in INTST00 when transmit the 
		  //???second data.	
		  
		  //Clear g_btTransmitStart when having transmited the last data in 
		  //Inter_ST().
		  if(g_btTransmitStart && btHanziEnable)    
		  {
		  	g_btTransmitStart = 0;  
		  	
		  	btHanziEnable = 0;  
		  	 
		//  g_keyValue = 0x8;         //Test!!!!
                          
        SetDataTransmitBuffer(8); //Test!!!!
                         		  	
		  	STIF00 = 0;                                        																										
		               	                                       																										
		    TXE00 = 1;					//Transmission enabled         																										
		                                                       																										
		    STMK00 = 0; 
		    
		    //The transmission buffer pointer is initialized.
		    g_p_bufTransmit = g_bufTransmit;   //The transmit buffer pointer		    																		                                       																										
		                                                       																										
		    TXS00 = WAKE_CODE;   	//Send wake code firstly.																										 	
		  }			                         	     
		  else
		  {
		  	 CommReceptionEnabled();
		  }	     	  		
		}	  //2003-10-30 11:05										
	}	
	return 0;
}

⌨️ 快捷键说明

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