AVR学习板讲座Word格式文档下载.docx

上传人:b****3 文档编号:8298300 上传时间:2023-05-10 格式:DOCX 页数:18 大小:32.09KB
下载 相关 举报
AVR学习板讲座Word格式文档下载.docx_第1页
第1页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第2页
第2页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第3页
第3页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第4页
第4页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第5页
第5页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第6页
第6页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第7页
第7页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第8页
第8页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第9页
第9页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第10页
第10页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第11页
第11页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第12页
第12页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第13页
第13页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第14页
第14页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第15页
第15页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第16页
第16页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第17页
第17页 / 共18页
AVR学习板讲座Word格式文档下载.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

AVR学习板讲座Word格式文档下载.docx

《AVR学习板讲座Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《AVR学习板讲座Word格式文档下载.docx(18页珍藏版)》请在冰点文库上搜索。

AVR学习板讲座Word格式文档下载.docx

d、C程序中可以加入一些说明文字,单行以双斜扛“//”开始,如果是多行,就用"

/*"

开始,以“*/”结束,如/*注释*/。

e、函数可以有参数,一律放在小括号内。

f、利用C语言可以轻松的对AVR的设备组件进行操作,如程序中的PORTA=0x0F;

g、任何一个AVRC程序都必须是一个无限循环,否则程序会沿着程序存储区一直运行,直至溢出程序存储区,程序从头运行。

2、AVRC语言的基本字符、标识符和关键字

avrc语言和普通c语言一样,基本字符有阿拉伯数字0~9;

大小写拉丁字母a~z和A~Z;

一些选定的可打印字符,如"~!

@#¥%^&*()_-+={}[],.;

<>/?

|\";

空格符、换行符和制表符这三种空白符起到分割成分和编排格式的作用。

对系统对象命名,称为标识符。

标识符由数字、字母、下划线组合的字符串序列构成,字母区分大小写。

如下都是合法的表示符:

AVR_IOPORTACSRIT0temp1

注意:

不能以数字开头的字符串做标识符。

比如1abc是不合法的。

C语言的合法标识符有一部分被编译器保留作为特殊用途,这样的标识符称为关键字。

C语言的关键字有:

(以字母先后为序)

autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile

注意,原则上除关键字外,可以使用任何有效的标识符。

但实际上,根据系统不同,有些特殊标识符具有特殊含义,不应被使用。

在AVR里,一些端口的名称、寄存器的名称已经被系统定义,最好不要改变其定义,如PORTADDRATIMASK等。

3、数据类型

C语言严格规定数据类型,AVR资源有限,如果数据类型选用不好,资源很快就会耗尽。

如,尽量不要使用浮点类型的运算,1.2*1.2的浮点数运算至少要占用mega16的百分之十以上的空间。

选择数据类型时需要注意不要操作数据能表示的范围,比如要表示60000,就不能用char,必须用int。

整数类型的类型名前可加修饰符unsigned和signed,表示无符号数和有符号数,其中unsigned可以省略,默认表示无符号数,一般来说,尽量使用无符号数可以节约资源。

以下三种为整数类型:

1、整数类型:

一般类型的整型int,16位二进制编码,表示的数0~65536,及216。

有符号类型,signedint表示范围-32768~32767。

2、长整型类型:

长整型(longint)类型的二进制编码是32位。

有符号的长整型类型(long)表示范围-231~231-1;

无符号的类型(unsignedlong)的表示范围为0~232-1。

3、超长整数类型:

超长整数类型(longlong)的二进制编码是64位。

有符号的长整型类型(long)表示范围-263~263-1;

无符号的类型(unsignedlong)的表示范围为0~264-1。

以下为实数类型(浮点数类型):

1、单精度浮点数类型:

float,用32位二进制数表示。

2、双精度浮点数类型:

longdouble,用64位二进制数表示。

字符类型和字符串

字符类型的类型名为char,目前最常用的是ASCII字符集,其中字符包扩所有的大小写字母,数字,常用字符等共计128割字符。

扩展的ASCII字符集包括256个字符,字符类型占用一个字节。

一些特殊的字符串的表示方法:

以反斜扛加特定字符。

如'

\n'

回车符;

‘\"

’双引号;

‘\'

’单引号字符;

‘\\’反斜杠。

无符号的字符类型:

char表示范围0~255。

有符号的字符类型:

signedchar表示范围-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位机中的佼佼者。

第二讲M16IO口的使用方法

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

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

如下图所示

在这个电路里面,当mega16单片机进行工作的时候,我们可以使用按键给单片机系统进行手动复位。

晶振电路:

在这个电路里面,我们采用了,7.3728Mhz的晶振,方便我们进行串口实验。

模拟电压和参考电压:

这个地方在模拟电压和数字电压之间我们使用一个电感隔离一下。

ISP下载电路:

MOSI对应的是PB5

SCK对应的是PB7

MISO对应的是PB6

JTAG仿真电路:

这里:

TCK对应的是PC2

TDO对应的是PC4

TMS对应的是PC3

TDI对应的是PC5

按照这个进行连接,我们就可以让mega16进行工作了。

