微机原理实验指导书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 ;定时器停止

相关文档
最新文档