微机原理实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理实验指导书汕头大学机电系摘录
实验一P1口实验及延时子程序设计
1.实验目的
利用单片机的P1口作为I/O口进行实验验证,掌握利用P1口作为输入口和输出口的编程方法,理解并掌握延时子程序的设计方法。
2.实验设备及器件
IBM PC机一台
DP-51PRO单片机综合仿真实验仪一台
3.实验内容
(1)编写一段程序,用P1口作为控制端口,使D1区的LED轮流点亮。
(2)编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭(P1.7接按键,按下时LED 亮,不按时LED灭)。
图 1
4.实验要求
学会使用单片机的P1口作I/O口。如果时间充裕,也可以考虑利用P3口作I/O口来做该实验。
5.实验步骤
①用导线把A2区的J61接口与D1区的J52接口相连。原理如图1所示。
②先编写一个延时程序。
③将LED轮流点亮的程序编写完整并调试运行。
④使用导线把A2区J61接口的P1.0~P1.6与D1区J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区J53的KEY1相连。原理如图3.2(b)所示。
⑤编写P1.7控制LED的程序,并调试运行(按下K1看是否全亮)。
⑥A2区J61接口P1.7与D1区J54的SW1相连,然后再运行程序,拨动开关SW1查看结果。
6.实验预习要求
阅读附录内容,理解实验的硬件结构。可以先把程序编好,然后在Keil C51环境下进行软件仿真。
7.实验参考程序
程序1:
ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H
LJMP M ain
ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main: MOV A,#0FFH
CLR C
MainLoop:
CALL Delay
RLC A
MOV P1,A ;把A的值输出到P1口
SJMP MainLoop
Delay: MOV R7, #0 ;延时
Loop: MOV R6, #0
DJNZ R6, $
DJNZ R6, $
DJNZ R6, $
DJNZ R7, Loop
RET
;
END
程序2:
ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H
LJMP Main
ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main:JB P1.7,SETLED ;按键没有按下时,跳转到SETLED
CLRLED:
CLR P1.0
CLR P1.1
CLR P1.2
CLR P1.3
CLR P1.4
CLR P1.5
CLR P1.6
SJMP Main
SETLED:
SETB P1.0
SETB P1.1
SETB P1.2 SETB P1.3 SETB P1.4 SETB P1.5 SETB P1.6 SJMP Main ;
END
实验二定时器输出PWM实验
1. 实验目的
利用定时器控制产生占空比可变的PWM波,通过实验验证进一步加强对定时器功能的认识,掌握定时器的使用方法。
2. 实验设备及器件
IBM PC机一台
DP-51PRO单片机综合仿真实验仪一台
示波器一台
3. 实验内容
编写一段程序,用P1.0口输出PWM波,用D1区的按键KEY1和KEY2实现占空比的增加和降低。用示波器查看P1.0口的输出波形。
4. 实验要求
学会使用单片机的定时器产生250Hz的PWM波。
5. 实验步骤
①用导线连接A2区的J61接口P11与D1区J53接口的KEY1。
②用导线连接A2区的J61接口P12与D1区J53接口的KEY2。
③将示波器的探针连接到A2区的J61接口P10。
④用示波器观测P1.0口输出的PWM波形。
6. 实验预习要求
认真阅读本节的实验内容,提前做好实验准备工作。
7. 实验参考程序
PWMH DA TA 30H ;高电平脉冲的个数
PWM DA TA 31H ;PWM周期
COUNTER DA TA 32H
TEMP DA TA 33H
ORG 8000H
AJMP MAIN
ORG 800BH
AJMP INTT0
ORG 8100H
MAIN:
MOV SP,#60H ;给堆栈指针赋初值
MOV PWMH,#02H ;赋初值
MOV COUNTER, #01H ;赋初值
MOV PWM, #15H ;赋初值
MOV TMOD, #02H ;定时器0在模式2下工作
MOV TL0, #38H ;定时器每200μs产生一次溢出
MOV TH0, #38H ;自动重装的值
SETB ET0 ;使能定时器0中断
SETB EA ;使能总中断
SETB TR0 ;开始计时
KSCAN:
JNB P1.1,K1CHECK ;扫描KEY1
JNB P1.2,K2CHECK ;扫描KEY2,如果按下KEY2,跳转到KEY2处理程序SJMP KSCAN
K1CHECK:
JB P1.1,K1HANDLE ;去抖动,按下KEY1,跳转到KEY1处理程序
SJMP K1CHECK
K1HANDLE:
MOV A,PWMH
CJNE A,PWM,K1H0 ;判断是否到达上边界
SJMP KSCAN ;是,则不进行任何操作
K1H0:
MOV A,PWMH
INC A
CJNE A,PWM,K1H1 ;如果在加1后到达最大值
CLR TR0 ;定时器停止
SETB P1.0 ;置P1.0为高电平
SJMP K1H2
K1H1:
CJNE A,#02H,K1H2 ;如果加1后到达下边界
SETB TR0 ;重开定时器
K1H2:
INC PWMH ;增加占空比
SJMP KSCAN
K2CHECK:
JB P1.2,K2HANDLE ;去抖动,按下KEY2,跳转到KEY2处理程序
SJMP K2CHECK
K2HANDLE:
MOV A,PWMH
CJNE A,#01H,K2H0 ;判断是否到达下边界
SJMP KSCAN ;是,则不进行任何操作
K2H0:
MOV A,PWMH
MOV TEMP,PWM
DEC A
CJNE A,#01H,K2H1 ;如果在减1后到达下边界
CLR TR0 ;定时器停止