AVR单片机学习(三)开发基础知识

发布者:码字狂人最新更新时间:2015-02-06 来源: 51hei关键字:AVR  单片机学习  基础知识 手机看文章 扫描二维码
随时随地手机看文章

一、AVR开发工具简介及开发环境的建立

 

  • 软件开发工具
  1. 编译环境:WinAVR
  2. 下载软件:MucodeISP
  3. 仿真环境:AVR Studio
  4. 集成环境:AVR Studio,可以内联WinAVR 成为一个具有编译、仿真、下载功能的集成环境
  • 硬件开发工具
  1. 下载线(并口也有USB接口的,功能是下载程序配置熔丝位)
  2. 仿真器
  3. 学习板(或手工焊接的系统板)
  • 工具手册
  1. WinAVR技术手册
  2. ATmega16官方中文版技术手册(英文水平好也可以看看英文版)

WinAVR 说明

WinAVR 下载安装后只用到PN其他删除就行了、PN我们一般把他作为一个编辑环境来使用,保存为.c文件之后他就会变成一个有颜色的C文件了,这个有点就显示出来了(关键字带颜色深蓝色和点击小括号其中另一半就会高亮很多层括号就有用了)而WinAVR 的编译功能需要编写Makefile文件所以对初学者有难度先不介绍了。而编译使用AVR Studio来完成就可以了。

下载线作用

一、修改熔丝位   熔丝位可理解为是一个独立于CPU之外的一块小存储区它保存了一些关键的控制位、如:时钟源、一些I/O口的特殊作用。

二、向单片机Flash中下载程序代码。不具备单步调试仿真功能。

三、下载线有很多种,最常用的是插在计算机并口上的STK200/300 

下载软件说明

下载软件有很多、但推荐初学者使用Mucode isp 优点是熔丝位设置很清晰,不至于设错而锁死芯片

 MUcode ISP 如果外部石英晶振高于8MHZ 也选3.0---8MHZ    防止锁死如果芯片锁死了,就下载不进去程序了。芯片解锁只能采用高压编程器,将熔丝位修改回来。然后另一个比较重要的熔丝位是(共16个红点和绿点)这个表示的是ATmega16 的2字节的熔丝位,上面8个表示时钟电源模式。更改时钟的话上面8个自动做出相应的变化。变绿=1  表示没有使能变红表示使能的红点按下去就是使能的意思就好在这里。下面8个最重要的是JTAGEN这个,打开ATmega16 技术文档发现JTAG有个4个脚和普通的I/O口是复用的(TDI TDO TMS TCK )可以配置成普通I/O用也可以当JTAG接口用。现在JTAGEN =0 红色 说明这个4个只能当JTAG 口用。所以在编程的时候对这4个I/O操作就是无效的。点一下变绿了就不使能了,可以当普通I/O口用,当然这个时候JTAG仿真器就连不上了。CKOPT 这个熔丝位如果使能外部晶振的振幅就会变得比较大,示波器就能看的出来会变成5V左右的振幅,如果不使能,晶振就工作与一种低功耗的模式,振幅比较小。初学不用管。EESAVE表示向Flash编程的时候是否擦出内部的EEPROM ,使能就是不擦出,当初学用不到。

一般我们只管设置时钟(前8个 选了就不用管了)和JTAGEN (下面8个其中的一个)就行了。下载线和下载软件

 



 

  •  AVR Studio 是Atmel公司官方的汇编、下载与仿真软件可以内联WinAVR获得C语言编译能力。单独装AVR Studio只能编译汇编语言的代码,通过JTAGE 工具也具有下载仿真的功能也可以更改熔丝位不过熔丝位不够直观。内联就可以获得C语言编译能力了。
  • JTAG ICE 是Atmel公司官方的仿真调试器,但已经被仿制,价格比官方版本要便宜十倍
  • 可以使用淘宝购买的JTAGEICE 当然你买的时候最要要卖家给发给你个AVR Studio 的版本

 装了AVR Studio 4

创建一个项目如下图[page]

点击下一步


选着JTAGE ICE   ATmega16 点击完成

 

 

进入项目

点击project 下的配置选项 (configuration options)

填入:晶振频率和代码优化   选项(-00  -01   -02   -03   -0s) 从小到大  0s 最大的优化越好编译出的代码越小,执行速度越快。我们选-00 因为在优化的情况下有些时候会出现一些极其少见的问题。建议选-00

点击确定。

 

注意AVR都要包含一个最为基本的头文件

#include  //在C:\WinAVR\avr\include\avr 这个路径下就有io.h文本文件  可以用PN打开看看

//在AVR Studio下编译代码就不如在 WinAVR下编译好如括号不好用。[page]

 

调试如下


这样其实已经通过仿真器已经下载到了单片机里面了,这就提到一个JTAG的一个好处,JTAG 一边是DB9头一边就是JTAG仿真接口接单片机。所以仿真什么结果实际运行就是什么结果是一样的。51不带JTAG口一般采用伟福仿真器。、它的仿真是一种ROM仿真,仿真时候使用仿真头来代替单片机来进行仿真,最后再下载进去,所以最后运行的结果不一定是一样的。

 

 

 

