单片机实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一P1口输入、输出实验
一、实验目的
1、学习P1口的使用方法
2、学习延时子程序的编写和使用
二、实验说明
P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。
三、实验内容及步骤
项目(一):
用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1、使用单片机最小应用系统1模块。关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加P1_A.ASM 源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。发光二极管单只从右到左轮流循环点亮。
项目(二):
用P1.0、P1.1作输入接两个拨断开关,P1.2、P1.3作输出接两个发光二极管。程序读取开关状态,并在发光二极管上显示出来。
1、用导线分别连接P1.0、P1.1到两个拨断开关,P1.
2、P1.3到两个发光二极管。
2、添加 P1_B.ASM源程序,编译无误后,运行程序,拨动拨断开关,观察发光二极管的亮灭情况。向上拨为熄灭,向下拨为点亮。
四、流程图及源程序
1.流程图
2.源程序:
(一)项目一
ORG 0000H
LJMP START
ORG 0030H START: MOV A, #0FEH MOV R2,#8 OUTPUT: MOV P1,A
RL A
ACALL DELAY
DJNZ R2,OUTPUT LJMP START DELAY: MOV R6,#200 MOV R7,#200 DE: DJNZ R7,DE
DJNZ R6,DELAY RET
END
(二)项目二
KEYLEFT BIT P1.0 ;定义
KEYRIGHT BIT P1.1
LEDLEFT BIT P1.2
LEDRIGHT BIT P1.3
ORG 0000H
LJMP START
ORG 0030H
START: SETB KEYLEFT ;欲读先置一
SETB KEYRIGHT
LOOP: MOV C,KEYLEFT
MOV LEDLEFT,C
MOV C,KEYRIGHT
MOV LEDRIGHT,C
LJMP LOOP
END
五、思考题
(1)对于本实验延时子程序
DELAY: MOV R6,#200
MOV R7,#200
DE: DJNZ R7,DE
DJNZ R6,DELAY
RET
如使用12MHz晶振,粗略计算此程序的执行时间为多少?
六、电路图
实验二外部中断实验
一、实验目的
1、掌握外部中断技术的基本使用方法
2、掌握中断处理程序的编写方法
二、实验说明
1、外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.1)引入,本实验由INT0(P3.2)引入。
2、中断服务的关键:
a、保护进入中断时的状态。
堆栈有保护断点和保护现场的功能使用PUSH,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。
b、必须在中断服务程序中设定是否允许中断重入,即设置EX0位。
c、用POP指令恢复中断时的现场。
3、中断控制原理:
中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。
4、中断响应的过程:
首先中断采样然后中断查询最后中断响应。采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0或IE1置“1”;否则继续为“0”。所谓查询就是由CPU测试TCON和SCON中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就进行响应一次中断。
INT0端接单次脉冲发生器。P1.0接LED灯,以查看信号反转。
三、实验内容及步骤
1、使用单片机最小应用系统1模块,P1.0接发光二极管,INTO接单次脉冲输出端。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加中断.ASM 源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN 按钮运行程序。连续按动单次脉冲产生电路的按键,发光二极管每按一次状态取反,即隔一次点亮。
四、流程图及源程序
1、流程图
2、源程序
LED BIT P 1.0 LEDBUF BIT 0 ORG 0000H
LJMP START ;跳至主程序 ORG 000BH
LJMP INTERRUPT ;跳子程序
ORG 0030H INTERRUPT:
PUSH PSW ;保护现场
CPL LEDBUF ;取反LED MOV C, LEDBUF MOV LED, C
POP PSW ;恢复现场 RETI
START: CLR LEDBUF CLR LED
MOV TCON, #01H ;外部中断0下降沿触发
MOV IE, #81H ;打开外部中断允许位(EX0) ;及总中断允许位(EA )
主程序框图 外部中断子程序框图