- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
AVR单片机汇编语言编程实验
学院:自动化专业:测控技术与仪器
一、实验名称:
AVR单片机汇编语言编程实验
二、实验目的:
熟悉并掌握AVR单片机指令系统、汇编语言常用伪指令,掌握单片机汇编语言编程
技术,编程实现指定功能,加深对计算机汇编指令的理解。
三、实验仪器:
计算机,VMware,Windows7虚拟机,AtmelStudio开发环境,Proteus仿真开发环
境
四、实验内容、实验过程及结果分析:
1.Flash单元赋值
创建汇编语言工程,目标机型选为Mega128。使用汇编语言伪指令进行编
程,
将下述32字节的常数数据存入首地址为$0160的连续flash存储单元照片中。数
据如下:
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x7;
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8
0x80,0x90,0x88,0x83,0xc6,0xa,0x86,0x8e;
前后16字节分别是字符0-F对应的共阴极和共阳极LED数码管的字形显
示段码。随后使用IDE自带的调试工具,进入debug调试。在调试过程中,在
Flash存储器映像中查找上述存入的数据块所对应的地址,记录Flash存储器映
像。
图1.1.0
如图1所示,数据3f的首地址为$002C0的内存单元中,为$的二倍,因此说
明数据成功存入该段存储单元
2.DATARAM内存块赋值
使用汇编语言指令,将上述存储在Flash中的32个字节单元的数据块依
次赋值给起始地址为$0230的SRAM内存块的相应内存单元,流程如图2.1.0
所示。
图2.1.0
寄存器初始状态如图2.2.0所示。将Z指针指向先前第一位数据的首地址,
并进行一个次数为16的循环,通过LPM指令将储存在Flash中16字节的数据拷
贝至起始地址为$0230的内存单元中,如图2.2.1所示,数据存储状态如2.2.3
所示。
图2.2.0图2.2.1
图2.2.3
R20寄存器状态
3.DATARAM内存块复制
使用汇编语言指令,将上述SRAM内存中起始地址为$0230的32个字节的数
据块整体复制到起始地址为$0320的内存块中,流程如图3.1.0所示。
图3.1.0
首先将X指针指向数据起始地址$0230,将Y指针指向地址$0320,寄存器状
态如图3.2.1所示。随后进行一个次数为16的循环,通过LD与ST指令,将上
述实验数据赋值至首地址为$032的存储单元中,寄存器状态去3.2.2所示,数
据存储状态如3.2.3所示。
图3.2.1图3.2.2
图3.2.3
5.500ms延时流水灯
在AtmelStudio中创建汇编语言工程,使用汇编语言编程,编译链接后,
将HEX文件下载至Proteus中的目标单片机中,驱动PORTA端口上的发光二
极管实现流水灯显示效果(8个发光二极管轮流点亮);观察程序运行效果,记
录流水灯相邻灯的点亮时间间隔;修改延时子程序,计算延时时间,实现流水灯
间隔500ms依次点亮,程序流
文档评论(0)