实验三定时器计数器应用实验一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定时器/计数器应用实验一
设计性试验
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
/*********
设计要求:(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
五、实验总结
通过本次试验,我掌握了定时器/计数器定时功能的使用方法,能够利用定时器产生特定脉宽的波形,掌握了定时器/计数器的中断、查询使用方法。同时掌握了单片机系统的硬件和软件设计方法。加强了自己的编程能力。
六、思考题
1、在P1.0口线上产生周期为500微秒,占空比为2:5的连续矩形波。
/**(1)定时器0定时200us以查询方式、方式2 Array定时器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
/******(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 MOV TH0, #38H ;设置T0的计数初值
MOV TL0, #38H
MOV TH1, #0FEH ;设置T1的计数初值 MOV TL1, #0D4H
SETB TR0 ;启动定时器0