?? ad_number_led.c
字號:
//:rc:8M
//ic atmegal 8l
#include <avr/io.h>
#include <avr/interrupt.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char time=0,onedata=0,twodata=0,count=0;
const unsigned char led[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e};
void delay(unsigned int x)
{
while(x)x--;
}
void adc_init(void) //ADC初始化
{
DDRC=0xf0;
PORTC=0xf0;
ADCSRA =0x00;
ADMUX|=(1<<REFS0);
ACSR=(1<<ACD);
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0);
}
SIGNAL(SIG_OVERFLOW1)
{
TCNT1=61712;
time++;
if(time==01)
{
PORTB=~led[onedata];
PORTC=PORTC&0xef; //開一
PORTC=PORTC|0x20;//關2
}
if(time==9)
{
PORTC=PORTC|0x10;//關1
PORTC=PORTC|0x20;//關2
}
if(time==10)
{
PORTB=~led[twodata];
PORTC=PORTC|0x10;//關1
PORTC=PORTC&0xdf;//開二
}
if(time==19)
{
PORTC=PORTC|0x10;//關1
PORTC=PORTC|0x20;//關2
}
if(time==20)
{
time=0;
}
}
int main (void)
{
unsigned int adc_rel; //AD轉換結果
DDRB=0xff;
PORTB=0Xff;//1111,1111
DDRC=0xf0;
PORTC=0Xf0;//1111,1111
sei();
TCCR1A=0X00;
TCCR1B=(1<<CS10);
TIMSK|=(1<<TOIE1);
TCNT1=61712;
adc_init();
while(1)
{
onedata=count%10;
twodata=count/10;
delay(50000);
ADCSRA|=(1<<ADSC); //啟動ADC轉換
while(ADCSRA& (1<<ADSC)); //判斷ADC轉換是否結束
adc_rel=ADC;
count=adc_rel*10/102;
}
return (0);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -