hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 676|回复: 0

自学AVR单片机六(流水灯)

[复制链接]

523

主题

523

帖子

1599

积分

大司空

Rank: 5Rank: 5

积分
1599
发表于 2024-1-17 15:56:21 | 显示全部楼层 |阅读模式
动手学AVR单片机六、流水灯实验 ---基于ATmega64
前面已经了解了AVR单片机的一些知识,另外我们也自制了avr单片机的开发工具,现在开始进入实战演练阶段了。在正式开始之前,强烈建议手头准备一份ATmega64单片机的数据手册(中文和英文的最好都准备了),这个数据手册可以直接从网上下载。
在接下来的学习中,我们主要用到的开发工具是编程器,至于仿真器,可以少用或不用。因为我们开始学习的都是一些比较简单、程序量也不大。当程序中出现问题的时候,我们可以采用在程序可能出现问题的地方增加指示的方法来调试(比较常用的方法是在程序的特定地方点亮或者熄灭LED发光二极管,或者在程序中增加串口输出来提示程序的执行结果)。
一、编译软件的使用
编译软件我们采用WINAVR,也就是俗称的GCC。GCC支持项目开发(就是把项目中所有用到的程序、文件放置在一个文件夹中)。在实际的开发过程中我们可以不必每次都创建新项目,可以直接编写源程序,然后保存为.c格式的文件后直接编译运行就可以了。
安装完GCC后,我们可以对编译器进行一些小小的设置,这样可以是我们编写出来的程序更加直观和便于查看。
1、打开WINAVR中的PN(Programmers NotePad),选择菜单“Tools”下面的“Options”选项,出现如下图所示的对话框

2、选择“Style”选项中的“Schemes”,开始设置程序中不同代码的显示颜色,首先设置预编译指令的颜色,如下图(颜色可以根据个人喜好设置
3、然后设置操作符(包括运算符)的颜色,如下图,

4、接下来设置数字的颜色,如下图
5、这些代码中不同代码设置成不同颜色可以帮助我们更加直观的分析程序,同时也便于我们查找错误,
6、设置打印代码时最多打印列数,如下图

7、设置新建文件的缺省类型(默认为.c文件),如下图
8、编译快捷键设置,如下图
9、经过以上设置以后,GCC编译环境已经基本符合我们的使用习惯了。
二、下面开始我们的第一个实验:流水灯
1、在GCC中新建文件并保存为main.c。输入以下程序代码,然后保存为main.c
#include <avr/io.h>        //io端口寄存器配置文件,必须包含
#include <util/delay.h>       //GCC中的延时函数头文件
int main(void)            //GCC中main文件必须为返回整形值的函数,没有参数
{
PORTB = 0Xff;         //PORTB输出低电平,使LED熄灭
DDRB = 0XFF;           //配置端口PB全部为输出口

while(1)
{
  unsigned char Flow_LED,Delay500ms;     //定义流水灯循环次数以及延时时间变量
  for(Flow_LED = 0;Flow_LED <= 7;Flow_LED++)  //流水灯从0-7总共循环8次
  {   
   PORTB = 0xff & (~(1 << Flow_LED));         //每次循环中点亮一个LED
   
   for(Delay500ms = 0;Delay500ms < 20;Delay500ms++)    //延时500ms
   {
    _delay_ms(100);         //delay.h中的延时1ms函数
   }
  }
  
}
}

2、配置makefile文件,AVR单片机比较麻烦的一点是熔丝位的配置,在我们使用的GCC编译环境中需要配置makefile文件。我们可以使用GCC自带的makefile生成工具MFile来生成makefile文件,也可以从网上(OURAVR网站有个比较详细的makefile文件设置教程)下载一个makefile文件,然后更改其中的内容。makefile文件中主要配置以下几个设置:
单片机型号配置,编译目标文件名称,需要添加编译的其他.c文件(这一选项配置在以后用到时会有所讲解,在此可以不必过多关注),如下图

配置好makefile文件后将它和我们刚才编写的程序保存在同一个文件夹下。这是按下快捷键F9或者选择“Tools”菜单下的“make all”选项,对我们刚刚编写的程序进行编译。编译成功后,GCC的下方会出现如下图所示的提示结果
这说明我们的程序编译成功,没有错误,接下来就可以将生成的.hex文件下载到学习板中,就会看到8个数码管轮流点亮了。

关于这个程序的详细讲解以及相关C语言的知识我们下次再讲。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-1 13:26 , Processed in 0.056424 second(s), 22 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

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