📄 hardwarec.c
字号:
#include "externh.h"
#define Timer0Run(var) {TR0 =var?1:0;}
#define CPUFREQ 11059200
#define SAMPLEFREQ 32
#define SAMPLETIME (CPUFREQ/6/SAMPLEFREQ)
#define UARTBAUDRATE 9600
KEY Key;
volatile U8 DelayCount;
void Timer0Init(void)
{
TMOD |=0x01;
TH0 =-(SAMPLETIME/256);
TL0 =-(SAMPLETIME%256);
ET0=1;
}
void timer0(void) interrupt 1 using 2
{
TH0 =-(SAMPLETIME/256);
TL0 =-(SAMPLETIME%256);
g.Flag.Timer32ms=1;
if(DelayCount) DelayCount--;
}
void SystemInit(void)
{
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
P4=0xff;
Timer0Init();
Timer0Run(1);
Rs232Init();
ET1=0;
}
void Rs232Init()
{
TCON &= 0x3F; /* clear run & interrupt flags */
TMOD &= 0x0F; /* flush existing Timer 1 setup */
TMOD |= 0x20; /* flush existing Timer 1 setup */
SCON = 0x50; /* flush existing Timer 1 setup */
PCON |= 0x00;
TH1 = TL1 = (unsigned char)( 256-((CPUFREQ/12)/32)/UARTBAUDRATE); //设置波特率发生器定时器
TR1 = 1; /* start the timer */
TI = 1;
}
void GetKey(void)
{
Key.hz=Key.Code;
Key.Code=0;
}
void gSet(U8 ch)
{
g.State=ch;
g.Flag.Disp=1;
}
U8 KeyScan0(void)
{
ClrBit(P3,COLUM);
if(!ChkBit(P3,6)) return('#');
if(!ChkBit(P3,7)) return('0');
if(!ChkBit(P4,1)) return('*');
if(!ChkBit(P2,5)) return('9');
if(!ChkBit(P2,6)) return('8');
if(!ChkBit(P2,7)) return('7');
if(!ChkBit(P2,2)) return('2');
if(!ChkBit(P2,3)) return('3');
if(!ChkBit(P2,4)) return('4');
if(!ChkBit(P4,0)) return('5');
if(!ChkBit(P2,0)) return('6');
if(!ChkBit(P2,1)) return('1');
return (0);
}
void Delay(U8 ms)
{//短
DelayCount=ms;
while(DelayCount);
}
void PutCh(U8 i)
{
SBUF=i;
while(TI==0);
TI=0;
}
void KeyScan(void)
{
if(KeyScan0()){
switch(Key.State){
case 0:
Key.State++;
break;
case 1:
Key.State++;
Key.Code=KeyScan0();
break;
default:
break;
}
}else{
Key.State=0;
Key.Code=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -