欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    (43)--5章定时计数器程序设计(234).ppt

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

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    (43)--5章定时计数器程序设计(234).ppt

    51单片机定时/计数器(2)程序设计如图所示,如图所示,如图所示,如图所示,P1P1接八个发光二极管,接八个发光二极管,接八个发光二极管,接八个发光二极管,编程使八个管轮流点亮,编程使八个管轮流点亮,编程使八个管轮流点亮,编程使八个管轮流点亮,每个管亮每个管亮每个管亮每个管亮100ms100ms,设晶,设晶,设晶,设晶振为振为振为振为6MHz6MHz。应用编程举例应用编程举例分析:分析:利用利用T1T1完成完成100ms100ms的的定时定时定时定时,采用定时方式,采用定时方式1 1,当当P1P1口线输出口线输出“1 1”时,发光二极管亮,每当时,发光二极管亮,每当T1T1计满计满溢出,即每隔溢出,即每隔100ms100ms,P1左移一次。左移一次。先计算计数初值:先计算计数初值:MC=2MC=2s 100ms/2 100ms/2s=s=50000 C=65536-50000=15536 查询方式查询方式查询方式查询方式:#include#include#include#include void main(void)void main(void)void main(void)void main(void)uchar ledP1=0 x01;uchar ledP1=0 x01;uchar ledP1=0 x01;uchar ledP1=0 x01;P1=ledP1;P1=ledP1;P1=ledP1;P1=ledP1;/*/*/*/*第一只第一只第一只第一只LEDLEDLEDLED亮亮亮亮*/TMOD=0 x10 TMOD=0 x10 TMOD=0 x10 TMOD=0 x10;/*/*/*/*定时器定时器定时器定时器1 1 1 1方式方式方式方式1*/1*/1*/1*/TR1=1 TR1=1 TR1=1 TR1=1;/*/*/*/*启动启动启动启动T/C1*/T/C1*/T/C1*/T/C1*/While(1)TH1=15536/256;TL1=15536%256;/*装载计数初值装载计数初值*/while(!TF1);/*查询等待查询等待TF1置位置位*/TF1=0;/*软件清软件清TF1*/ledP1=1;P1=ledP1;/*定时时间到,下一只定时时间到,下一只LED亮亮*/if(ledP1=0)ledP1=0 x01;TF1=0;/*软件清软件清TF1*/0 0 0 1 Timer1()interrupt/*T1中断服务程序*/TH1=15536/256;TL1=15536%256;/*计数初值重载*/ledp1=1;/*下一只LED亮*/P1=ledp1;if(ledp1=0 x00)ledp1=0 x01;中断方式:中断方式:中断方式:中断方式:#include#define uchar unsigned char uchar ledp1;void main(void)TMOD=0 x10;/*T1工作在定时方式1*/ledp1=0 x01;P1=ledp1;/*第一只LED亮*/TH1=15536/256;TL1=15536%256;/*装载计数初值*/EA=1;ET1=1;/*CPU开中断,允许T1中*/TR1=1;/*启动T1开始定时*/while(1);/*等待中断*/例例2 2 在在P1.7P1.7端接一个发光二极管端接一个发光二极管LEDLED,要求利用定时控,要求利用定时控制使制使LEDLED亮一秒灭一秒周而复始,设亮一秒灭一秒周而复始,设fosc=6MHZfosc=6MHZ。方法方法1:1:采用采用T0T0产生周期为产生周期为200ms200ms脉冲,即脉冲,即P1.0P1.0每每100ms100ms取反一次作为取反一次作为T1T1的计数脉冲,的计数脉冲,T1T1对下降沿计数,因此对下降沿计数,因此T1T1计计5 5个脉冲正好个脉冲正好一秒。一秒。T0 采用采用方式方式 1,定时,定时 100ms,100ms,也就是计也就是计5000050000个机器周期。个机器周期。X=216 50000 ,T1采用方式采用方式2,计数初值计数初值X=285解解:16:16位定时最大为位定时最大为216 *2us=131.072ms,显然不能满足要求,可用以下,显然不能满足要求,可用以下两种方法解决。两种方法解决。#include#include sbit P1_0=P1 sbit P1_0=P10 0;sbit P1_7=P1sbit P1_7=P17 7;timer0()interrupt 1 timer0()interrupt 1*T0T0中断服务程序中断服务程序*/P1_0=P1_0=!P1_0P1_0;/*100ms/*100ms到,到,P1.0P1.0取反取反*/TH0=-50000/256 TH0=-50000/256;/*/*重载计数初值高重载计数初值高8 8位位*/TL0=-50000%256 TL0=-50000%256;/*/*重载计数初值低重载计数初值低8 8位位*/timer1()interrupt 3 timer1()interrupt 3 timer1()interrupt 3 timer1()interrupt 3/*T1/*T1/*T1/*T1中断服务中断服务中断服务中断服务*/P1_ P1_ P1_ P1_!P1_7;P1_7;P1_7;P1_7;/*1s/*1s/*1s/*1s到,灯变状态到,灯变状态到,灯变状态到,灯变状态*/因为C编译器自动用补码表示符号数,所以编程中直接赋初值-50000即可。T1采用方式2,计数5个脉冲,故初值为-5。main()main()main()main()P1_7=0;P1_7=0;P1_7=0;P1_7=0;/*/*/*/*置灯初始亮置灯初始亮置灯初始亮置灯初始亮*/P1_0=P1_0=P1_0=P1_0=;/*/*/*/*保证第一次反向便开始计数保证第一次反向便开始计数保证第一次反向便开始计数保证第一次反向便开始计数 TMOD=0 x61;TMOD=0 x61;TMOD=0 x61;TMOD=0 x61;/*T0/*T0/*T0/*T0方式定时,方式定时,方式定时,方式定时,T1T1T1T1方式计数方式计数方式计数方式计数*/TH0=-50000/256;TH0=-50000/256;TH0=-50000/256;TH0=-50000/256;*预置预置预置预置T0T0T0T0计数初值计数初值计数初值计数初值*/TL0=-50000%256;TL0=-50000%256;TL0=-50000%256;TL0=-50000%256;TH1=-5;TL1=-5;TH1=-5;TL1=-5;TH1=-5;TL1=-5;TH1=-5;TL1=-5;*预置预置预置预置T1T1T1T1计数初值计数初值计数初值计数初值*/IP=0 x08;IP=0 x08;IP=0 x08;IP=0 x08;/*/*/*/*置置置置T1T1T1T1高优先级高优先级高优先级高优先级*/EA=1;ET0=1;ET1=1 EA=1;ET0=1;ET1=1 EA=1;ET0=1;ET1=1 EA=1;ET0=1;ET1=1/*/*/*/*开中断开中断开中断开中断*/TR0=1;TR1=1;TR0=1;TR1=1;TR0=1;TR1=1;TR0=1;TR1=1;/*/*/*/*启动定时计数器启动定时计数器启动定时计数器启动定时计数器*/for(;)for(;)for(;)for(;)/*/*/*/*等待中断等待中断等待中断等待中断*/门控位门控位GATE为为1时,时,TRx=1,INTx=1才能才能启动定时器。利用这个特性可以测量外部输入脉启动定时器。利用这个特性可以测量外部输入脉冲的宽度。冲的宽度。门控位的应用门控位的应用 例例 利用利用T0门控位测试门控位测试 INT0引脚上出现的正脉冲宽度,已知晶振频率为引脚上出现的正脉冲宽度,已知晶振频率为12MHz,将所测得值显示,将所测得值显示。分析:外部脉冲由(P3.2)输入,设T0工作于定时方式1(16位计数),GATE设为1。测试时,应在INT0 处于低电平时,就启动定时器即TR0为1;当INT0 变为高电平时,就启动计数;再次变低时,停止计数。此计数值与机器周期的乘积即为被测正脉冲的宽度。因fosc=12MHZ,机器周期为1us。#include sbit p32=P32;main()P1=0;P2=0;while(1)TMOD=0 x09;TH0=0;TL0=0;TR0=0;while(p32=1);TR0=1;/while(p32=0);while(p32=1);TR0=0;P1=TL0;P2=TH0;THE END!

    注意事项

    本文((43)--5章定时计数器程序设计(234).ppt)为本站会员(刘静)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开