📄 hardware.c
字号:
#include "externh.h"
KEY Key;
#define KEYNUM 3
#define KEYCOUNT (1024/(KEYNUM+1))
void IOInit(void);
void Timer0Init(void);
//void Timer1Init(void);
//void ADCInit(void);
volatile U16 DTime[MAXTIMER];
void Delay(U16 ms)
{
DelayTimer=ms;
while(DelayTimer) wdt_reset();
}
SIGNAL(SIG_OUTPUT_COMPARE0A)
{
U8 i;
static volatile U16 otime=68;
if(otime) otime--;
if(0==otime){
otime=68;
g.Flag.ms10=1;
// NorBit(PORTD,1);
for(i=0;i<MAXTIMER;i++){
if(DTime[i]) DTime[i]--;
}
}
}
void SystemInit(void)
{
IOInit();
Timer0Init();
}
void IOInit(void)
{
PORTB=(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5);
DDRB =(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7);
PORTD =(1<<0)|(1<<1)|(1<<2)|(1<<4)|(1<<5);
DDRD =(1<<0)|(1<<1)|(1<<3);
PowerOff();
}
void Timer0Init(void)
{//1ms.
TCCR0A =(1<<WGM01); //CTC mode.
TCCR0B = (1<<CS01); //1:8.
OCR0A=7;
SetBit(TIMSK,OCIE0A);
}
void GetKey(void)
{
Key.hz=Key.Code;
Key.Code=0;
}
void KeyScan(void)
{
U8 uc0=0;
if(!ChkBit(PIND,2)) SetBit(uc0,0);
if(!ChkBit(PIND,4)) SetBit(uc0,1);
if(!ChkBit(PIND,5)) SetBit(uc0,2);
if(uc0){
switch(Key.State){
case 0:
Key.State++;
break;
case 1:
Key.Code=uc0+'0';
Key.State++;
break;
case 2:
break;
default:break;
}
}
else{
Key.State=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -