跪求帮助,编程问题
我用iccv编程环境下 编了如下一个程序 ,想在pa2口输出1500hz的方波信号,初值计算无误 ,为什么得到的频率是94.7khz?相差太大,而且 ,改变初值时 也没见到有什么变化,请问是怎么回事?代码
#include<iom16v.h>
#include<iom64v.h>
#include <macros.h>
#pragma interrupt_handler miao:9
void miao()
{
PORTA^=0X04;//PA2与1异或
TCNT1H=0XEB;//T1初值
TCNT1L=0X2A;
}
void main()
{
DDRA|=BIT(PA2);
PORTA|=BIT(PA2);
TIMSK|=BIT(2);
SREG|=BIT(7);
TCNT1H=0XEB;//定时器1的初值
TCNT1L=0X2A;
TCCR1B=0X01;//普通模式,无预分频,
}
PS,不知道怎么改变了什么,什么都没动啊 ,改变初值下载却成了直流信号!
求解答
哥们,你的中断处理函数呢? 本帖最后由 zn_dmu 于 2013-8-4 19:44 编辑
上面那个void miao
void miao()
{
PORTA^=0X04;//PA2与1异或
TCNT1H=0XEB;//T1初值
TCNT1L=0X2A;
}
我看学习视频是这样写的 啊。。 longfeix86 发表于 2013-8-4 19:18 static/image/common/back.gif
哥们,你的中断处理函数呢?
上面那个void miao
void miao()
{
PORTA^=0X04;//PA2与1异或
TCNT1H=0XEB;//T1初值
TCNT1L=0X2A;
}
我看学习视频是这样写的,不正确吗 你用的是AVR的PWM还是定时器产生的? 中断处理函数不是这样写的吧 longfeix86 发表于 2013-8-4 20:03 static/image/common/back.gif
你用的是AVR的PWM还是定时器产生的?
定时器, richyhuang 发表于 2013-8-4 20:06 static/image/common/back.gif
中断处理函数不是这样写的吧
求指点… richyhuang 发表于 2013-8-4 20:06 static/image/common/back.gif
中断处理函数不是这样写的吧
采用定时器的的普通模式,利用其溢出中断给输出电平取反,正常应该是在PA2口得到方波,但是出来的是直流信号… 头文件不对吧,又16又64的 cdwess 发表于 2013-8-4 20:54 static/image/common/back.gif
头文件不对吧,又16又64的
他可以兼容的 。
我在想,是不是因为主函数里面没有循环语句,然后执行一次之后就停止了,不论定时器是不是在工作?教学视频里本来是有一个循环语句的,用来显示要显示的内容,
可是,我加上 while(1);这条语句也没有效果,该怎么弄呢………………………太郁闷了 M16的定时器1中断溢出向量是9,M64的中断溢出向量向量是15,估计是这里问题 cdwess 发表于 2013-8-4 21:31 static/image/common/back.gif
M16的定时器1中断溢出向量是9,M64的中断溢出向量向量是15,估计是这里问题
哦 ,果然,太感谢了。。文档没看仔细…十分感谢 {:hug:}
页:
[1]