当前位置:文档之家› 实验三-定时器、计数器应用实验一

实验三-定时器、计数器应用实验一

实验三-定时器、计数器应用实验一
实验三-定时器、计数器应用实验一

定时器/计数器应用实验一

设计性试验

2012年11月14日星期三第三四节课

一、实验目的

1、掌握定时器/计数器定时功能的使用方法。

2、掌握定时器/计数器的中断、查询使用方法。

3、掌握Proteus软件与Keil软件的使用方法。

4、掌握单片机系统的硬件和软件设计方法。

二、设计要求

1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200μS的连续方波,在P 1.0口线上接示波器观察波形。

2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,在P1.1口线上产生周期为240μS的连续方波,在P 1.1口线上接示波器观察波形。

三、电路原理图

四、实验程序流程框图和程序清单及实验结果

/*********

设计要求:(a)单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200us的连续方波编写:吕小洋

说明:用定时器1的方式1以查询方式工作

时间:2012年11月10日

***************/

ORG 0000H

ORG 0100H

MAIN: MOV SP, #2FH

CLR EA ;关总中断

CLR ET1 ;禁止定时器1中断

MOV TMOD, #00010000B ;设置定时器1

MOV TH1, #0FFH ;设置计数初值

MOV TL1, #9CH

SETB TR1 ;启动定时器LOOP: JNB TF1, LOOP ;查询计数是否溢出MOV TH1, #0FFH ;重置计数初值

MOV TL1, #9CH

CLR TF1 ;清除计数溢出标志

CPL P1.0 ;输出取反

LJMP LOOP ;重复取反

END

TMOD初始化

计数初值

初始化中断初始化启动定时器

等待中断

输出取反中断返回

开始开始

/*********

设计要求:(b)单片机的定时器/计数器以查询方式工作, 在P1.0口线上产生周期为200us 的连续方波 编写:吕小洋

说明:用定时器0的免装初值方式2以中断方式工作 时间:2012年11月10日 ***************/

ORG

0000H START: LJMP MAIN

ORG 000BH

LJMP

TTC0

ORG 0100H MAIN: MOV SP, #2FH SETB EA ;开总中断 SETB ET0

;定时器0允许中断

MOV TMOD, #02H ;设置T0为工作方式2 MOV TH0, #88H ;设置计数初值 MOV TL0, #88H

SETB

TR0

;启动定时器

HERE: LJMP HERE ;等待中断

/****中断服务程序****/

ORG 0200H

TTC0: CPL P1.0 ;输出取反

RETI ;中断返回

END

五、实验总结

通过本次试验,我掌握了定时器/计数器定时功能的使用方法,能够利用定时器产生特定脉宽的波形,掌握了定时器/计数器的中断、查询使用方法。同时掌握了单片机系统的硬件和软件设计方法。加强了自己的编程能力。

开始中断初始化TMOD初始化计数初值初始化启动定时器T0

定时?

时间到 输出取反清除溢出标志并关T0启动定时器T1

定时?

时间到 输出取反重装T1计数初值清除溢出标志

并关T1启动定时器T0

结束

Y N

Y

N

六、思考题

1、在P1.0口线上产生周期为500微秒,占空比为2:5的连续矩形波。

/**(1)定时器0定时200us 以查询方式、方式2工作, 定时器1定时300us 以查询方式、方式1工作******/ ORG 0000H START: LJMP MAIN ORG 0100H

MAIN: MOV SP, #2FH

CLR EA ;关总中断

CLR ET0 ;禁止定时器0中断 CLR ET1 ;禁止定时器1中断 MOV TMOD, #00010010B ;设置工作方式

MOV TH0, #37H ;设置T0的计数初值 MOV TL0, #37H

MOV TH1, #0FEH ;设置T1的计数初值 MOV TL1, #0D4H

SETB TR0 ;启动定时器0

LOOP: JNB TF0, LOOP ;查询计数是否溢出 CPL P1.0 ;输出取反

CLR TF0 ;清除T0计数溢出标志 CLR TR0 ;关定时器0 SETB TR1 ;启动定时器1 LOOP1: JNB TF1, LOOP1

CPL P1.0 ;输出取反 MOV TH1, #0FEH ;重装计数初值 MOV TL1, #0D4H

CLR TF1 ;清除T1计数溢出标志 CLR TR1 ;关闭定时器1 SETB TR0 ;启动定时器0 LJMP LOOP ;重复循环 END

开始

中断初始化

TMOD初始化

计数初值

初始化

启动定时器T0

等待中断

输出取反

中断返回

开始

关闭定时器T0

开启定时器T1

输出取反

中断返回

开始

关闭定时器T1

开启定时器T0

重装定时器T1

计数初值

/******(2)定时器0定时200us以中断方式、方式2工作,

定时器1定时300us以中断方式工作******/

ORG 0000H

START: LJMP MAIN

ORG 000BH

LJMP TTC0

ORG 001BH

LJMP TTC1

ORG 0100H

MAIN: MOV SP, #2FH

SETB EA ;开总中断

SETB ET0 ;允许定时器0中断

SETB ET1 ;允许定时器1中断

MOV TMOD, #00010010B ;设置T0、T1都为工作方式1

MOV TH0, #38H ;设置T0的计数初值

MOV TL0, #38H

MOV TH1, #0FEH ;设置T1的计数初值

MOV TL1, #0D4H

SETB TR0 ;启动定时器0

HERE: SJMP HERE

ORG 0200H

TTC0: CPL P1.0 ;输出取反

CLR TR0 ;关定时器0

SETB TR1 ;启动定时器1

RETI

ORG 0300H

TTC1: CPL P1.0 ;输出取反

MOV TH1, #0FEH ;重装计数初值

MOV TL1, #0D4H

CLR TR1 ;关闭定时器1

SETB TR0 ;启动定时器0

RETI

END

相关主题
文本预览
相关文档 最新文档