单片机实验二

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档