搜索
bottom↓
回复: 24

新手入门最简单的一个范例--献给AVR初学者(有一点基础的根本不用看)

[复制链接]

出0入0汤圆

发表于 2006-2-9 20:35:49 | 显示全部楼层 |阅读模式
注:新手入门往往不知从何下手,不妨让我们从最简单的做起,一步一步逐渐提高。



一、MCU:ATmega64。

二、编译器:WinAVR 20050214 版本。

三、下载器:PonyProg2000 (也可用其它)。

四、功能:实现LED交替闪亮。

五、电路连接:用一只LED将其正极接PA0,负极接地。

六、运行结果:LED亮一秒钟再灭一秒钟,如此循环交替。

七、源代码如下:



#include <avr/io.h>

#include <avr/delay.h>

//注: 内部函数_delay_ms() 最高延时  262.144mS@1MHz 即 32.768ms@8MHz

//    该函数可以实现较精确的定时for()/while()指令很难计算延时时间

//    为了使 _delay_ms()函数的延时正确,须在makefile中设定F_CPU为实际的系统时钟频

//    本范例为1MHz内部RC振荡器 即 F_CPU=1000000



int main(void)

{

unsigned char i;     //定义变量

PORTA=0;                   //PA端口设为输出低电平,灯灭               

DDRA=0xFF;        //将PA设为输出

while(1)            //无限循环

{

           PORTA=0xFF;         //PA口设为输出高电平,灯亮       

        for (i=0;i<50;i++)  //大约延时50X20=1000ms

        {

                _delay_ms(20);

        }       

       

        PORTA=0;                 //PA口设为输出低电平,灯灭       

        for (i=0;i<50;i++)  

        {

                _delay_ms(20);

        }       

}

}

出0入0汤圆

发表于 2006-3-24 17:29:59 | 显示全部楼层
我的在编译的时候出现下面的情况,因为什么? 我刚开始学AVR

> "make.exe" all



-------- begin --------

avr-gcc (GCC) 3.4.3

Copyright (C) 2004 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



/usr/bin/sh: test: main: binary operator expected

make.exe: *** No rule to make target `LED1.o', needed by `LED1.elf'.  Stop.



> Process Exit Code: 2

出0入0汤圆

发表于 2006-3-24 22:08:50 | 显示全部楼层
你没改makefile啊



# Target file name (without extension).

TARGET =LED1

看看

出0入0汤圆

发表于 2006-3-24 22:31:21 | 显示全部楼层
不用这么麻烦了,就直接下载网站上的新手第一个例子就行了,100%正确的。

出0入0汤圆

发表于 2006-7-23 19:13:34 | 显示全部楼层
> "make.exe" all



-------- begin --------

avr-gcc (GCC) 3.4.6

Copyright (C) 2006 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



make.exe: *** No rule to make target `obj/main.o', needed by `led.elf'.  Stop.



> Process Exit Code: 2

> Time Taken: 00:01

这是怎么回是啊 名称 和MCU我都设置了

出0入0汤圆

发表于 2006-7-23 22:23:20 | 显示全部楼层
http://www.ouravr.com/bbs/bbs_content.jspbbs_sn=461928&bbs_page_no=5&bbs_id=1000

出0入0汤圆

 楼主| 发表于 2006-7-25 09:00:38 | 显示全部楼层
我想好多问题出在各位没有正确配置MakeFile上吧.

    这是我刚学单片机的第三天编写的一个范例,其实还是根据新手入门的第一个例子改编的,只要有一个可以正常工作的最小系统和一个LED就可以了.当时我对单片机是一无所知,更不会做最小系统,还是从同事那里借了一块ATMEGA64的控制板来做这个实验.但没想到这么简单的一个例子还是问题多多,看来我们还是没有真正体会到新手入门的心情和困难.

    我觉得对新手入门最有帮助的是教他们怎么做,而不是给他们讲为什么这么做.只要能让他们在最短的时间内做出一个成功的小范例,这就是对他们最大的鼓舞.

    晚点时间我会把我实验成功的最简单的一系列范例都传上来,希望能帮到初学者.其实编的最好且100%正确的还是OURAVR上的新手入门范例.我在这里只是想给大家多一项选择的余地.

    把这个程序打包传上来,在这个程序中已把MCU换成了ATMEGA16.

