📄 main.c
字号:
#define F_CPU 8000000 //11059200
#include <avr/interrupt.h>
#include "iocompat.h"
#include <util/delay.h>
#include "main.h"
int main()
{
csh();//初始化
scz();//设初值
while(1)
{
if(((ADCSRA>>ADIF)&1)==1) //AD转换完成
{
_delay_us(30);
advalue=ADCL;
advalue+=(ADCH<<8);
AD_Data=(advalue+100)/200;
}
if(KeyBuffer!=AD_Data)
{
KeyBuffer=AD_Data;
if(KeyBuffer!=NO_key)
key=KeyBuffer;
}
show1();
_delay_ms(2);
key=NO_key;
}
}
void csh()
{
SPCR=0X51;//SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
DDRB=0X2C;//(1<<DDRB5)(1<<DDRB3)|(1<<DDRB2);
PORTB=0xff;
ADMUX|=0x03;//设置AD口的基准电压,输入通道等
//ADCSRA|=(1<<ADSC);//启动AD,启动首次转换
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|(1<<ADIF)|(0<<ADIE)|5;
//DDRC=0X00;
//PORTC=0x00;
}
void scz()
{
key=NO_key;
KeyBuffer=NO_key;
AD_Data=NO_key;
}
void show1()
{
int i,j,k;
//k=(key%10);
for(i=0;i<180;i++)
{
PORTB=PORTB&(~4);
in(b[0]);
for(j=0;j<3;j++)
{
in(a[key]);
}
PORTB=PORTB|4;
_delay_ms(1);
}
}
void in(char data )
{
SPDR=data;
while(!(SPSR & (1<<SPIF)))
;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -