单片机实验报告存储器读写IO端口操作定时中断外部中断等Word文档格式.docx
《单片机实验报告存储器读写IO端口操作定时中断外部中断等Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机实验报告存储器读写IO端口操作定时中断外部中断等Word文档格式.docx(13页珍藏版)》请在冰点文库上搜索。
MOVXA,DPTR;
将以DPTR为地址单元中容存入A累加器中
INCA;
A累加器所在地址自动加一
MOVP1,A;
将A累加器中容存入P1中
END;
结束
2、选择菜单“仿真器”→“仿真器设置”,按下图所示完成软件初始设置。
3、选择菜单“项目”下“编译”,编译通过后,选择“单步运行”,观察记录寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。
思考题:
试用汇编语言编写一段程序,判断R1、R2、R3三个寄存器中存放的数据大小,并按从大到小的顺序重新存放到R1、R2、R3三个寄存器中。
SJMPSTART;
ORG0030H;
START:
MOVR1,#01H;
将直接数01H存入R1寄存器
MOVR2,#04H;
将直接数04H存入R2寄存器
MOVR3,#09H;
将直接数09H存入R3寄存器
CLRC;
将C累加器清零
MOVA,R1;
将R1寄存器中的容存入A累加器中
SUBBA,R2;
两数比较
JNCLOOP0;
无借位跳转(R1大则转LOOP0)
XCHA,R2;
交换R2寄存器与A累加器中的容
MOVR1,A;
将A累加器中的容存入R1寄存器中(交换R1和R2容)
CLRC;
LOOP0:
MOVA,R1;
SUBBA,R3;
两数比较
JNCLOOP1;
无借位跳转(R1大则转LOOP1)
XCHA,R3;
交换R3寄存器与A累加器中的容
将A累加器中的容存入R1寄存器中(交换R1和R3容)
LOOP1:
MOVA,R2;
将R2寄存器中的容存入A累加器中
JNCLOOP2;
无借位跳转(R2大则转LOOP2)
MOVA,R2;
将R2寄存器中的容存入A累加器中
交换R3寄存器与A累加器中的容
MOVR2,A;
将A累加器中的容存入R1寄存器中(交换R2和R3容)
LOOP2:
MOVR2,A;
LOOP1:
将A累加器中的容存入R2寄存器中
RET;
心得体会:
本次实验主要学习了WAVE软件基本操作运用,并进一步深入学习汇编语言,并用汇编语言进行程序编写,解决一些实际问题.
实验二I/O端口操作
1、掌握I/O端口读写等汇编指令;
2、掌握仿真软件PROTEUS硬件电路设计及仿真、调试等基本操作方法。
1、参考下图,用PROTEUS完成单片机硬件电路设计
2、用WAVE软件完成发光二级管亮灭程序,用延时子程序设计一段时间延时,编译通过后生成16进制文件(.HEX),加载到PROTEUS中仿真验证。
AJMPSTART;
MOVSP,#60H;
将立即数60H存入指针SP
MOVA,#01H;
将立即数01H存入A累加器
MOVP1,A;
将A累加器中的容存入指针P1
MOVR0,#7;
将立即数7存入R0寄存器
LOOP:
RLA;
LOOP:
左移小循环
MOVP1,A;
将指针P1中的容存入A累加器中
ACALLDELAY;
绝对调用指令至DELAY(调用延时程序)
DJNZR0,LOOP;
R0减1,若不等于0则继续LOOP
绝对转移指令至START
DELAY:
MOVR0,#255;
DELAY:
将立即数255存入寄存器R0
D1:
MOVR1,#255;
D1:
将立即数255存入寄存器R1
DJNZR1,$;
R1减1,若不等于0则继续循环减1
DJNZR0,D1;
R0减1,若不等于0则继续D1
END;
结束
单片机晶振设为12MHZ,试计算延时子程序的延时时间。
Tcy=12MHZ/12=1微秒
学习运用PROTEUS硬件电路设计及仿真、调试等基本操作方法。
更方便地检验实验效果,学会编写延迟子程序.
实验三定时中断
1、熟悉单片机定时器工作原理;
2、掌握定时器定时控制的编程方法。
1、编写一段汇编程序,实现P1.0口输出周期为20ms的方波,(用单片机定时器T1采用定时方式1)。
并用PROTEUS仿真验证。
ORG0000H;
跳转至START
ORG001BH;
T1溢出中断入口
AJMPT1INT;
跳转至T1INT
ORG0030H
MOVSP,#60H;
MOVTMOD,#10H;
设置T1工作于定时工作方式1
MOVTH1,#0D8H;
设置加1计数器的计数初值高字节
MOVTL1,#0F0H;
设置加1计数器的计数初值低字节
SETBTR1;
启动T1开始计时
SETBET1;
开T1溢出中断
SETBEA;
开总允许中断
MAIN:
AJMPMAIN;
主程序(等待T1溢出中断)
T1INT:
CPLP1.0;
T1溢出中断服务程序
T1重新赋值
RETI
熟悉单片机定时器工作原理;
掌握定时器定时控制的编程方法,学会观察仿真波形。
实验五外部中断
1、掌握外部中断控制的原理及编程方法;
2、掌握硬件实验箱的使用方法;
3、熟悉汇编程序基本格式与编程方法。
实验器材:
单片机实验箱、51单片机最小系统电路板、串口调试线、PC机、MCS51集成开发环境。
实验容及基本步骤:
编写外部中断控制程序,控制8个指示灯的亮灭,模拟交通灯控制。
将实验箱上的P3.2(外部中断0)和P3.3(外部中断1)分别接2个按钮,P1.0和P1.1接2个发光二极管,编写外部中断控制程序,控制2个指示灯的亮灭,按下按钮1,指示灯1亮;
按下按钮2,指示灯1灭2亮,如此反复。
CSEGAT0000H;
LJMPSTART;
长跳转至START
CSEGAT4003H;
外部中断0入口
LJMPINT;
长跳转至INT
CSEGAT4013H;
外部中断1入口
LJMPIN;
长跳转至IN
CSEGAT4100H;
设置入口
CLRIT0;
设置电平触发
CLRIT1
SETBEX0;
允许外部中断0的中断
SETBEX1;
允许外部中断1的中断
SETBEA;
开放所有中断
SJMP$;
停止
INT:
SETBP1.0;
P1.0置高电平
CLRP1.1;
P1.1置低电平
RETI
IN:
SETBP1.1;
P1.1置高电平
CLRP1.0;
P1.0置低电平
掌握外部中断控制的原理及编程方法;
掌握硬件实验箱的使用方法;
熟悉汇编程序基本格式与编程方法。
实验六8279显示器接口
1、掌握数码管显示的基本原理;
2、掌握8279键盘显示器接口芯片的使用方法;
3、提高汇编应用程序编程方法与技巧。
1、单片机实验箱、51单片机最小系统电路板、串口调试线、PC机
2、MCS51集成开发环境。
实验容及原理:
编写数码管显示程序,用两个数码管显示出两个数字。
8279的使用方法
首先掌握两个口地址,命令口地址0CFE9H。
数据口地址:
0CFE8H。
命令口地址主要是CPU将初始化指令或控制指令对8279完成相关设置。
数据口地址完成显示数据字形码的传送。
1)8279最主要的初始化操作是清除显示缓冲区命令
1
D
-
总清位
X
DDD为1XX时允许清除显示器,清除命令需要16us的时间,在此期间CPU不能向8279写入命令。
2)写显示RAM命令(选择哪个数码管)
AI
A
特征位
显示位置
AI为1时,显示RAM自动加1,AI为0时,显示位置由AAAA决定。
程序参考流程图如下,参考流程框图完成程序的编写并下载到EL实验箱上进行验证。
LJMPSTART;
长跳转
ORG0800H;
设置初始地址
MOVDPTR,#0CFE9H;
命令口地址
MOVA,#0D1H;
清除初始值
MOVXDPTR,A
I:
命令口地址
MOVA,#080H;
选择显示管
MOVXDPTR,A
MOVDPTR,#0CFE8H;
数据口地址
MOVA,#66H;
显示数据4
AJMPI;
无条件跳转
掌握数码管显示的基本原理;
掌握8279键盘显示器接口芯片的使用方法;
提高汇编应用程序编程方法与技巧。