点击此处下载armok01124370.rar


-----此内容被cltemail于2006-07-25,09:04:18编辑过

出0入0汤圆

发表于 2006-9-23 14:23:51 | 显示全部楼层
头文件都不知道是啥??

#include <avr/io.h>

#include <avr/delay.h>

我用的是MEGA16

出0入0汤圆

发表于 2006-9-23 14:52:38 | 显示全部楼层
现在在做一个气体传感器,报警就是用红灯交替闪烁,过没用延时,而是用通断比为1:1,频率是1MHz的方波做的

出0入0汤圆

发表于 2007-6-7 11:07:40 | 显示全部楼层
不错,这个例子还是比较简单容易的。记得当初我学习这个软件的时候也是弄了好久。

出0入0汤圆

发表于 2008-4-13 13:38:19 | 显示全部楼层
学习中

出0入0汤圆

发表于 2008-4-19 11:06:11 | 显示全部楼层
#include <avr/io.h>是AVR单片机的定义I/O端口的头文件;
#include <avr/delay.h>是延时函数的头文件。
我也是AVR的初学者,不知道以上的答案对与否?
请长辈们多多指点!

出0入0汤圆

发表于 2008-4-19 12:01:16 | 显示全部楼层
可是我不知道使用延时函数-delay-ms(n)时,
当n=100时,延时多长时间? 难道是100ms吗?

出0入0汤圆

发表于 2009-10-31 19:51:34 | 显示全部楼层
晕死,让新手用mega64点灯,狂汗!!!!!!

出0入0汤圆

发表于 2009-10-31 20:51:53 | 显示全部楼层
#include <avr/io.h>是AVR单片机的定义I/O端口的头文件;
#include <avr/delay.h>是延时函数的头文件。
我也是AVR的初学者,不知道以上的答案对与否?
请长辈们多多指点!


------------------------
这个是对的
现在新版本的winavr据说能最大延时5000ms



可是我不知道使用延时函数-delay-ms(n)时,
当n=100时,延时多长时间? 难道是100ms吗?

------------------
这个函数应该是_delay_ms(n)
是下划线的

出0入0汤圆

发表于 2009-10-31 20:52:56 | 显示全部楼层
还有延时正确的前提是makefile里面设置好了正确的晶振频率

出0入0汤圆

发表于 2009-10-31 20:57:13 | 显示全部楼层
晕死,让新手用mega64点灯,狂汗!!!!!
//////////////////////////////////////////////////////////////////
一步到位。

出0入0汤圆

发表于 2009-11-1 11:56:54 | 显示全部楼层
刚开始学习,遇到问题在所难免
开始学习的时候没有遇到的问题,在以后的学习中还是会遇到
给一个完整的工程给新手,还不如教我们去怎么建立工程并去实现

授人以鱼,不如授人以渔

出0入0汤圆

发表于 2009-12-28 11:27:21 | 显示全部楼层
学习中 ......

出0入0汤圆

发表于 2009-12-28 18:35:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-13 09:12:22 | 显示全部楼层
我也是初学者,受益匪浅啊,谢谢分享

出0入0汤圆

发表于 2010-4-13 13:35:00 | 显示全部楼层
感谢楼主!

出0入0汤圆

发表于 2010-6-2 14:00:29 | 显示全部楼层
用mega8吧,便宜点的!

出0入0汤圆

发表于 2010-9-12 12:39:17 | 显示全部楼层
回复【22楼】kuwu_007
-----------------------------------------------------------------------

回复【6楼】cltemail 常乐天
-----------------------------------------------------------------------

顶!!

出0入0汤圆

发表于 2011-3-1 22:51:05 | 显示全部楼层
我把楼主的范例移植到了M8上了,效果不错的,我也改了一下延时的时间数据,基本可以理解程序的意思,但是我是新手的新手,希望能得到各位前辈的指点,在下感激不近
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 07:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表