[AVR单片机] 关于atmega128定时器0的程序问题

[复制链接]
 楼主| 453369672 发表于 2010-12-14 13:38 | 显示全部楼层 |阅读模式
下面是一个atmega128定时器0的程序,通过定时器来控制led闪烁。可下载到板子上没有任何反应,到底是哪里出了问题,求高手赐教!!!
#include <iom128v.h>
#include <macros.h>
unsigned char k;
void port_init (void)//初始化对573的控制,使输出信号可以直接控制led的亮暗
{
   DDRA=0XFF;
   PORTA=0XFF;
  DDRE|=1<<2;
  PORTE=1<<2;
}
void timer0_init(void)
{
   TCCR0 = 0x00; //stop
   ASSR  = 0x00; //set async mode
   TCNT0 = 0x3c; //setup  0.2s
  //TCNT0=0X00;
   OCR0  = 0x00;
   TCCR0 = 0x05; //1024分频
}
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
{
   TCNT0 = 0x3c;
  //TCNT0=0x00;
   k=k+1;
   if(k>100)
   {
   k=0;
   PORTA ^= 0xFF;
   }
}
void main (void)
{
   CLI();     //disable all interrupts
   port_init();
   timer0_init();
   MCUCR = 0x00;
  TIMSK = 0x01;    //T0溢出使能
   SEI();      //enable interrupts   
   while(1);
}
 楼主| 453369672 发表于 2010-12-14 15:32 | 显示全部楼层
寻高手指点啊 初学AVR
zhaoyu2005 发表于 2010-12-15 11:02 | 显示全部楼层
先确定片子是否跑起来,然后再判断软件是否正确
注意下配置字,也就是熔丝,AVR的熔丝错了就不行了
 楼主| 453369672 发表于 2010-12-16 11:59 | 显示全部楼层
芯片没问题的,跑过其他的程序,可以正常工作 3# zhaoyu2005
zhaoyu2005 发表于 2010-12-16 14:18 | 显示全部楼层
你下载这个程序时改熔丝没?
 楼主| 453369672 发表于 2010-12-20 12:14 | 显示全部楼层
没有修改任何设置 5# zhaoyu2005
zhaoyu2005 发表于 2010-12-20 17:03 | 显示全部楼层
看下是不是573的控制端电平对不
你应该线学会自己排除简单的问题,比如:
1.单片机运行没,可以写个简单的程序测试端口引脚电平变化
2.单片机的输出正确否
3.外围电路工作正常否

排除完就知道问题出在软件上还是硬件上,然后分段测试,就能知道程序运行到哪里出错了,这样,别人也有针对性,要不是也是猜,别人很少会把你的程序整个看下
 楼主| 453369672 发表于 2010-12-21 21:59 | 显示全部楼层
你说的这些我都做过,没有任何问题 7# zhaoyu2005
帝霸 发表于 2010-12-21 23:52 | 显示全部楼层
把你的系统时钟说明一下。另外你的代码可读性很差,注释和代码实际含义不一致。
zhaoyu2005 发表于 2010-12-22 09:37 | 显示全部楼层
既然都做过了,应该知道问题大概出在哪里了吧,那你说下哪个部分出问题了?
 楼主| 453369672 发表于 2010-12-23 17:02 | 显示全部楼层
应该是程序哪边有问题 10# zhaoyu2005
zhaoyu2005 发表于 2010-12-24 09:21 | 显示全部楼层
既然硬件没问题,那当然是程序问题了,不可能都有问题吧,你定位到那个部分了?或者说那个函数?
你这样的态度不适合学单片机,都给你说了方法了,不好好做,只想别人直接指出
pursuer99 发表于 2011-1-26 15:37 | 显示全部楼层
看了你的程序 ,端口A 应该是数据口,你初始化时,是上拉输出高电平,你的573是否正常工作 ,它不工作,你的灯肯定不能闪灭变化
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

38

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部