二、计算机原理基础知识讲解

  •  数值就是一位数字能够表示的数的数量,N进制数的进位规则是“冯N进1

        常用的数制有十进制、二进制、十六进制

        人类有十个指头,所以习惯采用十进制

         计算机只能识别0和1,采用二进制

        为了计算机学中的数据写方便,采用十六进制

      位于字节的概念:

     位(bit):简写为b,表示二进制数的一位。

     字节(byte):简写为B,8位为一字节

    数值转换工具:Windows自带的计算器


1Byte = 8bit

1字节=2位十六进制数

例如:

0x55 = 0b01010101 = 85

0xa3 = 0b10100011 = 163

  •  存储器

对于8位单片机,其内部存储器均为8位。

RAM与ROM 模型



 

 这是一个1K大小的ROM   1024-1=1023 = 0x3FF   1维的模型  每一个地址对应一个存储单元,一个存储单元房的有数据像上图的0x23  0x55 0x6a  ...0xcf等  存储的都是8位的二进制数。外部模型如右边的  主要有2组总线一边是地址线一边是数据线(其实还有个控制总线没画出),对这个RAM读写给地址线送一个相应地址通过控制总线表示当前是读模式,相应的数据线就将对应的地址存的内容送到数据线上。对于ROM也是这样的。[page]

  • CPU

 

CPU即是为中央处理器

取指令-执行



 

 

三、C语言基础知识讲解

  •  变量
  • 运算符
  • 语句
  • 函数
  • 顺序语句
  • 选择语句
  • 循环语句
  • 数组和指针

变量:变量就是存储于RAM或ROM中的数据

变量的分类:

单片机中比较常用的是字符型(char)和整型(int)

实型(float)变量在单片机C语言中一般用不到(浮点)

运算符:类似于数学运算中的运算符号(+ - * / 移位等C语言课本后有附表)

语句:C语言中以分号作为一条语句的结束

习惯上每条语句单独占用一行,但也可以每行有多条语句, 用分号隔开即可

DDRx   PORTx  都在io.h  里面有定义   当然内嵌一层(

#elif defined (__AVR_ATmega16__)
include )

在找到iom16.h就有定义地址了

#define DDRC    _SFR_IO8(0x14)
#define DDC0    0
#define DDC1    1
#define DDC2    2
#define DDC3    3
#define DDC4    4
#define DDC5    5
#define DDC6    6
#define DDC7    7

就是说明在 0x14位置  0001 0100  这个地址保存一个8位二进制数  没一位表示一个I/O口的方向

字符型变量

占用存储器中的一个字节空间,即8位二进制数

取值范围:0~(2^8 - 1 )即0~255

可以赋值为整数或ASCII码

char zifu  =97;

char zifu = 'a'//这种特殊方式是‘a’ 字符就是把ASCII码值给了ASCII(2)0--255对应一个字符是一种映射关系单引号告诉编译器从这个码表中取出对应的ASCII码赋值给zifu 查下表得出对应就是97,所以这两条语句是等效的。



前提是先进入调试模式下view下的Watch才能用 不然是灰色的

在Value右键可以选十六进制和十进制 看看  location下显示的是地址(SRAM)中的位置

整形变量

占用存储器中的2个字节,即16位二进制数

有无符号子类型

unsigned int :无符号整型

取值范围0~(2^16-1)即0~65535

signed int 有符号整形,signed 可以省略。

取值范围-2^15 ~ (2^15-1)即-32768 ~ 32767

长整型

取值范围更大的int 子类型

long int :长整形,长度为32位,即4个字节

long long int :长度为64位,即8个字节

常用的运算符

赋值 = 加 + 减 - 乘 * 除 / 括号() 求余%

与& 或| 取反~ 异或^ 左移 << 右移 >>

逻辑与&& 逻辑||

关键字:AVR  单片机学习  基础知识 引用地址:AVR单片机学习(三)开发基础知识

上一篇:AVR单片机学习(五)按键与数码管的程序设计
下一篇:AVR单片机学习(一)

推荐阅读最新更新时间:2024-03-16 13:53

