单片机原理及应用C语言版6修改教程.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
a、定时工作方式时初值的计算公式: 定时时间 求解初值a b、计数工作方式时初值的计算公式: 计数次数 求解初值a n的值为 方式0:13 方式1:16 方式2:8 方式3:8 (4)启动定时/计数器工作——将TR0或TR1置“1”。 GATE = 0时,直接由软件置位启动; GATE = 1时,除软件置位外,还必须在外中断引脚处加上相应的电平值才能启动。 *(5)根据需要开启定时/计数器中断——直接对IE、IP寄存器相应位赋值。 至此为止,定时/计数器的初始化过程已完毕。 思考题:1、当fosc=12MHZ,T0工作在定时方式,请问方式0、方式1、方式2和方式3最大的定时时间是多少? 定时时间 当初值a=0时,定时时间最大,则: 方式0: 方式1: 方式2: 方式3: 当fosc=6MHZ,T0工作在定时方式,请问方式0、方式1、方式2和方式3最大的定时时间是多少? 思考题:2、T0工作在计数方式时,请问方式0、方式1、方式2和方式3最大的计数次数是多少? 当初值a=0时,计数次数最大,则: 方式0: 方式1: 方式2: 方式3: 计数次数 ⒊ 中断系统应用举例(C51程序设计) (2) 外部中断应用举例 (1) 定时/计数器中断应用举例 (3) 串行口应用举例 例1:设定时/计数器T0为定时状态,工作于方式1,定时时间为2ms,TF0为高级中断,每当2ms到申请中断,使P1.0输出250HZ的方波。(已知fosc=6MHZ) (1) 定时/计数器中断应用举例 分析计算定时初值: 定时时间=12/ fosc×(216-a) a=216-1000=65536-1000=64536 =0FC18H 则:TH0=0xFC; TL0=0x18; #include reg51.h sbit plus_out=P1^0;   void main() {   TMOD=0x01; //T0方式1定时   TL0=0x18; //送时间常数2ms   TH0=0xFC;   TR0=1; //启动T0 计数    EA=1; //CPU开中断 ET0=1; //允许T0中断 PT0=1; //T0设为高级中断 plus_out=1; while(1); //等待中断 } void T0SUB(void) inerrupt 1 { TL0=0x18; //送时间常数2ms    TH0=0xFC;    plus_out=!plus_out; } 例2:设T1工作于定时方式2,产生250μS的中断,使P1.1产生周期为500μS的方波,P1.2产生周期1000μS的方波(设fosc=12MHZ) 解:计算时间常数 T=12/fosc× (256-a)          a=6=06H #include reg51.h sbit plus_500us=P1^1; sbit plus_1000us=P1^2;   unsigned char COUNT; void main() {  TMOD=0x20; //T1方式2定时    TL1=0x06; //TL1为8位计数器    TH1=0x06; //TH1为8位初值寄存器    TR1=1; //启动T1 计数    EA=1; //CPU开中断 ET1=1; //允许T1中断 COUNT=2; plus_500us=1; plus_1000us=1; while(1); //等待中断 } void T1SUB(void) inerrupt 3 { plus_500us=!plus_500us COUNT--; if (COUNT==0) { COUNT=2; plus_1000us=!plus_1000us; } } 例3:利用定时器1,使用软件查询方法,使P1.7输出周期为20ms的方波(fosc=12MHZ,T1工作于定时方式1)。 分析计算定时10ms的时间常数: T=12/fosc× (216-a)  a=21

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档