📄 mymainedited.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 + -