?? adc._c
字號:
#include <iom16v.h>
#include <macros.h>
#include <stdio.h>
#include "..\includeH\Init.h"
//uchar count;
void main(void)
{ uint Voltage,k,number[3];
uint ADCVoltage;
OSCCAL=0xff; //系統時鐘校準,不同的芯片和不同的頻率,200%
PORTA = 0x00;DDRA = 0xff; PORTB = 0x00;DDRB = 0x00;
PORTC = 0x00;DDRC = 0x00; PORTD = 0xff;DDRD = 0x00;
WDT_ON(); //使能watchdog,并且采用2048K分頻,典型溢出時間5V時2.1S
ADCSRA=0x00; ////ADC轉換全置0
ADC_Init(); //采用內部2.56參考電壓,ADC3輸入,ADC轉換 64分頻
INT1_init(); ///外中斷0使能
SEI(); //開放中斷
USART_InitM1681(9600);
Red_LedON;Green_LedON;
delay_nms(500); //延時1秒
Red_LedOFF; Green_LedOFF;
USART_Transmit8(0x0d); //發送一個回車
USART_Transmit8(0x0a); //發送一個換行
while(1)
{ delay_nms(500);
WDR();
USART_Transmit_2();
delay_nms(500);
// ADCSRA|=(1<<ADSC);
while(~(ADCSRA&(1<<ADSC)))
{
LED_Wait_ISP();
LED_Texting_ISP();
WDR();
}//待ADC測量
ADCVoltage=((25600/1023)*(ADCH*256+ADCL))/1000; //數據計算
//ADCVoltage=(( 25 )*( 0~254a9 ))/1000=(0~563)
// ADCVoltage=ADCConvert_3();
// count=ADCVoltage/1023;
WDR();
//if(count!=90){
// uint Voltage,k,number[3];
Voltage=ADCVoltage;
// Voltage=ADCConvert_3();
//第一位整數
number[0]=Voltage/1023;
Voltage=Voltage%1023;
Voltage=Voltage*10;
//第一位小數
number[1]=Voltage/1023;
Voltage=Voltage%1023;
Voltage=Voltage*10;
//第二位小數
number[2]=Voltage/1023;
for (k=0;k<3;k++)
{ USART_Transmit8(number[k]);
// UDR=number[k]; /////串口發送
while(!(UCSRA&(1<<UDRE))){LED_Wait_ISP();}
}
// }
WDR();//清看門狗
}
}
#pragma interrupt_handler adc_isr:15
void adc_isr(void)
{
//ADMUX=0x00;
// ADMUX =(1<<MUX1)|(1<<MUX0);
ADMUX =(1<<REFS0)|(1<<REFS1)|(1<<MUX1)|(1<<MUX0);
ADCSRA|=(1<<ADSC);//啟動AD轉換
}
uint tmp;
#pragma interrupt_handler uart0_rx_isr_m16:12
void uart0_rx_isr_m16(void)
{
tmp=USART_Receive8();
USART_Transmit8(tmp);
if(tmp=='a')
{
USART_Transmit8('O');
USART_Transmit8('K');
USART_Transmit_2();
}
//有數據發出時的提示綠燈閃動
Red_LedOFF;
for(tmp=0;tmp<3;tmp++){
Green_LedON;
delay_nms(900);
Green_LedOFF;
delay_nms(900);}
}
#pragma interrupt_handler INT1_isr_m16:3
void INT1_isr_m16(void)
{
//中斷程序
USART_Transmit_2();
USART_Transmit8(' ');
USART_Transmit8('I');
USART_Transmit8('N');
USART_Transmit8('T');
USART_Transmit8('1');
USART_Transmit8(' ');
USART_Transmit8('i');
USART_Transmit8('s');
USART_Transmit8(' ');
USART_Transmit8('0');
USART_Transmit8('k');
USART_Transmit8('!');
USART_Transmit8(' ');
delay_nms(1000);
delay_nms(1000);
delay_nms(1000);
delay_nms(1000);
delay_nms(1000);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -