- 1、本文档共91页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
演示文稿演讲PPT学习教学课件医学文件教学培训课件
6.3.3 程序调试 1. 实验板电路分析 参照项目三图3-15所示HOT-51实验板动态显示电路。注意:实验板上是共阴型数码管,P0为字段口,P2为字位口,8个数码管从左至右的位码依次是0~7,晶振为11.0592 MHz。 2. 定时/计数器的初始化 一般在主函数开始对定时/计数器进行初始化,步骤如下: (1) 对TMOD赋值,确定T0和T1的启动方式、功能、工作方式。 (2) 计算初值,并将其写入TH0、TL0或TH1、TL1。 (3) 中断方式时,对IE赋值开中断;查询方式时,不需开中断。 (4) 置位TR0或TR1,启动定时/计数器。 3. 定时/计数器应用举例 例1 制药厂装瓶生产线上,每瓶装100个药片,用51单片机实现控制要求,试编写初始化程序。 解:(1) 题目分析。由题意可知,在统计药片的个数时要用到定时/计数器的计数功能,计数值为100,用T1的方式2实现,采用中断方式。 (2) 初始化程序如下: TMOD=0x60; //设置T1为软启动、计数、方式2 TH1=TL1=256-100;//装初值,TL1 用于计数、TH1存放初值 ET1=1; //定时/计数器T1开中断 EA=1; //CPU开中断,也可用字节寻址IE=0x88;代替这两条开中断指令 TR1=1; //启动T1 例2 某控制系统需定时20 ms,晶振为12 MHz,试初始化。 解:(1) 题目分析。晶振为12 MHz时,定时20 ms需要的计数值为20000 μs?×?12 MHz /12?=?20000次,可用T0的方式1实现,采用中断方式。 (2) 初始化程序如下: TMOD=0x01; //设置T0为软启动、定时、方式1 TH0=(65536-20000)/256;//初值高8位送TH0 TL0=(65536-20000)%256;//初值低8位送TL0 ET0=1; //定时/计数器T0开中断 EA=1; //CPU开中断 TR0=1; //启动T0 例3 设某单片机系统的晶振为12 MHz,P2口上接有8个发光二极管,低电平点亮,利用定时/计数器T0工作在方式1,使P2.0所接发光管LED0以200 ms亮灭闪烁。 解:(1) 硬件设计。参考项目一相关内容,硬件电路如图6-5所示。 (2) 软件设计。定时200 ms有两种方法:一是用延时函数;二是用定时/计数器。在没有讲定时/计数器之前,与定时有关的定时功能都是用延时函数来实现的,CPU执行延时函数时,只能长时间无意义地等待定时时间的到来,降低了CPU的利用率。用定时/计数器实现定时,CPU只要对其初始化并启动后,定时工作就交由定时/计数器来独立完成,而CPU就可以执行其他的任务了,从而完成较为复杂的控制要求。 图6-5 定时/计数器例3电路图 定时200 ms时,需要的计数值=200000 μs×12 MHz/12=200000次65536,T0本身并不能实现200 ms的定时,考虑到200000=50000×4,即200 ms=50 ms×4,用T0实现50000次计数即定时50 ms,当T0溢出4次时,就可实现200 ms定时,为此定义变量t0_num(初值4)统计溢出次数,T0每溢出一次,t0_num就减1,当t0_num减至0时,溢出4次。 采用中断方式时,软件包含主函数main()与T0中断服务函数time0()。 定时/计数器T0的中断号为1,定义中断服务函数时一定要写正确。 将判断200 ms是否到,以及200 ms到了之后控制灯闪烁安排在time0()中;main()只需完成对T0的初始化,然后就无事可做,等待T0申请中断,这样安排的好处是main()与time0()之间无需传递信息,适用于初学者。相关流程图如图6-6所示。 图6-6 定时/计数器例3流程图 (3) 源程序。 #include reg51.h #define uchar unsigned char #define uint unsigned int /*必要的全局变量定义*/ sbit LED0=P2^0; //定义发光二极管LED0 uchar t0_ num=4; //定义变量t0_ num统计T0的溢出次数 /*主函数*/main(){ TMOD=0x01; //设置T0软启动、定时50 ms、方式l TH0=(65536-50000)/256; //定时50 m
您可能关注的文档
- (精选)美术史第1章 原始及古代美术课件.pptx
- (精选)品国际贸易第十二章农业贸易谈判课件.ppt
- (精选)品国际贸易第十三章农产品出口促进体系课件.ppt
- (精选)品国际贸易第十一章第二、三节《农业协议》《实施动植物卫生检疫措施协议》分析课件.ppt
- (精选)品国际贸易第十一章第四节《技术性贸易壁垒协议》分析课件.ppt
- (精选)品国际贸易第五章中国的农产品贸易课件.ppt
- (精选)品质量安全第八章 农产品安全加工课件.ppt
- (精选)品质量安全第二章 影响农产品安全的因素课件.ppt
- (精选)品质量安全第九章 农产品质量安全认证课件.ppt
- (精选)品质量安全第六章 农业投入品控制课件.ppt
文档评论(0)