前言:本文章为笔者学习单片机课程的仿真作业,记录,实用性不大,大佬宿便看看就好
片内要求:将片内RAM30H-40H单元全部设置为#10H(如果用实验箱进行实验可以用清零设置为#00H,如果单纯用Keil软件仿真,最好设置为一个非零值,因为软件仿真时,存储单元的初始化都是零,看不出清零的效果)
片外要求:将片外7000H-70FFH单元全部设置为#10H(如果用实验箱进行实验可以用清零设置为#00H,如果单纯用Keil软件仿真,最好设置为一个非零值,因为软件仿真时,存储单元的初始化都是零,看不出清零的效果)
***片外的代码贴在文末,可以直接下翻***
实现过程:
ORG 0000H ;单片机上电或复位时程序指针的起始地址为0000H
AJMP START ;本条指令是程序执行的第一条指令,上一条伪指令决定本条指令的地址为0000H
ORG 0030H ;将主程序的地址设置为0030H开始是为了避开五个中断的起始地址
START:
MOV SP,#60H ;主程序初始化,将堆栈指针设置为60H是为了避开四个工作区和位寻址区
MOV R0,#30H ;设置固定值的存储单元的首地址为30H
MOV A,#10H ;将存储单元30H-40H中的内容设置为10H(或者要求的其它值)
LOOP:
MOV @R0,A ;通过循环方式对每个存储单元赋值10H
INC R0 ;循环一次,改变一次存储单元的地址
CJNE R0,#41H,LOOP ;条件控制循环结构,以地址作为循环控制的条件,
;当R0中的地址为41H时,表示存储单元30H-40H都已经被赋值10H
AJMP $ ;等待,主要是为了设置断点便于调试
END
以下多图预警!!