单片机实验指导书2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MCS51单片机原理及应用
实验指导书
唐山学院信息工程系
单片机实验室
2008年9月
实验一 P1口实验
一、实验目的
1.学习P1口的使用方法;
2.学习延时子程序的编写和使用;
3.学习单片机实验系统的使用方法和程序的调试方法。
二、实验题目
1.P1口做输出口,接八只发光二极管,编写程序,使其循环点亮。
2.P1口低四位接四只发光二极管L1-L4, P1口高四位接开关K1-K4,编写程
序,将开关的状态在发光二极管上显示出来。
三、实验原理说明
P1口为准双向口,P1口的每一位都能独立地定义为输出线或输入线,作为输入的口线,必须向锁存器相应位写入“1”,该位才能作为输入。8031中所有口锁存器在复位时均置为“1”,如果后来往口锁存器写入过“0”,再作为输入时,需要向口锁存器对应位写入“1”。
延时程序的编写可以用两种方法,一种是用定时器来实现,一种使用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。
如果系统晶振为6.144MHz,则一个机器周期为12/6.144μs即1/0.512μs。
现要编写一个延时0.1s的程序,可以大致写出如下:
MOV R7, #200
DE1: MOV R6, #X
DE2: DJNZ R6, DE2
DJNZ R7, DE1
上面 MOV、DJNZ指令均为两个机器周期,所以执行一条指令需要1/0.256us, 现求出X值:(X*1÷0.256+1÷0.256+1÷0.256)*200+1÷0.256=0.1*106
指令3 指令2 指令4 指令1
计算出X=126,代入上式可知实际延时约为0.100004s。
四、连线方法
题目1:8031的P1.0—P1.7分别接发光二极管L1—L8
题目2:P1口的P1.0—P1.3接L1-L4,
P1口的P1.4—P1.7接K1-K4
五、实验电路
6
6
图1-1 题目1 图1-2 题目2 六、实验步骤:
(1) 先通过MS-DOS 方式进入DOS ,然后键入E:<回车>,再键入CD\MCS51<回
车>,进入MCS51文件夹。
(2) 编写程序
键入EDIT<回车〉。EDIT 是DOS 下的全屏幕编辑软件,程序编写完毕,注意存盘后返回DOS ,文件名.ASM. (3) 编译程序,
键入A51 文件名《回车》 ,注意只输入文件名,不要加后缀ASM.
(4) 查错
编译完成后,如果程序有错误,在屏幕的第一行显示错误的数量,如 3 error found 表示程序有三处错误。如果程序没有错误,编译后,显示 no error found 。
有错误,键入EDIT 文件名.LST 查看错误的位置,然后,打开并修改源程序。直到编译后显示无错误为止。
(5) 调试程序
键入TMSD<回车>,打开电源开关,选串行口com1或com2后,进入集成开发环境。然后,装入程序:选择 Memory-Load 后,在窗口中输入文件名.BIN<回车〉。在随后出现的窗口中From 栏中键入4000《回车》,代表程序从4000h 开始装入。Length 后直接回车,代表文件的长度。 运行程序:选RUN 菜单 GO 连续运行、STEP 单步运行
连续运行时,按空格键—停止程序的运行
退出:SYSTEM-QUIT 七、思考题及实验报告要求 思考题
1.试说明51系列单片机4个I/O 口在使用上的分工和操作上的特点。 2.修改程序,使发光二极管闪亮移位方向改变。 实验报告要求
1.给出硬件电路连线图及自行设计的程序清单、程序流程图。 2.总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体
会。
实验二 外部中断实验
一、实验目的
1.学习外部中断技术的基本使用方法; 2.学习中断处理程序的编程方法。 二、实验题目
1.P1口做输出口,接八只发光二极管,编写程序,使其循环点亮。以单脉冲输出端做为中断申请,当第一次产生外部中断时,使发光二极管全亮,延时1秒后返回中断之前的状态;当第二次产生外部中断时,使发光二极管全灭,延时1秒后返回中断之前的状态;以后如上述一直循环下去。
2.以单脉冲输出端做为中断申请,自行设计连线,用实验箱上的红、绿、黄发光二极管模拟交通灯控制。当有急救车通过时,两交通灯信号为全红,以便让急救车通过,延时10秒后交通灯恢复中断前状态。 三、实验原理说明
本实验中中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能返回中断前P1口及发光二极管的状态。除了保护累加器A 、程序状态字PSW 外、P1口的状态外,还要注意主程序中的延时程序和中断程序的延时程序不能混用,本实验中,主程序延时程序用的寄存器和中断延时用的寄存器也不能混用。 四、连线方法
8031的P1.0—P1.7分别接发光二极管L1—L8,INT0接单脉冲输出端
五、实验电路
6
六、实验报告要求
1.画出实验硬件电路图及程序流程图; 2.写出自行设计的实验程序清单;
3.如果程序中出现问题,分析原因并解决。 4.给出实验结果及对实验的改进意见。
实验三定时器实验
一、实验目的
1.学习8031内部定时器/计数器的使用和编程方法;
2.进一步掌握中断处理程序的编程方法。
二、实验题目
8031内部定时器T1,按方式1工作、即做为十六位定时器使用每0.1秒溢出一次。P1口的P1.0-P1.7分别接八只发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟L1、L3亮,第二秒钟L2、L4亮,第三秒钟L5、L7亮,第四秒钟L6、L8亮,第五秒钟L1、L3、L5、L7亮,第六秒钟L2、L4、L6、L8亮,第七秒钟全亮,第八秒钟全灭,以后又从头开始,一直循环下去。
三、实验原理说明
1.定时常数的确定
定时器/计数器的输入脉冲与机器周期一样,为振荡器频率的1/12,本实验中时钟频率为6.144MHz,实现0.1秒的延时,要在定时器1中设置一个时间常数即计数初值,使其每隔0.1秒溢出一次,再用一个寄存器计溢出的次数,计10次即可实现1秒延时。时间常数按以下公式计算:
(216-X)*12/f =0.1
计算出X之后,换算成十六进制数将高八位放在TH1中,低八位放在TL1中。
2.初始化程序
包括定时器初始化(采用中断方式时,还包括中断系统初始化),并将时间常数送入定时器中。注意定时器1初始化时建议用如下指令:
ANL TMOD, #0FH
ORL TMOD, #10H
即不要改变T0的工作方式。
四、连线方法
8031的P1.0—P1.7分别接发光二极管L1—L8
五、实验电路
见图1-1
六、思考题及实验报告要求
1.画出实验硬件电路图及程序流程图;
2.写出自行设计的实验程序清单;
3.如果程序中出现问题,分析原因并解决;
4.给出实验结果及对实验的改进意见。
思考题
定时器T1工作在计数方式,编程实现四位二进制计数器并在发光二极管或数码管上显示计数值。