ATtiny13 外部时钟
为了从外部时钟源驱动芯片, CLKI 必须如 Figure 12 所示的进行连接。同时,ATtiny13 熔丝位 CKSEL 必须编程为 “00”。 选择了这个振荡器之后,启动时间由熔丝位 SUT确定,如 Table 7 所示。 为了保证 MCU 能够稳定工作,不能突然改变外部时钟源的振荡频率。工作频率突变超过 2%将会产生异常现象。应该在 MCU 保持复位状态时改变外部时钟的振荡频率。 注意,系统时钟预分频器可用来实现内部时钟频率运行时间改变且保证稳定工作,详见P24“ 系统时钟预分频器 ” 。
[单片机]
ATtiny13 外部时钟
LED散热铝基板基础知识
目前,LED应用的散热问题是LED厂家最头痛的问题。散热基板是一种提供热传导的媒介,LED→散热基板→散热模块,它可以增加LED底部面积,增加散热面积,主要由铜箔电路/陶瓷粉末+高分子/铝基板组成。散热基板于LED产业应用中具有高导热率、安全性、环保性等功能。下面介绍采用铝材料的基板,因为铝的导热系数高,散热好,可以有效的将内部热量导出。铝基板是一种独特的金属基覆铜板,具有良好的导热性、电气绝缘性能和机械加工性能。设计时也要尽量将PCB靠近铝底座,从而减少灌封胶部分产生的热阻。       一、LED铝基板的特点      1.采用表面贴装技术(SMT);      2.在电路设计方案中对热扩散进行极为有效的处理;      3.降
[电源管理]
基于AVR单片机的多功能电源设计
随着 嵌入式 系统设计技术的发展,在设计和仿真中,系统工程师对 电源 的要求也越来越高。在 嵌入式 系统设计是使用8031 单片机 和74系列集成 电路 时,所有使用74系列集成 电路 的电路板都使用单一的5 V 电源 供电就可以了。当时的供电电源部分不是一个需要太多注意的单元,基本上5 V的电源能满足所有的数字 集成电路 设计的需要。而近几年来,随着技术的发展, 集成电路 里的三极管变得越来越小并且工作的电压越来越低,使得嵌入式系统开发的重点从系统的速度,转到低功耗设计上。因此在同一个嵌入式系统中,存在多种不同电压的电源供电,从低于1 V到高于5 V都存在。而且在系统的稳定性和可靠性测试时,还要 模拟 不同的电源故障情况下,比如
[电源管理]
plc编程入门基础知识
  plc编程入门基础知识   PLC编程入门基础知识包括以下几个方面:   1. 了解PLC工作原理和结构:PLC是由中央处理器、存储器、输入/输出模块、编程设备等组成的专用计算机。应该掌握基本的结构及动作原理。   2. PLC编程语言:PLC的编程语言包括指令列表(Ladder Diagram)、函数块图(Function Block Diagram)、状态流图(Sequential Function Chart)和结构化文本(Structured Text)等。初学者可选择常用的指令列表进行学习。   3. PLC输入输出的特点:在PLC的输入输出中,需要了解输入/输出信号的类型(数字输入/输出、模拟输入/输出、计数器和定
[嵌入式]
AVR单片机SPI简单应用
主机程序 #include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int /*----------------------------------------- 函数名称: void delay(uchar Da ta) 函数功能: 延时函数 参 数: 返 回 值: 无 -----------------------------------------*/ void delay(uchar Da ta) { uchar i; while(Da ta--) for(i=125;i 0;i--
[单片机]
PIC单片机以及51和AVR单片机的IO口操作方法解析
对于pic单片机的学习,很多朋友总是能充满激情,不断利用闲余时间研究pic单片机的各类技术。而谈及pic单片机,必须牵扯至51、AVR单片机。因此本文中,将探讨pic单片机以及51、AVR单片机对于IO口的操作。对于本文,希望大家认真研读,以在pic单片机的学习之路上更为精进。 一.51单片机IO口的操作 51单片机IO口的结构比较简单,每个IO口只有一个IO口寄存器Px,而且这个寄存器可以位寻址,操作起来是所有单片机里最简单的,可以直接进行总线操作也可以直接进行位操作,这也是51单片机之所以成为经典的原因之一。下例的运行坏境为Keil软件,器件为AT89S52。 #i nclude sbit bv=P2^0;//定义位变量
[单片机]
PIC<font color='red'>单片机</font>以及51和<font color='red'>AVR</font><font color='red'>单片机</font>的IO口操作方法解析
ucos在AVR ATmega32上的移植(一)
前面介绍了基本的调度原理,现在把它应用到ucos的移植上来,如果你还不明白调度,就别急于移植,因为对堆栈的一丝差错都会造成系统崩溃,而你也很难找到原因之所在。 先看一下ucos的程序结构 进过整理,工程这样组成: 我们主要是对ucos移植中的三个文件进行修改。 1.OS_CPU.H 更改的地方,我用汉语标注 /* ********************************************************************************************************* * uC/OS-II *
[单片机]
ucos在<font color='red'>AVR</font> ATmega32上的移植(一)
51单片机学习笔记:可对时电子钟
本篇是对上一篇的改进,昨天学习了第4章 中的独立键盘的使用 独立键盘拥有自己独有的IO口,所以比较简单,我上一篇写的电子钟程序只能烧程序对时, 不能手动按键对时,这肯定是最差劲的做法,所以学习了按键之后,就立马动手改进我的电子钟了 同时改进了数码管小数点的显示,消除了叠影 使用芯片STC89C52RC, 2个锁存器 6个带小数点共阴极数码管显示一个24时制时钟 没有时钟芯片,所以掉电后时间会复位 原理图为TX-1C开发板 ============================== 最终显示的 时.分.秒 是 16.31.37 形式 使用3个按键, S2 S3 S5 其中S2和S3是加减数值,S5是切换对时状态,
[单片机]
51<font color='red'>单片机</font><font color='red'>学习</font>笔记:可对时电子钟
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved