社区导航

 

搜索
查看: 93124|回复: 209

[资料分享] 【社区大讲堂】之让我们学学AVR! (m16;led流水灯;外部中断;定时器;串口中断)

[复制链接]

1848

TA的帖子

0

TA的资源

禁止发言

发表于 2008-9-26 16:26 | 显示全部楼层 |阅读模式
【社区大讲堂】之万人学习51单片机!之后,EEWORLD又推力作让我们学学AVR! 火热进行中......     

       讲座资料已经更新完毕,请大家有问题直接发问。


      讲座资料集锦:

     
             (, 下载次数: 1313)

1848

TA的帖子

0

TA的资源

禁止发言

 楼主| 发表于 2008-9-26 16:32 | 显示全部楼层

讲座相关资料汇总贴

ICCAVR软件下载  http://bbs.eeworld.com.cn/thread-66930-1-1.html
stdio软件下载       http://bbs.eeworld.com.cn/viewthread.php?tid=66931&page=1&extra=
m16中文手册       http://bbs.eeworld.com.cn/viewthread.php?tid=66940&pid=118097&page=1&extra=page%3D1
cvavr软件下载     http://bbs.eeworld.com.cn/thread-66937-1-1.html

AVR单片机学习笔记--基于ATmega16 共21篇(推荐 ——tiankai001
http://bbs.eeworld.com.cn/thread-80081-1-1.html

回复

使用道具 举报

1848

TA的帖子

0

TA的资源

禁止发言

 楼主| 发表于 2008-9-26 16:33 | 显示全部楼层

第一讲:AVR软件、工具、m16的基础知识

10月6日
主要内容有 ICCAVR、STDIO、AVR C语言简明教程、avr的特性
avr单片机的主要软件开发工具有:iccavr软件、stdio软件;
avr单片机的主要开发工具有:JTAG仿真器、ISP下载线、STK500下载线
avr M16单片机的开发板
第一步 安装ICCAVR
第二步 安装stdio
第三步 介绍avr c语言的语法
1、一个简单的AVR程序
#include

#include
void main()
{
  PORTA = 0x0F; //给PA口赋值,让PA口低四位为1,高四位为0
while(1)  ;
}

本程序的作用是把PA口的值设为0x0F。
a、程序中以#号开头的语句#include 是包含特定的头文件,叫预处理指令,iom16v表示使用的是mega16,macros.h包含了必须的avr操作命令。
b、C语言的程序是由函数构成的,如上面的那个void main(),前面的void表明函数没有返回值。每一个c程序里面里有且只有一个main()函数,系统启动后就从main()开始运行。
c、函数内部的内容以大括号“{”和"}"扩起来,每句语句用分号“;”结束,若分号前面没有内容,编译之后也无任何操作语句。
d、C程序中可以加入一些说明文字,单行以双斜扛“//”开始,如果是多行,就用"/*"开始,以“*/”结束,如 /*注释 */ 。
e、函数可以有参数,一律放在小括号内。
f、利用C语言可以轻松的对AVR的设备组件进行操作,如程序中的PORTA = 0x0F;
g、任何一个AVR C程序都必须是一个无限循环,否则程序会沿着程序存储区一直运行,直至溢出程序存储区,程序从头运行。
2、AVR C语言的基本字符、标识符和关键字
avr c语言和普通c语言一样,基本字符有阿拉伯数字0~9;大小写拉丁字母a~z和A~Z;一些选定的可打印字符,如"~!@#¥%^&*()_-+={}[],.;<>/?|\";空格符、换行符和制表符这三种空白符起到分割成分和编排格式的作用。
对系统对象命名,称为标识符。标识符由数字、字母、下划线组合的字符串序列构成,字母区分大小写。如下都是合法的表示符:
AVR_IO PORTA CSR IT0 temp1
注意:不能以数字开头的字符串做标识符。比如 1abc 是不合法的。
C语言的合法标识符有一部分被编译器保留作为特殊用途,这样的标识符称为关键字。C语言的关键字有:(以字母先后为序)
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while
注意,原则上除关键字外,可以使用任何有效的标识符。但实际上,根据系统不同,有些特殊标识符具有特殊含义,不应被使用。在AVR里,一些端口的名称、寄存器的名称已经被系统定义,最好不要改变其定义,如PORTA DDRA TIMASK 等。
3、数据类型
C语言严格规定数据类型,AVR资源有限,如果数据类型选用不好,资源很快就会耗尽。如,尽量不要使用浮点类型的运算,1.2*1.2的浮点数运算至少要占用mega16的百分之十以上的空间。
选择数据类型时需要注意不要操作数据能表示的范围,比如要表示60000,就不能用char,必须用int。
整数类型的类型名前可加修饰符unsigned和signed,表示无符号数和有符号数,其中unsigned可以省略,默认表示无符号数,一般来说,尽量使用无符号数可以节约资源。
以下三种为整数类型:
1、整数类型:一般类型的整型 int,16位二进制编码,表示的数0~65536,及216。有符号类型,signed int 表示范围-32768~32767。
2、长整型类型:长整型(long int)类型的二进制编码是32位。有符号的长整型类型(long)表示范围-231~231-1;无符号的类型(unsigned long)的表示范围为0~232-1。
3、超长整数类型:超长整数类型(long long)的二进制编码是64位。有符号的长整型类型(long)表示范围-263~263-1;无符号的类型(unsigned long)的表示范围为0~264-1。
以下为实数类型(浮点数类型):
1、单精度浮点数类型:float,用32位二进制数表示。
2、双精度浮点数类型:long double,用64位二进制数表示。
字符类型和字符串
字符类型的类型名为char,目前最常用的是ASCII字符集,其中字符包扩所有的大小写字母,数字,常用字符等共计128割字符。扩展的ASCII字符集包括256个字符,字符类型占用一个字节。
一些特殊的字符串的表示方法:以反斜扛加特定字符。如 ' \n ' 回车符; ‘ \" ’ 双引号; ‘ \' ’ 单引号字符; ‘ \\ ’ 反斜杠。
无符号的字符类型: char 表示范围 0~255。
有符号的字符类型: signed char表示范围-128~127。

第四步 AVR的特性介绍

  高可靠性、功能强、高速度、低功耗和低价位 , 一直是衡量单片机性能的重要指标,也是单片机占领场、赖以生存的必要条件。

  早期单片机主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,所以采取稳妥方案:即采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。以后的 CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观(51以及51兼容)。此间虽有某些精简指令集单片机(RISC)问世,但依然沿袭对时钟分频的作法。

  AVR单片机的推出,彻底打破这种旧设计格局,废除了机器周期,抛弃复杂指令计算机(CISC)追求指令完备的做法;采用精简指令集,以字作为指令长度单位,将内容丰富的操作数与操作码安排在一字之中(指令集中占大多数的单周期指令都是如此),取指周期短,又可预取指令,实现流水作业,故可高速执行指令。当然这种速度上的升跃,是以高可靠性为其后盾的。

  AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。故AVR单片机在软/硬件开销、速度、性能和成本诸多方面取得了优化平衡,是高性价比的单片机。

  AVR单片机内嵌高质量的Flash程序存储器,擦写方便,支持ISP和IAP,便于产品的调试、开发、生产、更新。内嵌长寿命的EEProm可长期保存关键数据,避免断电丢失。片内大容量的RAM不仅能满足一般场合的使用,同时也更有效的支持使用高级语言开发系统程序,并可像MCS-51单片机那样扩展外部 RAM。

  AVR单片机的I/O线全部带可设置的上拉电阻、可单独设定为输入/输出、可设定(初始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使的得I/O口资源灵活、功能强大、可充分利用。

  AVR单片机片内具备多种独立的时钟分频器,分别供URAT、I2C、SPI使用。其中与8/16位定时器配合的具有多达10 位的预分频器,可通过软件设定分频系数提供多种档次的定时时间。AVR单片机独有的“以定时器/计数器(单)双向计数形成三角波,再与输出比较匹配寄存器配合,生成占空比可变、频率可变、相位可变方波的设计方法(即脉宽调制输出PWM)”更是令人耳目一新。

  增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验侦错、两级接收缓冲、波特率自动调整定位(接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过MCS-51/96单片机的串口,加之AVR单片机高速,中断服务时间短,故可实现高波特率通讯。

  面向字节的高速硬件串行接口TWI、SPI。TWI与I2C接口兼容,具备ACK信号硬件发送与识别、地址识别、总线仲裁等功能,能实现主/从机的收/发全部4种组合的多机通信。SPI支持主/从机等4种组合的多机通信。

  AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BOD,多个复位源(自动上下电复位、外部复位、看门狗复位、BOD复位),可设置的启动后延时运行程序,增强了嵌入式系统的可靠性。

  AVR单片机具有多种省电休眠模式,且可宽电压运行(5-2.7V),抗干扰能力强,可降低一般8位机中的软件抗干扰设计工作量和硬件的使用量。

  AVR单片机技术体现了单片机集多种器件(包括FLASH程序存储器、看门狗、EEPROM、同/异步串行口、TWI、SPI、A/D模数转换器、定时器/计数器等)和多种功能(增强可靠性的复位系统、降低功耗抗干扰的休眠模式、品种多门类全的中断系统、具输入捕获和比较匹配输出等多样化功能的定时器/计数器、具替换功能的I/O端口…… )于一身,充分体现了单片机技术的从“片自为战”向“片上系统SoC”过渡的发展方向。

  综上所述,AVR单片机博采众长,又具独特技术,不愧为8位机中的佼佼者。


[ 本帖最后由 njlianjian 于 2008-10-8 09:45 编辑 ]

回复

使用道具 举报

1848

TA的帖子

0

TA的资源

禁止发言

 楼主| 发表于 2008-9-26 16:37 | 显示全部楼层

第二讲:M16 IO口的使用方法

10月7日 M16 IO口的使用方法

我们使用的是mega16芯片,在使用之前,我们首先要做的就是将最小系统构建好。

复位电路,由于mega16是低电平复位。

如下图所示

(, 下载次数: 13)

回复

使用道具 举报

1848

TA的帖子

0

TA的资源

禁止发言

 楼主| 发表于 2008-9-26 16:39 | 显示全部楼层

第三讲 外部中断的使用

10月8日

第三讲 外部中断的使用

我们先看看Mega16单片机的外部中断的引脚和接口。如下图所示:

(, 下载次数: 2)

回复

使用道具 举报

1848

TA的帖子

0

TA的资源

禁止发言

 楼主| 发表于 2008-9-26 16:40 | 显示全部楼层

第四讲 定时器的使用

10月9日

定时器我们在中断里面也讲过了,就是在定时一个时间周期的时候进入中断来处理中断程序,可以作为计时、计数、扫描等用途。

同样的,在今天的这一讲里面,我们要做的是,还是采用设置断点的方式对LED0进行处理,因为我们的硬件平台还没有做好,所以目前只能这么将就着,但是原理都是一样的。

首先,我们还是老规矩,建立一个工程。

1、 打开iccavr软件,新建一个工程。

如图所示:

(, 下载次数: 2)

回复

使用道具 举报

1848

TA的帖子

0

TA的资源

禁止发言

 楼主| 发表于 2008-9-26 16:42 | 显示全部楼层

第五讲:串口中断的使用

10月10日

这一讲主要讲串口中断的使用,由于是软件模拟,我们也仅仅是讲一下原理,具体调试过程等板子到了以后就可以上传了。

首先,我们先建立工程,并选择器件,如图所示:
(, 下载次数: 4)

回复

使用道具 举报

491

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2008-9-26 16:45 | 显示全部楼层
赶快置顶啊,我都流口水了,呵呵

回复

使用道具 举报

2万

TA的帖子

74

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2008-9-26 16:59 | 显示全部楼层
原帖由 springvirus 于 2008-9-26 16:45 发表
赶快置顶啊,我都流口水了,呵呵


HOHO,springvirus可以先借助十一长假,养足精神,回来后就要努力学习了哦!

回复

使用道具 举报

20

TA的帖子

0

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2008-9-26 22:33 | 显示全部楼层
机会来了,我要把握,不给自己留下后悔。

回复

使用道具 举报

20

TA的帖子

0

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2008-9-26 22:48 | 显示全部楼层
先提个问题
    为了能顺利学习好AVR单片机,在授课前除了养足精神还需要我们做那些准备呢?例如......。

回复

使用道具 举报

2万

TA的帖子

74

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2008-9-27 00:17 | 显示全部楼层
原帖由 ZQK 于 2008-9-26 22:48 发表
先提个问题
    为了能顺利学习好AVR单片机,在授课前除了养足精神外还需要我们做那些准备呢?例如......。


这得问老练了!

老练!老练!哈哈

回复

使用道具 举报

491

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2008-9-27 08:16 | 显示全部楼层
附上毛主席的一首诗:
红军不怕远征难,
万水千山只等闲。
五岭逶迤腾细浪,
乌蒙磅礴走泥丸。
金沙水拍云崖暖,
大渡河横铁索寒。
更喜岷山千里雪,
三军过后尽开颜。

如此看,还有什么困难不能克服呢??

回复

使用道具 举报

1848

TA的帖子

0

TA的资源

禁止发言

 楼主| 发表于 2008-9-27 20:23 | 显示全部楼层
呵呵 最近在整理资料呢 呵呵 准备这次比51单片机搞得更好一些

回复

使用道具 举报

37

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2008-9-27 20:40 | 显示全部楼层

回复 14楼 njlianjian 的帖子

哈哈.....期待呀!!!!!

回复

使用道具 举报

102

TA的帖子

0

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2008-9-28 05:30 | 显示全部楼层
抢啊,好东西啊,嘿嘿,我。。。。

回复

使用道具 举报

1848

TA的帖子

0

TA的资源

禁止发言

 楼主| 发表于 2008-9-28 09:25 | 显示全部楼层
我打算结合硬件平台一起做讲座 呵呵 这样一方面比较直接 另一方面也有个图片可以看出实际效果

回复

使用道具 举报

491

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2008-9-28 10:03 | 显示全部楼层
是啊,这样的效果应该会更好

回复

使用道具 举报

2万

TA的帖子

74

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2008-9-28 11:17 | 显示全部楼层
支持下啊!

不管是哪年,都要加油!继续为中国电子行业做出小小的贡献吧! 扣扣 1206973913


回复

使用道具 举报

371

TA的帖子

0

TA的资源

裸片初长成(初级)

Rank: 10Rank: 10Rank: 10

发表于 2008-9-28 23:21 | 显示全部楼层
支持,正在学习中

回复

使用道具 举报

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

关闭

站长推荐上一条 /6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-2-29 18:53 , Processed in 0.554128 second(s), 19 queries , Gzip On, MemCache On.

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