下面我们可以结合ICCAVR软件进行学习io的使用了

我们先看看硬件电路上面如何连接:

硬件对应的io接口

LED0-------------------PA6

LED1-------------------PA7

LED2-------------------PC0

LED3-------------------PC1

LED4-------------------PC6

LED5-------------------PC7

现在我们先熟悉一下ICCAVR软件吧,安装好以后并crack以后,我们可以看见如下的图标:

我们双击便可以打开界面,如果看见

,这个样子就表示crack成功,如果没有成功,请重新crack一下。

打开软件后,我们先建立一个工程,

-→new,然后我们可以根据需要进行设置路径和项目名称。

然后在

--→option,选择器件。

如下图所示:

现在一个工程就建立好了,然后我们就要进行mega16单片机设置了。

选择界面上的

,这个操作,我们就可以看见一个配置界面。

选择好目标cpu和晶振以后,我们就可以选择PORTS了。

点击PORTS,然后我们看到如下的界面:

因为我们使用的io口为PA6和PA7,那么,我们要做如下的设置

在PortA口上面设置io输出,并且是高电平输出。

我们现在就可以点击ok了。

此时界面上出现如下的程序:

//ICC-AVRapplicationbuilder:

2008-10-98:

12:

38

//Target:

M16

//Crystal:

7.3728Mhz

//作者:

南京华岳电子练祥华

//功能:

学习io的程序

voidport_init(void)

{

PORTA=0xC0;

DDRA=0xC0;

PORTB=0x00;

DDRB=0x00;

PORTC=0x00;

//m103outputonly

DDRC=0x00;

PORTD=0x00;

DDRD=0x00;

//callthisroutinetoinitializeallperipherals

voidinit_devices(void)

//stoperrantinterruptsuntilsetup

CLI();

//disableallinterrupts

port_init();

MCUCR=0x00;

GICR=0x00;

TIMSK=0x00;

//timerinterruptsources

SEI();

//re-enableinterrupts

//allperipheralsarenowinitialized

//

voidmain(void)

init_devices();

//insertyourfunctionalcodehere...

然后我们进行手工添加部分程序,将这个程序编写完整就可以了,具体程序如下:

voidDELAY()//Ñ

Ó

Ê

±

×

³

Ì

Ð

ò

usnignedinti;

for(i=0;

i<

50000;

i++)

{

;

}

while

(1)

DELAY();

PORTA=0x80;

PORTA=0x00;

现在我们编好程序了,然后添加到项目中去,进行编译,点击

,这个图标就可以进行直接编译了。

下面,我们进行在avrstdio中使用软件仿真,可以看出io的变化。

先点击avrstdio的图标

进行启动软件。

出现如下界面:

我们在OPEN中打开刚才所建立的文件,如下图:

选择.cof文件打开即可,此时,我们看到打开后的界面。

然后点击finish按键,然后我们可以选择如下图的io设置,这样我们就能看清楚io的变化了。

并且,我们点击

,用来设置断点,以方便观测io变化。

现在我们运行一下程序,点击

,就会发现如下图所示:

继续点击全速运行图标,或者按键F5,就会出现如下:

此时io上面的一个led应该会被点亮。

我们继续按F5,就会出现如下:

此时两个灯都被点亮了,然后取消断点,全速运行就可以了。

第三讲外部中断的使用

我们先看看Mega16单片机的外部中断的引脚和接口。

我们可以看到PD2是接在外部中断0上面的,现在我们在这个地方接一个按键,用来表示进入外部中断,同时点亮LED0,LED的电路图如下所示。

在这里我们只要对KEY1进行编程,然后使用按键操作,在stdio里面设置断点就可以了,在程序里面就能看到中断的情况了。

还是老规矩,打开iccavr,我们先建立项目,选择芯片,同时选择目标芯片,如图所示:

设置晶振,如下图所示。

此时,我们设置PORTD2为内部上拉。

点击ports按键如下设置:

然后点击ok出现如下程序:

2008-10-1010:

14:

11

学习外部中断0的程序

PORTA=0x40;

DDRA=0x40;

PORTD=0x04;

#pragmainterrupt_handlerint0_isr:

2

voidint0_isr(void)

//externalinteruptonINT0

GICR=0x40;

现在我们可以进行修改程序,在中断程序里面,我们可以修改成中断一次,给LED0取反一次。

22:

56

#defineLED_COMPORTA^=(1<

<

PA6)//

LED_COM;

编译后,在avrstdio中使用软件仿真可以看到如下结果:

先设置断点

将PORTD口如下设置:

点击全速运行可以看见如下2个结果:

这个是LED0点亮的状态

这个是LED0熄灭的状态。

第四讲定时器的使用

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

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

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

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

如图所示:

工程建好以后,下面我们就开始选择目标器件,在option里面选择mega16。

然后点击OK,选择

图标开始配置器件。

出现下图所示:

我们按照如上图配置好以后,选择PORTS,就出现了如下的界面:

这次我们选择TIMER0进行操作,则会出现如下的界面:

按照上图设置好以后,我们按下ok就会出现如下的程序:

2008-10-117:

38:

57

学习定时中断0的程序

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2