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

📄 hardware.c

📁 某种型号的取暖器的控制软件,包括高压打火,气体检测
💻 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 + -