AVR单片机ADC采集控制问题,我的程序为什么不能起作用 70
#include<avr/io.h>#include<avr/interrupt.h>#defineucharunsignedchar#defineuintunsigne...
#include<avr/io.h>
#include<avr/interrupt.h>
#define uchar unsigned char
#define uint unsigned int
void PWM(void)//PWM输出初始化
{
DDRD|=0X30;
TCCR1A=0X63;
TCCR1B=0X13;
OCR1A=1249;
OCR1B=1249;
}
void ADC_cj()//adc采集函数,控制data值可改变PWM值(已测试有效)
{
float data;
while(!(ADCSRA & 0x10))//判断转换是否完成
ADCSRA=0xe0;
data=(ADCL+ADCH*256)/1024;
OCR1B=1249*data;
}
void ADC_int()//ADC初始化设置
{
DDRA=0x00;
PORTA=0x00;
ADMUX=0x00;//AREF参考电压 右对齐 ADC0通道 0000 0000
ADCSRA=0xe0;//ADC使能,ADC开始工作,允许自动转换触发,不使用中断,2分频 1110 0000
SFIOR=0x00;//自动模式 0000 0000
}
void main(void)
{
PWM();
ADC_int();
while(1)
{
ADC_cj();
}
}
目的是通过ADC采集ADC0的电压,来控制PWM占空比。。。。可是不知道为什么没法实现,有没有大神指教下。。。 展开
#include<avr/interrupt.h>
#define uchar unsigned char
#define uint unsigned int
void PWM(void)//PWM输出初始化
{
DDRD|=0X30;
TCCR1A=0X63;
TCCR1B=0X13;
OCR1A=1249;
OCR1B=1249;
}
void ADC_cj()//adc采集函数,控制data值可改变PWM值(已测试有效)
{
float data;
while(!(ADCSRA & 0x10))//判断转换是否完成
ADCSRA=0xe0;
data=(ADCL+ADCH*256)/1024;
OCR1B=1249*data;
}
void ADC_int()//ADC初始化设置
{
DDRA=0x00;
PORTA=0x00;
ADMUX=0x00;//AREF参考电压 右对齐 ADC0通道 0000 0000
ADCSRA=0xe0;//ADC使能,ADC开始工作,允许自动转换触发,不使用中断,2分频 1110 0000
SFIOR=0x00;//自动模式 0000 0000
}
void main(void)
{
PWM();
ADC_int();
while(1)
{
ADC_cj();
}
}
目的是通过ADC采集ADC0的电压,来控制PWM占空比。。。。可是不知道为什么没法实现,有没有大神指教下。。。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询