📄 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 + -