打印
[AVR单片机]

关于MAGE16的问题

[复制链接]
1935|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
phctgu|  楼主 | 2009-11-4 16:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 phctgu 于 2009-11-4 17:22 编辑

本人刚开始学AVR,自己编了一个小程序,只需要LED闪烁就可以了,
可是 程序烧写进去  没有任何反应,不知道是什么原因,望高手帮忙分析下原因,
谢谢!!!!
其中晶振是使用内部的晶振,熔丝位是默认值,PA0和PA1
分别接LED的阴极。

#include<iom16v.h>
#define uchar unsigned char
#define uint  unsigned int

void delay_1ms(void)
{uint i;
  for(i=0;i<141;i++)
  ;
}
void delay_ns(uint ms)
{  uint i;
   for(i=0;i<ms;i++)
    delay_1ms();  
}

void ini_port(void)
{ DDRA=0xff;
   PORTA=0xff;
}

void main()
{
   ini_port();
   while(1)
   {
   PORTA&=~0x01;
   delay_ns(1000);
   delay_ns(1000);
   PORTA|=0x01;
   PORTA&=~0x02;
   delay_ns(1000);
   delay_ns(1000);
   PORTA|=0x02;
   }
}

A16.jpg (71.5 KB )

A16.jpg

相关帖子

沙发
BitFu| | 2009-11-5 08:42 | 只看该作者
延时太短

使用特权

评论回复
板凳
maomao2126| | 2009-11-5 12:38 | 只看该作者
给IO输出低电平看它是否会亮,会亮就证明你的延时太短了

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
phctgu + 1 谢谢你,按你的操作后,结果出来了 ...
地板
错过-21IC| | 2009-11-5 21:18 | 只看该作者
这样的延时函数,根本看不见亮啊!
void delay_ms(uchar i) {

        uchar a, b;
        for (a = 1; a < i; a++) {
                for (b = 1; b; b++) {
                        ;
                        }
                }
}
用这个试试

使用特权

评论回复
5
错过-21IC| | 2009-11-5 21:25 | 只看该作者
void main()
{
DDRA=OXFF;
PORTA=0XFF;
while(1)
{
PORTA|=BIT(0);
delay_ms(200);
PORTA&=~BIT(0);
delay_ms(200);
PORTA=|BIT(0);
}
}
试试这段,别的参照着自己写啦!(记着再包含个文件#include <macros.h>

使用特权

评论回复
6
discovery0x01| | 2009-11-6 01:03 | 只看该作者
估计也是延时太短,你是不是设置了太高的RC频率?先试试5#的,不行的话如果手头有示波器测量一下IO最标准,有好的工具才能最快的发现问题所在。

使用特权

评论回复
7
phctgu|  楼主 | 2009-11-6 11:38 | 只看该作者
谢谢各位朋友,我改了延时时间,看到了效果,在此再次感谢大家的帮助

使用特权

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

本版积分规则

19

主题

68

帖子

1

粉丝