📄 ad_finish.c
字号:
#include <macros.h>
#include <iom16v.h>
#include <math.h>
/*****1_ms延时程序*****/
void delay_1ms(void)
{
unsigned int i;
for(i=0;i<1142;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=0x00;
DDRD=0xff; //D口输出为1
PORTD=0x00;
}
/***AD初始化,对内部ADC进行相应设置***/
void adc_init(void)
{
CLI();
ADCSRA=0x00;//设置ADC之前禁止ADC
ADMUX=0x40;
ADCSRA|=(1<<ADEN)|(1<<ADIE)|(1<<ADSC);
SEI();
}
/**功能:电压值(mV)显示;例如显示3432即为3432mv**/
void ad_change(unsigned int data)
{
unsigned long v;
unsigned char th,h,te,g;
v=data;
v=(v*5000)/1024;
th=v/1000;
h=(v%1000)/100;
te=(v%100)/10;
g=v%10;
PORTD=h*16+th;
PORTB=g*16+te;
}
/*****中断*****/
#pragma interrupt_handler ad_f:15
void ad_f(void)
{
unsigned int d;
d=ADC;
ad_change(d);
delay_nms(200);
ADCSRA|=(1<<ADSC);
}
/*****主函数*****/
void main(void)
{
port_init(); //端口设置
adc_init(); //ADC设置
while(1)
;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -