版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 实训四实训四 定时计数器的用法定时计数器的用法一、义务目的一、义务目的 将流水灯的流动速度分为将流水灯的流动速度分为1010级,运用按键控制流动速度。级,运用按键控制流动速度。每按一次按键流水灯的流动速度改动每按一次按键流水灯的流动速度改动1 1级。首先降低流动速度,级。首先降低流动速度,降低到最低速后再逐渐添加,添加到最高速后再逐渐降低。降低到最低速后再逐渐添加,添加到最高速后再逐渐降低。 经过本技艺训练的练习,掌握单片机中定时计数器的运经过本技艺训练的练习,掌握单片机中定时计数器的运用方法。用方法。二、硬件二、硬件流水灯流水灯IC189S52三、软件三、软件1 1、运用定时计数器时应进展
2、的几项任务、运用定时计数器时应进展的几项任务 采用定时计数器采用定时计数器0 0。1 1决议定时计数器的任务方式。决议定时计数器的任务方式。定时计数器定时计数器3 3种任务方式的区别见下表。种任务方式的区别见下表。 定时计数器定时计数器3 3种任务方式的区别种任务方式的区别模式模式M1,M0最大计数最大计数值值最长定时时间最长定时时间(振荡器频率(振荡器频率=12MHz)定时精度定时精度模式模式00,0213=81928.192ms低低模式模式10,1216=6553665.536ms低低模式模式21,028=256256s高高2 2 根据对定时计数器的控制方式,决议定时计数器各控根据对定时计
3、数器的控制方式,决议定时计数器各控制位的形状。制位的形状。 计数器对外部脉冲计数时计数器对外部脉冲计数时C/T=1C/T=1,计数器用于定时时,计数器用于定时时C/T=0C/T=0。 计数器的启动和停顿由计数器的启动和停顿由TR0TR0控制。控制。TR0=1 TR0=1 启动计数器计数。启动计数器计数。TR0=0 TR0=0 停顿计数器计数。停顿计数器计数。 计数器只由计数器只由89S5189S51内部控制时内部控制时GATEGATE位设置为位设置为“0 0,而需求,而需求由外部引脚由外部引脚INT0INT0上的脉冲控制上的脉冲控制; ;计数时需求将计数时需求将GATEGATE位设置位设置为为
4、“1 1,即,即GATEGATE位能控制能否允许外部引脚对计数器进展控位能控制能否允许外部引脚对计数器进展控制。制。3 3写定时计数器的控制字写定时计数器的控制字 采用任务方式采用任务方式1 1。定时计数器方式存放器。定时计数器方式存放器TMODTMOD不能进展位寻址,对不能进展位寻址,对任务方式进展设置时,必需采用字节传送的方法将两个定时计数器的任务方式进展设置时,必需采用字节传送的方法将两个定时计数器的8 8个控制个控制位同时送到位同时送到TMODTMOD中。本技艺训练中对定时计数器任务方式的设置方法见以下中。本技艺训练中对定时计数器任务方式的设置方法见以下图。图。定时计数器任务方式设置定
5、时计数器任务方式设置 根据对图的分析,可得到控制字为根据对图的分析,可得到控制字为“01H01H,设,设置置TMODTMOD可运用指令:可运用指令:MOV TMODMOV TMOD,#01H#01H实现。实现。2 2、定时计数器初值的计算、定时计数器初值的计算 设定设定TH0TH0、TL0TL0初值为初值为1000H1000H,每按一次按键,每按一次按键添加添加40004000十进制数,速度加快一挡。最快时为十进制数,速度加快一挡。最快时为1000H+40001000H+400010=4409610=44096。 3 3、系统程序、系统程序1 1流水灯控制流水灯控制 由于循环的方法,浪费了大量
6、的由于循环的方法,浪费了大量的CPUCPU任务时间。任务时间。在单片机中普通采用定时计数器组成一个定时器来在单片机中普通采用定时计数器组成一个定时器来完成定时任务。完成定时任务。 由于每当定时时间到产生中断后显示控制任务由于每当定时时间到产生中断后显示控制任务进展一次,所以可以将显示控制任务放在定时中断进展一次,所以可以将显示控制任务放在定时中断里完成。这样主程序只需求完成定时计数器和中断里完成。这样主程序只需求完成定时计数器和中断的初始化任务即可终了。的初始化任务即可终了。运用定时器后系统的程序框图运用定时器后系统的程序框图 ORG 0000H ORG 0000H SJMP START SJ
7、MP START ORG 000BH ORG 000BH SJMP CTCS SJMP CTCSSTARTSTART:MOV SP, #40H MOV SP, #40H ;设置堆栈指针;设置堆栈指针 MOV TMOD, #01H MOV TMOD, #01H ;设置定时计数器;设置定时计数器0 0任务方式任务方式 MOV TL0, #00H MOV TL0, #00H ;设置定时计数器;设置定时计数器0 0的初值的初值 MOV TH0, #10H MOV TH0, #10H SETB TR0 SETB TR0 ;启动定时计数器;启动定时计数器 SETB ET0 SETB ET0 ;允许定时计数
8、器;允许定时计数器0 0中断中断 SETB EA SETB EA ;允许总中断;允许总中断 MOV A, #01H MOV A, #01H ;设置显示控制字初值;设置显示控制字初值 SJMP $ SJMP $ ;主程序停顿在本指令;主程序停顿在本指令;定时计数器;定时计数器0 0中断处置程序中断处置程序 CTCS CTCS: PUSH PSW PUSH PSW ;维护现场;维护现场 MOV TL0, #00H MOV TL0, #00H ;恢复定时计数器初值;恢复定时计数器初值 MOV TH0, #10H MOV TH0, #10H RL A RL A ;调整显示控制字;调整显示控制字 MOV
9、 P2, A MOV P2, A ;输出显示控制字;输出显示控制字 POP PSW POP PSW ;恢复现场;恢复现场 RETI RETI ;中断前往;中断前往 上述程序仅实现了运用定时计数器延时,流水灯的速度上述程序仅实现了运用定时计数器延时,流水灯的速度是一个固定值。为了实现调速的目的,还需进展以下修正。是一个固定值。为了实现调速的目的,还需进展以下修正。2 2调速控制调速控制 为了改动流水灯的流动速度,可以改动定时计数器为了改动流水灯的流动速度,可以改动定时计数器0 0的初值,因此需求运用两个变量保管初值的初值,因此需求运用两个变量保管初值CTHCTH保保管管TH0TH0的初值,的初值
10、,CTLCTL保管保管TL0TL0的初值。在按键中的初值。在按键中断中改动这两个变量的数值,在定时计数器中运用这断中改动这两个变量的数值,在定时计数器中运用这两个变量为定时计数器恢复初值就可到达调速的目的。两个变量为定时计数器恢复初值就可到达调速的目的。 根据要求,每按一次按键时需求改动速度。在按键根据要求,每按一次按键时需求改动速度。在按键的中断处置中需求对定时器的初值进展调整,根据前的中断处置中需求对定时器的初值进展调整,根据前面的分析,提高速度时每次将初值添加面的分析,提高速度时每次将初值添加40004000,而降,而降低速度时每次将初值减小低速度时每次将初值减小40004000。 将初
11、值添加将初值添加40004000和减小和减小40004000需求进展需求进展2 2字节的字节的加减法运算,对于这种通用的功能程序可以直接调加减法运算,对于这种通用的功能程序可以直接调用。如多字节运算子程序如下:用。如多字节运算子程序如下:;.;多字节加减法运算;多字节加减法运算;入口:;入口:R0R0指向加数或被减数的低字节多字节数指向加数或被减数的低字节多字节数低位在低地址,高位在高地址低位在低地址,高位在高地址; R1 R1指向加数或减数的低字节指向加数或减数的低字节; R7 R7需求运算的字节数需求运算的字节数; ASAS运算标志位:运算标志位:AS=0AS=0时进展加法运算,时进展加法
12、运算,AS=1AS=1时进展减法运算时进展减法运算;出口:运算结果存放在;出口:运算结果存放在R0R0指向的延续单元中指向的延续单元中MADDSUBMADDSUB: CLR CCLR C LOOP LOOP: MOV AMOV A, R0R0 JB AS JB AS,SBBSBB ADDC A ADDC A, R1R1 SJMP NEXT SJMP NEXT SBB SBB: SUBB ASUBB A, R1R1 NEXT NEXT: MOV R0MOV R0, A A INC R0 INC R0 INC R1 INC R1 DJNZ R7 DJNZ R7, LOOP LOOP RET RET
13、 这是一个规范子程序,只需求看懂入口和出口这是一个规范子程序,只需求看懂入口和出口的条件即可直接调用。从调用阐明中可以看到,调的条件即可直接调用。从调用阐明中可以看到,调用此程序前需求做以下的预备任务。用此程序前需求做以下的预备任务。 安排定时计数器初值安排定时计数器初值CTHCTH和和CTLCTL时,两个变量时,两个变量需延续安排且需延续安排且CTLCTL在低地址位在低地址位 CTL EQU 22H CTL EQU 22H CTH EQU 23H CTH EQU 23H 将将40004000也安排在两个延续的地址中,也安排在两个延续的地址中,4000=0FA0H4000=0FA0H C400
14、0L EQU 24H C4000L EQU 24H C4000H EQU 25H C4000H EQU 25H 将将R0R0指向指向CTLCTL所在地址所在地址CTLCTL,R1R1指向指向40004000所在地址的低电位所在地址的低电位C4000LC4000L MOV R0 MOV R0, #CTL #CTL MOV R1 MOV R1, #C4000L #C4000L R7 R7送立刻数送立刻数#2#2,需求做加法运算时设置标志位,需求做加法运算时设置标志位AS=0AS=0,需求做减法运算时设置标志位,需求做减法运算时设置标志位AS=1AS=1。 设置完成后调用设置完成后调用MADDSUB
15、MADDSUB子程序,就可以完成子程序,就可以完成运算,运算结果在运算,运算结果在R0R0所指向的地址中,即所指向的地址中,即CTLCTL和和CTHCTH变成了运算后的新数据。变成了运算后的新数据。3 3主程序主程序 安排变量。根据以上分析,本程序中需求安排以下安排变量。根据以上分析,本程序中需求安排以下变量。变量。CTLCTL、CTHCTH:字节变量,用于保管当前计数器的初值。:字节变量,用于保管当前计数器的初值。C4000LC4000L、C4000HC4000H:字节变量,保管每次调整速度:字节变量,保管每次调整速度用的运算数据用的运算数据40004000。JSQJSQ:字节变量,设置一个
16、计数器,计数值从:字节变量,设置一个计数器,计数值从0909。每按键每按键1 1次,次,JSQJSQ加加1 1。当。当JSQ=10JSQ=10时表示本次加速时表示本次加速或减速已达最大或最小值,程序将其回零,同时改动或减速已达最大或最小值,程序将其回零,同时改动加减法运算标志。加减法运算标志。XSXS:字节变量,前几个模块直接将显示控制字放:字节变量,前几个模块直接将显示控制字放置在累加器置在累加器A A中,这样操作简单。但是累加器中,这样操作简单。但是累加器A A是是一个运用非常频繁的存放器,用它做显示控制时,一个运用非常频繁的存放器,用它做显示控制时,其他地方就不便再运用累加器其他地方就不
17、便再运用累加器A A了。因此运用一个了。因此运用一个内存变量保管显示控制字。内存变量保管显示控制字。ASAS:位变量,加减法运算标志。:位变量,加减法运算标志。 主程序。主程序。 ORG ORG0000H0000H SJMP SJMPSTARTSTART ORG ORG000BH000BH SJMP SJMPCTCS CTCS START: MOVSTART: MOVSP,#40HSP,#40H ; ;设置堆栈指针设置堆栈指针MOVMOV CTL,#00H; CTL,#00H;设置定时计数器设置定时计数器0 0初值初值MOV CTH, #10HMOV CTH, #10HMOVMOV C4000
18、L, #0A0H ; 4000=0FA0H C4000L, #0A0H ; 4000=0FA0HMOV C4000H, #0FHMOV C4000H, #0FH CLR AS CLR AS; ;先做加法加速先做加法加速MOV JSQ,#0MOV JSQ,#0 ; ;计数器清计数器清0 0MOVMOV TMOD,#01H; TMOD,#01H;设置定时计数器设置定时计数器0 0任务方式任务方式MOVMOV TL0, CTL TL0, CTL; ; MOV MOV TH0, CTH TH0, CTH SETB SETB TR0 TR0; ;启动定时计数器启动定时计数器 SETBSETB ET0 E
19、T0; ;允许定时计数器允许定时计数器0 0中断中断 SETBSETB EA EA ; ;允许总中断允许总中断 MOVMOV XS,#01H XS,#01H; ;设置显示控制字初值设置显示控制字初值 SJMPSJMP $ $ ; ;主程序停顿在本指令主程序停顿在本指令 JSQ DATA 21H ;JSQ DATA 21H ;定义加减速级数计数器变量定义加减速级数计数器变量 CTL DATA 22H ;CTL DATA 22H ;定义定时计数器定义定时计数器0 0的初值的初值 CTH DATACTH DATA23H23H C4000L DATA 24H C4000L DATA 24H ;定义每级
20、改动量;定义每级改动量 C4000H DATA C4000H DATA 25H 25H XS DATA 26H XS DATA 26H ;定义显示控制字;定义显示控制字 AS BIT 00H AS BIT 00H ;定义运算用标志位;定义运算用标志位4 4定时计数器中断处置程序定时计数器中断处置程序 由于需求进展调速,定时计数器中断处置程序由于需求进展调速,定时计数器中断处置程序也需求进展修正,程序清单如下:也需求进展修正,程序清单如下:;.;定时计数器;定时计数器0 0中断处置程序中断处置程序 CTCS CTCS: PUSH PSW PUSH PSW ;维护现场;维护现场 MOV TL0 M
21、OV TL0,CTL CTL ;恢复定时计数器初值;恢复定时计数器初值 MOV TH0 MOV TH0, CTHCTH MOV A MOV A, XS XS RL A RL A ;调整显示控制字;调整显示控制字 MOV XSMOV XS, A A MOV P2 MOV P2, A A ;输出显示控制字;输出显示控制字 POP PSW POP PSW ;恢复现场;恢复现场 RETI RETI ;中断前往;中断前往5 5按键中断处置程序按键中断处置程序KEYSKEYS: PUSH PSW PUSH PSW PUSH ACC PUSH ACC MOV PSW MOV PSW, #08H #08H M
22、OV R7 MOV R7, #20#20 K1 K1: MOV R6MOV R6, #0FFH #0FFH DJNZ R6 DJNZ R6, $ $ DJNZ R7 DJNZ R7, K1K1 JB KEY, K2 JB KEY, K2 INC JSQ INC JSQ MOV A MOV A, JSQJSQ CJNE A, #10, K3 CJNE A, #10, K3 CPL AS CPL AS MOV JSQ MOV JSQ, #0#0K3K3: MOV R0, #CTL MOV R0, #CTL MOV R1 MOV R1, #C4000L #C4000L MOV R7 MOV R7,
23、#2#2 ACALL MADDSUB ACALL MADDSUB K2K2: POP ACC POP ACC POP PSW POP PSW RETI RETI 4 4、程序清单、程序清单根据以上分析,本系统程序共有以下几部分。根据以上分析,本系统程序共有以下几部分。 主程序。主程序。 定时计数器中断处置子程序。定时计数器中断处置子程序。 按键中断处置子程序。按键中断处置子程序。 多字节加减法运算子程序。多字节加减法运算子程序。完好的程序清单如下:完好的程序清单如下:;速度可控制的流水灯;速度可控制的流水灯ORGORG0000H 0000H SJMP SJMP STARTSTARTORGORG
24、000BH000BHSJMPSJMPCTCS CTCS ORG 0013HORG 0013HSJMPSJMPKEYSKEYSSTART: MOVSTART: MOV SP,#40H SP,#40H; ;设置堆栈指针设置堆栈指针 MOV CTL,#00H ;MOV CTL,#00H ;设置定时计数器设置定时计数器0 0初值初值MOVMOVCTH,#10HCTH,#10H MOV MOVC4000L,#0A0H;4000=0FA0HC4000L,#0A0H;4000=0FA0HMOVMOVC4000H,#0FHC4000H,#0FHMOVMOVXS,#01HXS,#01HMOVMOV JSQ,#0
25、 ; JSQ,#0 ;计数器清计数器清0 0CLR ASCLR AS ; ;先做加法加速先做加法加速MOV TMOD,#01H ;MOV TMOD,#01H ;设置定时计数器设置定时计数器0 0任务方式任务方式MOVMOV TL0,CTL TL0,CTL; ;MOVMOV TH0,CTH TH0,CTHSETBSETBTR0TR0 ; ;启动定时计数器启动定时计数器SETBSETBET0ET0 ; ;允许定时计数器允许定时计数器0 0中断中断SETBSETBEX1EX1 ; ;允许外部中断允许外部中断1 1SETBSETBIT1IT1 ; ;设置外部中断设置外部中断1 1为下降沿中断为下降沿中
26、断SETBSETBEAEA; ;允许总中断允许总中断 MOV XS,#01H MOV XS,#01H; ;设置显示控制字初值设置显示控制字初值S1: SJMP S1: SJMP S1S1; ;主程序停顿在本指令主程序停顿在本指令 JSQ DATA 21HJSQ DATA 21H CTL DATA 22H CTL DATA 22H CTH CTH DATA 23H DATA 23H C4000L C4000LDATADATA 24H 24H C4000H C4000H DATADATA 25H 25H XS XS DATA DATA 26H 26H KEY KEY EQU EQU P3.3 P3
27、.3 AS AS BIT 00H BIT 00H;=;=; ;定时计数器定时计数器0 0中断处置程序中断处置程序; ;入口:定时计数器入口:定时计数器0 0中断中断CTCS:CTCS: PUSH PSWPUSH PSW; ;维护现场维护现场PUSHPUSHACCACCMOVMOVTL0,CTLTL0,CTL ; ;恢复定时计数器初值恢复定时计数器初值MOVMOVTH0,CTHTH0,CTHMOVMOVA,XSA,XSRLRLA A; ;调整显示控制字调整显示控制字MOVMOVXS,AXS,AMOVMOVP2,AP2,A; ;输出显示控制字输出显示控制字POPPOPACCACC POP PSW POP PSW; ;恢复现场恢复现场 RETI RETI ; ;中断前往中断前往;=;=; ;外部中断外部中断0 0处置程序处置程序; ;入口:外部中断入口:外部中断0 0衔接的按键按下衔接的按键按
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 交通工程标志标线施工安全规程
- 拍卖业务保密管理规定与风控措施
- 2026年专业技术资格考试报名资格审核细则
- 妇产科急救护理
- 2025年无人机管制技术研讨会论文集
- 2025年无人机飞行计划审批标准
- 家庭用药安全须知
- 心脏康复中的心理康复活动设计
- 宫颈癌护理中的疼痛管理
- 2026年河南周口西华县特聘动物防疫专员拟聘用人员易考易错模拟试题(共500题)试卷后附参考答案
- 《消化系统疾病预防课件》
- 江苏师范大学成人继续教育网络课程《英语》单元测试及参考答案
- 国家职业技能鉴定考评员考试题库
- 马克思主义与社会科学方法论思考题
- 中考英语表格类阅读理解专题
- 城市一卡通系统总体方案
- DL-T 2199-2020 循环流化床锅炉燃料掺烧技术导则
- 糖尿病酮症酸中毒指南精读
- GB/T 11544-2012带传动普通V带和窄V带尺寸(基准宽度制)
- 《绿色建筑概论》整套教学课件
- 主要工业产品统计指南
评论
0/150
提交评论