|
#include <iom128v.h>//外接16M晶振
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#pragma interrupt_handler LED_:13
uchar num=0;
void LED_()
{
if(num==20)
{
TCCR1B=0;
num=0;
PORTA=0X00;
}
num++;
}
void KeyboardScan()
{
uchar key_checkin;
key_checkin=PIND|0X7F;
if(key_checkin==0x7F)
{
DDRB|=0X60;//讓OC1A,OC1B輸出
TCCR1A=0X50;//OC1A,OC1B比較匹配時(shí)候取反,CTC模式
TCCR1B=0X09;//在CTC模式下無(wú)預(yù)分頻
OCR1A=2;
TIMSK=0X10;//定時(shí)器1的比較匹配A使能
SREG|=BIT(7);//開(kāi)啟總中斷
PORTA=0X00;
}
}
void main ()
{
DDRD=0X7F;
PORTD=0XFF;//獨(dú)立鍵盤(pán)初始化
DDRE|=0X04;
PORTE|=0X04;
DDRA=0XFF;
PORTA=0XFF;//關(guān)閉所有LED燈。
while(1)
{
KeyboardScan();
}
}
|
|