AVR_XMEGA_应用教程.pdf

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
AVRXMEGA片内外设应用 注:本内容出自《AVRXMEGA高性能单片机开发及应用》一书的资料光盘,仅 作技术交流之用,不得用于任何商业用途! 经过理论学习之后,从本章开始我们进入实践操练。本章从最基本的实例讲起,希望读 者可以一步一步地跟着练习下去,通过本章学习对AVR Xmega单片机有更深的了解。 当然,要成功开发一个单片机系统首先要有相关的硬件设备,如计算机,仿真器等开发 工具;其次还要有相关的软件配合,如WINAVR,AVRSTUDIO,PROTEL等。对于初学者来说,在 学习本章内容的同时要不断地回顾前几章的内容,因为本章所有的实例全部要以前面几章为 基础,只有学好了前面的内容再来学本章才会事半功倍。 由于XMEGA寄存器众多,采用C语言和汇编语言对XMEGA 编程需要大量查找寄存器的 配置说明,不但影响编程效率,同时也给编程人员带来诸多痛苦。为了解决这个问题,在底 层寄存器与应用程序之间添加一层XMEGA片内外设驱动,这样编程人员在不了解底层寄存器 配置说明的情况下,仍然可以很好的使用一些特定的功能。有关XMEGA片内外设驱动函数简 介见光盘中附录D,XMEGA片内外设驱动源代码见附录E与附录F。 5.1 I/O基础应用实例 XMEGA有灵活的通用I/O (GPIO)端口。每个端口从引脚0到第7引脚共8个引脚,每个 引脚可被配置为输入或输出。端口还有以下功能:中断,同步/异步输入检测和异步发送唤 醒信号。可以单步配置使多个引脚具有相同的配置。所有端口作为通用I/O端口时都可以读 -修改-写(RMW)。 1. 简易I/O引脚的控制 通过不断改变PD4和PD5两个引脚的电平来控制二极管的亮灭。 由于程序执行速度很快,如果在很短的时间内改变PD4和PD5 的状态,人眼是看不出来 的,所以中间必须有个延时程序。硬件连接见图5-1-1: 图5-1-1 LED发光管连接电路 C语言代码: //包含头文件// #include <avr/io.h> #include <util/delay.h> //宏定义// #define LED1_ON() PORTD_OUTCLR = 0x20 #define LED1_OFF() PORTD_OUTSET = 0x20 #define LED2_ON() PORTD_OUTCLR = 0x10 #define LED2_OFF() PORTD_OUTSET = 0x10 //main// int main() { PORTD_DIR = 0x30;//PD5,PD4方向设为输出 while(1) { LED1_ON(); LED2_ON(); _delay_ms(500); LED1_OFF(); LED2_OFF(); _delay_ms(500); } } 汇编代码: //包含头文件// .include "ATxmega128A1def.inc"//器件配置文件,决不可少,不然汇编通不过 .ORG 0 RJMP RESET .ORG 0X100 //跳过中断区0x00-0x0F4 //RESET// RESET: LDI R16,0x30 STS PORTD_DIR,R16 //PD5,PD4方向设为输出 REST_LOOP: LDI R16,0x30 STS PORTD_OUTCLR,R16 LDI R17,200 //设置延时参数 CALL _delay_ms LDI R16,0x30 STS PORTD_OUTSET,R16 LDI R17,200 //设置延时参数 CALL _delay_ms RJMP REST_LOOP //_delay_ms // _d

文档评论(0)

ze122230743 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档