一、AVR开发工具简介及开发环境的建立
软件开发工具
编译环境:WinAVR
下载软件:MucodeISP
仿真环境:AVRStudio
集成环境:AVRStudio,可以内联WinAVR成为一个具有编译、仿真、下载功能的集成环境
硬件开发工具
下载线(并口也有USB接口的,功能是下载程序配置熔丝位)
仿真器
学习板(或手工焊接的系统板)
工具手册
WinAVR技术手册
ATmega16官方中文版技术手册(英文水平好也可以看看英文版)
WinAVR说明
下载线作用
一、修改熔丝位熔丝位可理解为是一个独立于CPU之外的一块小存储区它保存了一些关键的控制位、如:时钟源、一些I/O口的特殊作用。
二、向单片机Flash中下载程序代码。不具备单步调试仿真功能。
三、下载线有很多种,最常用的是插在计算机并口上的STK200/300
下载软件说明
下载软件有很多、但推荐初学者使用Mucodeisp优点是熔丝位设置很清晰,不至于设错而锁死芯片
MUcodeISP如果外部石英晶振高于8MHZ也选3.0---8MHZ防止锁死如果芯片锁死了,就下载不进去程序了。芯片解锁只能采用高压编程器,将熔丝位修改回来。然后另一个比较重要的熔丝位是(共16个红点和绿点)这个表示的是ATmega16的2字节的熔丝位,上面8个表示时钟电源模式。更改时钟的话上面8个自动做出相应的变化。变绿=1表示没有使能变红表示使能的红点按下去就是使能的意思就好在这里。下面8个最重要的是JTAGEN这个,打开ATmega16技术文档发现JTAG有个4个脚和普通的I/O口是复用的(TDITDOTMSTCK)可以配置成普通I/O用也可以当JTAG接口用。现在JTAGEN=0红色说明这个4个只能当JTAG口用。所以在编程的时候对这4个I/O操作就是无效的。点一下变绿了就不使能了,可以当普通I/O口用,当然这个时候JTAG仿真器就连不上了。CKOPT这个熔丝位如果使能外部晶振的振幅就会变得比较大,示波器就能看的出来会变成5V左右的振幅,如果不使能,晶振就工作与一种低功耗的模式,振幅比较小。初学不用管。EESAVE表示向Flash编程的时候是否擦出内部的EEPROM,使能就是不擦出,当初学用不到。
一般我们只管设置时钟(前8个选了就不用管了)和JTAGEN(下面8个其中的一个)就行了。下载线和下载软件

AVRStudio是Atmel公司官方的汇编、下载与仿真软件可以内联WinAVR获得C语言编译能力。单独装AVRStudio只能编译汇编语言的代码,通过JTAGE工具也具有下载仿真的功能也可以更改熔丝位不过熔丝位不够直观。内联就可以获得C语言编译能力了。


进入项目



注意AVR都要包含一个最为基本的头文件
elifdefined(__AVR_ATmega16__)
defineDDRC_SFR_IO8(0x14)
defineDDC11
defineDDC33
defineDDC55
defineDDC77
就是说明在0x14位置00010100这个地址保存一个8位二进制数没一位表示一个I/O口的方向
字符型变量
占用存储器中的一个字节空间,即8位二进制数
取值范围:0~(2^8-1)即0~255
可以赋值为整数或ASCII码
charzifu=97;
charzifu='a'//这种特殊方式是‘a’字符就是把ASCII码值给了ASCII(2)0--255对应一个字符是一种映射关系单引号告诉编译器从这个码表中取出对应的ASCII码赋值给zifu查下表得出对应就是97,所以这两条语句是等效的。

前提是先进入调试模式下view下的Watch才能用不然是灰色的
在Value右键可以选十六进制和十进制看看location下显示的是地址(SRAM)中的位置
整形变量
占用存储器中的2个字节,即16位二进制数
有无符号子类型
unsignedint:无符号整型
取值范围0~(2^16-1)即0~65535
signedint有符号整形,signed可以省略。
取值范围-2^15~(2^15-1)即-32768~32767
长整型
取值范围更大的int子类型
longint:长整形,长度为32位,即4个字节
longlongint:长度为64位,即8个字节
常用的运算符
赋值=加+减-乘*除/括号()求余%
与或|取反~异或^左移右移
逻辑与逻辑||