下载此文档

avr单片机实验-实验三.docx


文档分类:高等教育 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
实验三、汇编语言程序设计
电气工程及其自动化2班李钦豪 18号
源程序要求:
把Flash中地址为0x003开始的20个字单元内的代码作为20个16位二进制符号数,将它们分别取绝对值后存储到SRAM中,要求低字节在前,高字节在后。
设SRAM中有个起始地址为$0061的数据块(块长放在$0060单元),数据块内每个存储单元含有两个十六进制数(高4位和低4位),试分别求出这些十六进制数的ASCII码,放在SRAM中以$0163为起始地址的存储区,要求低4位数的ASCII码在前,高4位数的ASCII码在后。
指令应用课件例子中如将“求最大值”改为“求最小值”(分别考虑符号数和无符号数),程序如何修改?
设SRAM中0x0060和0x0061单元存储的是一个16位二进制数(0x0061为高字节),试调用代码转换子程序和延时子程序,把这个数转换成十进制数(BCD码),并把其万、千、百、十、个位用一个数码管轮流显示出来,每位显示时间约1秒钟(画电路图、编程、调试、Proteus仿真、下载到实验板进行验证) 。
实验要求:
主程序中一定要初始化堆栈指针。
求绝对值、代码转换、延时采用子程序调用的方式。
调试方法:单步执行(Step Into)、单步越过子程序(Step Over)、跳出子程序(Step Out)、设断点执行、运行到光标处等。
观察:寄存器(Register)窗口、存储器(Memory)窗口、处理器(Processor)窗口。留意每条指令执行后PC值、运行时间、相关寄存器或存储器的内容,特别注意调用子程序及子程序返回时PC、SP及堆栈区的内容。(数码管显示实验中,Proteus电路图应与实验板接线一致,以便对比)。
实验源程序及调试结果
1.
;**********符号数求绝对值**********
.include ""
.equ flashadr=$003;符号数存放起始地址
.equ len=20;块长
.equ sramadr=$0060;绝对值存放起始地址
.org $0000
rjmp main
.org $003
;定义flash中20个字单元的内容
.dw -900,-800,-700,-600,-500,-400,
.dw -300,-200,-100, 0,100,200,300
.dw 400,500,600,700,800,900,0
main:
;设置堆栈指针
ldi r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16
ldi zl,low(flashadr*2)
ldi zh,high(flashadr*2)
ldi yl,low(sramadr)
ldi yh,high(sramadr)
ldi r18,len
start:
lpm r16,z+
lpm r17,z+
tst r17
brpl plus
;正数直接存储,负数先求绝对值再存
rcall change
plus:
st y+,r16
st y+,r17
dec r18
brne start
here:rjmp here
;负数(补码)求绝对值的子程序
change:

avr单片机实验-实验三 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人Q+1243595614
  • 文件大小65 KB
  • 时间2018-04-18