单片机实验报告,存储器读写,IO端口操作,定时中断,外部中断等

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

更方便地检验实验效果,学会编写延迟子程序.

实验三定时中断

实验目的:

相关文档
最新文档