打印
[AVR单片机]

AVR输出线性可调频方波疑问求解

[复制链接]
2383|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
2001myp|  楼主 | 2009-10-16 15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
知道很多高手讨厌菜鸟直接上传一大段程序,但小弟实在比较菜,怕有任何问题,另外程序很小,所以希望高手指点下
我这里用的是ATMEGA16,输入利用AD转换功能,通过电位器调节电压,读取AD值,并将所得的AD转换值高八位赋值给定时器高八位,同理第八位赋值给定时器第八位,旋转电位器,AD值变化,则定时器初值变化,实现周期和频率的变化。
程序如下:
#include <iom16.h>   
#include<intrinsics.h>
#define uchar unsigned char
#define uint  unsigned int
uint GAOWEI,DIWEI;  
uchar i,status,cnt=0;   
/************************************************/
void port_init(void)  
{     
PORTA = 0xFF;   
DDRA  = 0xFF;   
PORTB = 0xFF;   
DDRB  = 0xFF;   
PORTC = 0xFE;     
DDRC  = 0xFE;   
PORTD = 0xFF;  
DDRD  = 0xFF;   
}      
/************************************************/
void adc_init(void)   
{     
ADCSRA = 0xE3;     
ADMUX = 0xc7;   
}     
//***************************
void timer1_init(void)         
{     
TCNT1H = 0xCF;     
TCNT1L = 0x2C;     
TCCR1B = 0x03;  
//定时器0的计数预分频取64
}
/***************************************************/
#pragma vector=TIMER1_OVF_vect
__interrupt void timer1_ovf_isr(void)
{
TCNT1H = GAOWEI;   
TCNT1L = DIWEI;
do {status=TIFR&0x04;}while(status!=0x04);
  TIFR=0x04;
                if(cnt>=0) {cnt++;PORTB = ~PORTB;}
  if(cnt>=116) {PORTB = 0x00;}
                if(cnt>=120)  {cnt=0; }   
}
/*********************************************/
void init_devices(void)  //芯片的初始化子函数
{      
port_init();   
timer1_init();   
adc_init();
TIMSK=0x04;
SREG=0x80;   
}      
//=========================
uint ADC_Convert11(void)  
{uint temp1;   
temp1=ADCL;
return(temp1);   
}
//=========================
uint ADC_Convert12(void)  
{uint temp2;  
temp2=ADCH;
return(temp2);  
}
/***********************/
void delay(uint k)   
{
uint i,j;
  for(i=0;i<k;i++)
  {  
  for(j=0;j<140;j++);
  }
}
/***********************/
void main(void)   
{      
init_devices();   
  while(1)     
  {  GAOWEI =ADC_Convert12();
                DIWEI =ADC_Convert11();
     
delay(10); }
}

相关帖子

沙发
2001myp|  楼主 | 2009-10-16 17:49 | 只看该作者
我错了,以后不再以这种方式问了,至于这次,就请高手帮帮忙吧

使用特权

评论回复
板凳
2001myp|  楼主 | 2009-10-16 17:56 | 只看该作者
上面的程序烧录后输出是一个固定频率方波,不可调,郁闷中

使用特权

评论回复
地板
Karlshen| | 2009-10-16 20:11 | 只看该作者
还说不长···

使用特权

评论回复
5
2001myp|  楼主 | 2009-10-16 20:36 | 只看该作者
我自己本来是认为很长了,但是21IC牛人太多,这个程序实在是入门级别的,我自己说长,别人觉得太短,我岂不是很没面子

使用特权

评论回复
6
wangwo| | 2009-10-17 22:40 | 只看该作者
啥问题啊?难道只是想让别人看看程序对不对?

使用特权

评论回复
7
lovelyegle| | 2009-10-17 22:45 | 只看该作者
运行下不就知道了

使用特权

评论回复
8
2001myp|  楼主 | 2009-10-18 17:08 | 只看该作者
晕倒,楼上两位仁兄,是我糊涂了,没说症状
是烧完程序后发现输出固定频率方波,根本不可调

使用特权

评论回复
9
wangwo| | 2009-10-18 19:07 | 只看该作者
那应该就是程序有问题

使用特权

评论回复
10
Karlshen| | 2009-10-18 19:21 | 只看该作者
一段一段地检查程序

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

210

帖子

0

粉丝