?? ad.c
字號:
/*利用PA口的第二功能將PA0口(即ADC的0通道)輸入的模擬量轉變為數字量,通道的參考源選
擇AVCC,并且數據采用右對齊方式,轉換方式為每1秒啟動一次轉換,轉換結果由實驗臺上
的七段數碼管顯示*/
#include <macros.h>
#include <iom16v.h>
/***************************************************************/
unsigned char temp1=0x00;
unsigned char temp2=0x00;
/******************************************************************/
//入口參數:tmp1,tmp2
//出口參數:PORTB,PORTD
//功能:將A/D轉換的高位,低位數據tmp1,tmp2分別送給PORTTB,PORTD并顯示
/**************************************************************/
void display(unsigned char tmp1,unsigned char tmp2)
{
unsigned int tp2;
unsigned char tp20,tp21,tp22;
tp2=tmp2;
tp20=tp2/100;
tp21=(tp2%100)/10;
tp22=tp2%10;
tp20=(tp20<<4);
tp22=tp22<<4;
PORTD=tmp1|tp20;
PORTB=tp21|tp22;
}
/********************************************************
1_ms延時程序
********************************************************/
void delay_1ms(void)
{
unsigned int i;
for(i=0;i<1412;i++)
{
}
}
/****************************************************
N_ms延時程序
***************************************************/
void delay_nms(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++)
{
delay_1ms();
}
}
/********************************************************
端口初始化
********************************************************/
void port_init(void)
{
DDRB=0xff; //B口輸出為1
PORTB=0xff;
DDRD=0xff; //D口輸出為1
PORTD=0xff;
DDRA=0x00; //A口為輸入
PORTA=0x00;
DDRC=0x02; //C1輸出為1
PORTC=0xff;
}
/******************************************************
AD初始化,對內部ADC進行相應設置
*******************************************************/
void adc_init(void)
{
ADCSRA=0x00; //設置ADC之前禁止ADC
ADMUX=0x40; //選擇AVCC參考源 數據右對齊,0通道
ACSR=(1<<ACD); //模擬比較器禁用
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1); //預分頻設置為64
}
void init_devices(void)
{
CLI(); //關中斷
port_init();
adc_init();
}
void main(void)
{
OSCCAL=0xaf; //頻率校準
init_devices(); //系統初始化
ACSR=0X00; //模擬比較器開啟
while(1) //判斷AD轉換是否結束
{
ADCSRA=(1<<ADEN)|(1<<ADSC);
while(!(ADCSRA&(1<<ADIF)))
;
ADCSRA=(1<<ADIF); //清轉換結束標志位
temp2=ADCL; //讀AD結果
temp1=ADCH;
delay_nms(1000);
display(temp1,temp2); //顯示模擬量所對應的結果
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -