单片机实验报告,存储器读写,IO端口操作,定时中断,外部中断等
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一存储器读写
实验目的:
1、掌握寄存器、存储器读写等汇编指令;
2、掌握编程软件编辑、编译、调试等基本操作。
实验内容:
1、将下面的汇编程序输入到W A VE集成开发软件中
ORG 0000H ;复位入口
SJMP START ;无条件跳转至START
ORG 0030H ;系统初始化
START:MOV R0,#07H ;将直接数存入R0寄存器
MOV R1,#0FEH ;将直接数FE存入R1寄存器
ADD A,R0 ;将R0寄存器中的内容与A累加器中的内容相加
ADDC A,R1 ;将R1寄存器中的内容与A累加器中的内容相加
MOV DPTR,#2000H ;将直接数2000H存入指针DPTR
MOVX @DPTR,A ;将A累加器中内容存入以DPTR为地址单元中
MOVX A,@DPTR ;将以DPTR为地址单元中内容存入A累加器中
INC A ;A累加器所在地址自动加一
MOV P1,A ;将A累加器中内容存入P1中
END ;结束
2、选择菜单“仿真器”→“仿真器设置”,按下图所示完成软件初始设置。
3、选择菜单“项目”下“编译”,编译通过后,选择“单步运行”,观察记录寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。
思考题:试用汇编语言编写一段程序,判断R1、R2、R3三个寄存器中存放的数据大小,并按从大到小的顺序重新存放到R1、R2、R3三个寄存器中。
ORG 0000H ;复位入口
SJMP START ;无条件跳转至START
ORG 0030H ;系统初始化
START:MOV R1,#01H ;将直接数01H存入R1寄存器
MOV R2,#04H ;将直接数04H存入R2寄存器
MOV R3,#09H ;将直接数09H存入R3寄存器
CLR C ;将C累加器清零
MOV A,R1 ;将R1寄存器中的内容存入A累加器中
SUBB A,R2 ;两数比较
JNC LOOP0 ;无借位跳转(R1大则转LOOP0)
MOV A,R1 ;将R1寄存器中的内容存入A累加器中
XCH A,R2 ;交换R2寄存器与A累加器中的内容
MOV R1,A ;将A累加器中的内容存入R1寄存器中(交换R1和R2内容)CLR C ;将C累加器清零
LOOP0: MOV A,R1 ;将R1寄存器中的内容存入A累加器中
SUBB A,R3 ;两数比较
JNC LOOP1 ;无借位跳转(R1大则转LOOP1)
MOV A,R1 ;将R1寄存器中的内容存入A累加器中
XCH A,R3 ;交换R3寄存器与A累加器中的内容
MOV R1,A ;将A累加器中的内容存入R1寄存器中(交换R1和R3内容)
CLR C ;将C累加器清零
LOOP1: MOV A,R2 ;将R2寄存器中的内容存入A累加器中
SUBB A,R3 ;两数比较
JNC LOOP2 ;无借位跳转(R2大则转LOOP2)
MOV A,R2 ;将R2寄存器中的内容存入A累加器中
XCH A,R3 ;交换R3寄存器与A累加器中的内容
MOV R2,A ;将A累加器中的内容存入R1寄存器中(交换R2和R3内容)LOOP2: MOV R2,A ; LOOP1:将A累加器中的内容存入R2寄存器中RET ;结束
心得体会:本次实验主要学习了WAVE软件基本操作运用,并进一步深入学习汇编语言,并用汇编语言进行程序编写,解决一些实际问题.
实验二I/O端口操作
实验目的:
1、掌握I/O端口读写等汇编指令;
2、掌握仿真软件PROTEUS硬件电路设计及仿真、调试等基本操
作方法。
实验内容:
1、参考下图,用PROTEUS完成单片机硬件电路设计
2、用W A VE软件完成发光二级管亮灭程序,用延时子程序设计一段时间延时,编译通过后生成16进制文件(.HEX),加载到PROTEUS 中仿真验证。
ORG 0000H ;复位入口
AJMP START ;无条件跳转至START
ORG 0030H ;系统初始化
START:MOV SP,#60H ;START:将立即数60H存入指针SP
MOV A,#01H ;将立即数01H存入A累加器
MOV P1,A ;将A累加器中的内容存入指针P1
MOV R0,#7 ;将立即数7存入R0寄存器
LOOP:RL A ;LOOP:左移小循环
MOV P1,A ;将指针P1中的内容存入A累加器中
ACALL DELAY ;绝对调用指令至DELAY(调用延时程序)
DJNZ R0,LOOP ;R0减1,若不等于0则继续LOOP
AJMP START ;绝对转移指令至START
DELAY: MOV R0,#255 ;DELAY:将立即数255存入寄存器R0
D1:MOV R1,#255 ;D1:将立即数255存入寄存器R1
DJNZ R1,$ ;R1减1,若不等于0则继续循环减1
DJNZ R0,D1 ;R0减1,若不等于0则继续D1
RET ;结束
END ;结束
思考题:
单片机晶振设为12MHZ,试计算延时子程序的延时时间。
Tcy=12MHZ/12=1微秒
心得体会:学习运用PROTEUS硬件电路设计及仿真、调试等基本操作方法。
更方便地检验实验效果,学会编写延迟子程序.
实验三定时中断
实验目的: