电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

定时器计数器习题

  • 资源ID:117168881       资源大小:548KB        全文页数:41页
  • 资源格式: PPT        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

定时器计数器习题

1 第6章 定时器/计数器习题 1 2 6.4 定时器/计数器的编程和应用 4种方式,方式0与方式1基本相同,只是计数位数不同。方 式0初值计算复杂,一般不用方式0,而用方式1。 6.4.1 方式1的应用 【例6-1】假设系统时钟频率采用6MHz,在P1.0引脚上输出 一个周期为2ms的方波,如图6-13所示。 2 图6-13 P1.0引脚上输出周期为2ms的方波 3 基本思想:方波周期T0确定,T0每隔1ms计数溢出1次, 即T0每隔1ms产生一次中断,CPU响应中断后,在中断服务 子程序中对P1.0取反,如图6-13所示。为此要做如下几步 工作。 (1)计算计数初值X 机器周期 = 2s = 2 106s 设需要装入T0的初值为X,则有 (216X)2106=1 103,216X=500,X=65036。 X化为十六进制数,即: 65036 = FE0CH 。 T0的初值为TH0 =FEH,TL0 = 0CH。 3 4 (2)初始化程序设计 采用定时器中断方式工作。包括定时器初始化和中断系 统初始化,主要是对寄存器IP、IE、TCON、TMOD的相 应位进行正确的设置,并将计数初值送入定时器中。 (3)程序设计 中断服务子程序除了完成所要求的产生方波的工作之外 ,还要注意将计数初值重新装入定时器,为下一次产生中 断做准备。 本例,主程序用一条转至自身的短跳转指令来代替。 4 5 参考程序如下: ORG0000H;程序入口 RESET:AJMP MAIN ;转主程序 ORG 000BH ;T0中断入口 AJMP IT0P;转T0中断处理程序IT0P ORG 0100H;主程序入口 MAIN: MOV SP,#60H;设堆栈指针 MOV TMOD,#01H;设置T0为方式1定时 ACALL PT0M0;调用初始化子程序PT0M0 HERE: AJMP HERE ;原地循环,等待中断 5 6 PT0M0: MOV TL0,#0CH;T0初始化,装初值的低8位 MOV TH0,#0FEH;装初值的高8位 SETB ET0;允许T0中断 SETB EA ;总中断允许 SETB TR0;启动T0 RET IT0P: MOV TL0,#0CH;中断子程序,T0重装初值 MOV TH0,#0FEH CPL P1.0 ;P1.0的状态取反 RETI 程序说明:当单片机复位时,从程序入口0000H跳向主 程序MAIN处执行。其中调用了T0初始化子程序PT0M0。 6 7 子程序返回后,程序执行“AJMP HERE”指令,则循环 等待。 当响应T0定时中断时,则跳向T0中断入口,再从T0中 断入口跳向IT0P标号处执行T0中断服务子程序。 当执行完中断返回的指令“RETI”后,又返回断点处继续 执行循环指令“AJMP HERE”。在实际的程序中,“AJMP HERE” 实际上是一段主程序。当下一次定时器T0的1ms 定时中断发生时,再跳向T0中断入口,从而重复执行上述 过程。 如CPU不做其他工作,也可用查询方式进行控制,程序 要简单得多。 7 8 查询方式参考程序: MOVTMOD,#01H;设置T0为方式1 LOOP: MOVTH0,#0FEH ;T0置初值 MOVTL0,# 0CH SETBTR0 ;接通T0 LOOP1:JNB TF0,LOOP1 ;查TF0,TF0 =0, T0未溢出; ;TF0 =1, T0溢出, CLRTR0 ;T0溢出, 关断T0 CPLP1.0 ;P1.0的状态求反 SJMPLOOP 查询程序虽简单,但CPU必须要不断查询TF0标志,工作 效率低。 8 9 【例6-2】系统时钟为6MHz,编写定时器T0产生1s定 时的程序。 基本思想:采用定时器模式。因定时时间较长,首先确 定采用哪一种工作方式。时钟为6MHz的条件下,定时器 各种工作方式最长可定时时间: 方式0最长可定时16.384ms; 方式1最长可定时131.072ms; 方式2最长可定时512s。 由上可见,可选方式1,每隔100ms中断一次,中断10 次为1s。 9 10 (1)计算计数初值X 因为(216 X) 2 106 = 101,所以X = 15536 = 3CB0H 。因此TH0 = 3CH,TL0 = B0H。 (2)10次计数的实现 对于中断10次的计数,采用B寄存器作为中断次数计数器。 (3)程序设计 参考程序如下: ORG0000H;程序运行入口 RESET:LJMP MAIN ;跳向主程序入口MAIN ORG000BH ;T0的中断入口 LJMPIT0P;转T0中断处理子程序IT0P ORG1000H;主程序入口 10 11 MAIN:MOVSP,#60H;设堆栈指针 MOVB,#0AH;设循环次数10次 MOVTMOD,#01H;设置T0工作在方式1定时 MOV TL0,#0B0H;给T0设初值 MOV TH0,#3CH SETBET0;允许T0中断 SETBEA ;总中断允许 SETBTR0;启动T0 HERE: SJMPHERE;原地循环,等待中断 11 12 IT0P: MOVTL0,#0B0H ;T0中断子程序,T0重装初值 MOVTH0,#3CH DJNZB,RTURN;B中断次数计数,减1非0则 ;中断返回 CLRTR0 ;1s定时时间到,停止T0工作 SETBF0;1s定时时间到标志F0置1 RTURN:RETI 程序说明:不论1s定时时间是否已到,都返回到“SJMP HERE”指令处。“SJMP HERE”指令实际是一段主程序。 在这段主程序中再通过对F0标志的判定,可知1s定时是否 到,再进行具体处理。 12 13 6.4.2 方式2的应用 方式2是一个可以自动重新装载初值的8位计数器/定时 器。可省去重装初值指令。 当某个定时器/计数器不使用时,可扩展一个负跳沿触 发的外中断源。 【例6-3】扩展一个负跳沿触发的外部中断源,把定时 器/计数器T0脚作为外部中断请求输入端,溢出标志TF0作 为外中断请求标志。 基本思想:设为方式2(自动装入常数方式)计数模式 ,TH0、TL0初值均为0FFH。当T0脚发生负跳变时,T0 计数溢出,TF0置“1”,单片机发出中断请求。 13 14 初始化程序: ORG0000H AJMPIINI;跳到初始化程序 ORG000BH AJMPIT0P;跳到外中断处理程序 IINI:MOV TMOD,#06H;设置T0为方式2 MOV TL0,#0FFH;设T0初值 MOV TH0,#0FFH SETB ET0;允许T0中断 SETB EA;总中断允许 SETBTR0;启动T0 IT0P: 外中断处理程序段 14 15 程序说明:当连接在P3.4(T0脚)的外部中断请求输 入脚电平发生负跳变时,TL0加1,产生溢出,TF0置“1” ,向单片机发出中断请求,同时TH0的内容0FFH送TL0, 即TL0恢复初值0FFH。 P3.4脚相当于一个负跳沿触发的外中断请求源输入。对 P3.5也可做类似的处理。 【例6-4】 当T0(P3.4)引脚上发生负跳变时,作为 P1.0引脚产生方波的启动信号。开始从P1.0脚上输出一个 周期为1ms的方波,如图6-14所示(系统时钟6MHz)。 15 16 基本思想:T0设为方式1计数,初值为FFFFH。当外部 计数输入端T0(P3.4)发生一次负跳变时,T0加1且溢出 ,溢出标志TF0置“1”,向CPU发出中断请求,此时T0相 当于一个负跳沿触发的外部中断源。 进入T0中断程序后,F0标志置“1”,说明T0引脚上已接 收过负跳变信号。T1定义为方式2定时。在T0引脚产生一 次负跳变后,启动T1每500s产生一次中断,在中断服务 子程序中对P1.0求反,使P1.0产生周期1ms的方波。由于 省去重新装初值指令,所以可产生精确的定时时间。 16 17 17 图图6-14 负负跳变变触发输发输 出一个周期为为1ms的方波 18 (1)计算T1的初值 设T1的初值为x,则 (28 x) 2 106 = 5 104 x = 28 250 = 6 = 06H (2)程序设计 参考程序: ORG 0000H;程序入口 RESET:LJMP MAIN ;跳向主程序MAIN ORG 000BH ;T0的中断入口 LJMP IT0P ;转T0中断服务程序 ORG 001BH;T1的中断入口 18 19 LJMP IT1P ;转T1中断服务程序 ORG 0100H;主程序入口 MAIN: MOV SP,#60H;设堆栈指针 ACALL PT0M2;调用对T0,T1初始化子程序 LOOP: MOV C,F0 ;T0是否产生过中断,若产生 ;过,F0置1 JNC LOOP;T0未产生中断,C=0,则跳 ;到LOOP,等待T0中断 SETB ET1 ;允许T1产生定时中断 SETB TR1 ;启动T1 HERE: AJMP HERE 19 20 PT0M2: MOV TMOD,#26H ;对T0,T1初始化,T0方式1 ;计数,T1方式2定时 MOV TL0,#0FFH ;T0置初值 MOV TH0,#0FFH SETB ET0;允许T0中断 MOV TL1,#06H;T1置初值 MOV TH1,#06H CLR F0;把T0已发生中断标志F0清0 SETB EA;总中断允许 SETB TR0;启动T0 RET 20 21 IT0P: CLRTR0 ;T0中断服务程序,停止T0计数 SETBF0 ;把T0引脚接收过负脉冲标志F0置1, ;即接收过负跳变 RETI IT1P: CPL P1.0;T1中断服务程序,P1.0位取反 RETI 程序说明:当单片机复位时,从0000H跳向主程序 MAIN处执行程序。其中调用了对T0,T1初始化子程序 PT0M2。子程序返回后执行标号LOOP处指令,循环等待 T0引脚上负脉冲的到来。由于负脉冲到来的标志位F0的 复位初始值为0,所以程序就在标号LOOP处循环等待。 21 22 当T0(P3.4)脚发生负跳变时,由于T0计数溢出,则 跳向T0中断服务子程序。此时停止T0计数,并把T0引脚 接收过负脉冲的标志F0置1。 当中断返回时,由于F0已被置1,则程序跳出LOOP处 的循环等待。此时执行指令来允许T1中断,并启动T1定 时,然后执行“AJMP HERE”指令,循环等待,等待T1的 500s定时中断到来。 当T1的500s定时中断产生时,则进入T1的中断服务子 程序IT1P,把P1.0脚电平取反。由于是自动装初值,省去 对T1重装初值指令。中断返回后,到“AJMP HERE” 处等 待T1的500s定时中断。如此重复,即得到图6-14波形。 22 23 【例6-5】 利用定时器T1的方式2计数,每计满100个数 ,将P1.0取反。本例是方式2计数模式的应用举例。 (1)选择工作方式 外部信号由T1(P3.5)引脚输入,每发生一次负跳变 计数器便加1,每输入100个脉冲,计数器将产生溢出中断 ,在中断服务程序中将P1.0取反一次。 T1工作在方式2的控制字TMOD = 60H。不使用T0时, TMOD低4位任取,但不能使T0为方式3,这里取全0。 (2)计算T1的初值 X = 28 100 = 156 = 9CH TL1的初值为9CH,重装初值寄存器TH1 = 9CH。 23 24 (3)参考程序: ORG0000H;程序运行入口 LJMP MAIN;跳向主程序MAIN ORG001BH;T1中断服务程序入口 CPLP1.0;P1.0位取反 RETI ORG0100H;主程序入口 MAIN: MOV TMOD,#60H;设置T1为方式2计数

注意事项

本文(定时器计数器习题)为本站会员(乐***)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.