单片机实验二
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二、指令系统及应用
一、实验目的
学习使用A VR指令系统,学会编写数据传送程序。
二、实验要求及内容
1. 把寄存器R0~R29置$FF,把SRAM $0060~$006F单元清0,把$0070~$007F单元置
$FF,把$0080~$008F单元分别设置为0~F。
============
.include "m8def.inc"
.org $0000
rjmp reset
.org $0013
reset:
ldi r16,low(ramend) ;堆栈指针初始化
out spl,r16
ldi r16,high(ramend)
out sph,r16
ldi zl,$60 ;设置Z指针
ldi zh,$00
ldi r16,$00
set1:st z+,r16 ;将SRAM $0060-$006F单元清0
cpi r30,$70
brne set1
ldi r16,$FF
set2:st z+,r16 ;将SRAM $0070-$007F单元置$FF
cpi r30,$80
brne set2
ldi r16,$00
set3:st z+,r16 ;将SRAM $0080-$008F单元分别设置为0-F
inc r16
cpi r30,$90
brne set3
ldi zl,$1D
ldi zh,$00
ldi r29,$FF ;将通用寄存器R0-R29置$FF
set4:st -z,r29
cpi r30,0
brne set4
here:rjmp here
============
2. 把SRAM地址为$0060开始的256个单元内容依次复制到地址为$0100开始的单元
(注意两数据区有部分重叠)
============
.include "m8def.inc"
.org $0000
rjmp reset
.org $0013
reset:
ldi r16,low(ramend) ;堆栈指针初始化
out spl,r16
ldi r16,high(ramend)
out sph,r16
ldi zl,$60 ;数据段初始化(检验程序用)
ldi zh,$00
ldi r16,0
loop:st z+,r16
inc r16
cpi r30,$5F
brne loop
ldi zl,$60 ;设置Z指针
ldi zh,$01
ldi yl,$00 ;设置Y指针
ldi yh,$02
copy:ld r16,-z
st -y,r16
cpi r30,$60
brne copy
here:rjmp here
============
3. 把Flash中字地址为$003开始的10个字(Word)的内容复制到起始地址为$0100的
SRAM(先低字节,后高字节)
============
.include "m8def.inc"
.org $0000
rjmp reset
.org $0003 ;程序数据段初始化(检验程序用)
.db $01,$02,$04,$08,$10,$20,$40,$80,$0F,$F0
.db $10,$20,$40,$80,$01,$02,$04,$08,$F0,$0F
.org $002A
reset:
ldi r16,low(ramend) ;堆栈指针初始化
out spl,r16
ldi r16,high(ramend)
out sph,r16
ldi zl,$00 ;SRAM数据段初始化(检验程序用)
ldi zh,$01
ldi r16,$00
clear:st z+,r16
cpi r30,20
brne clear
ldi zl,$06 ;设置Z指针
ldi zh,$00
ldi yl,$00 ;设置Y指针
ldi yh,$01
loop:lpm r0,z+
st y+,r0
cpi r28,20
brne loop
here:rjmp here
============
4. 用I/O引脚驱动若干个LED,编写跑马灯程序(画电路图、编程、调试、Proteus仿
真、下载到实验板进行验证)
============
.include "8535def.inc"
.org $0000
rjmp reset
.org $0013
reset:
ldi r16,low(ramend) ;堆栈指针初始化
out spl,r16
ldi r16,high(ramend)
out sph, r16
ldi r16,$FF ;定义A.B.C,D端口为输出
out ddra,r16
out ddrb,r16
out ddrc,r16
out ddrd,r16
start1:clr r16 ;设置跑马灯起始位置
clr r17