- 1、本文档共32页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章-2单片机
本章小结 1、定时/计数器的工作原理是,利用加1计数器对时钟脉冲或外来脉冲进行自动计数。当计满溢出时可引起中断标志(TFx)硬件置位。据此表示定时时间到或计数次数到。定时器本质上是计数器,前者是对时钟脉冲进行计数,后者则是对外来脉冲进行计数。 2、51单片机包括两个16位定时器T0 (TH0、TL0)和T1 (TH1、TL1),还包括两个控制寄存器TCON和TMOD。通过TMOD控制字可以设置定时与计数两种模式,设置方式0~方式3四种工作方式;通过TCON控制字可以管理计数器的启动与停止。 3、方式0 ~方式2分别使用13位、16位、8位工作计数器,方式3具有3种计数器状态。 课后思考题 1、能根据要求定时/计数器的工作方式,既熟练掌握TCON,TMOD各位的含义,并会设计。 2、读懂例4,并会讲解。 6.4 定时/计数器的编程和应用 6.4.1 定时功能应用举例 6.4.2 计数功能应用举例 实例5 定时器中断控制的流水灯 采用定时中断方式,实现下图流水灯控制功能。要求灯的循环速率为每秒1次。 分析:利用定时器直接进行1s延时是无法实现的,但可以将定时中断与软件计数联合起来增加延时长度,即利用定时中断进行中断次数统计。 例如,1s延时可以视为20次50ms定时中断的累积延时量。若采用12MHz频率定时方式1,则计数初值为: a = -50000 = 0x3cb0 实例5运行效果 视频 6.4 定时/计数器的编程和应用 6.4.1 定时功能应用举例 6.4.2 计数功能应用举例 计数器方式要点: 由引脚T0(P3.4)和T1(P3.5)输入外部脉冲信号; 当T0或T1脚出现由1到0 负跳变脉冲时,计数器值加1; 当计数器溢出时,TFx硬件置1; 由于检测一个负跳变需要2个机器周期,即24个振荡周期,故最高计数频率= 补充实例2 将第5章实例5“计数显示器”中的查询法按键检测改用T0中断方式实现。 分析 将T0设置为计数器方式2,设法使其在1个外部脉冲到来时就能溢出(即计数溢出周次为1)产生中断请求。 计数初值a =最大计数空间 - 计数溢出周次 = 28 – 1 = 255 = 0xff 初始化,TMOD = 0000 0110B = 0x06 补充实例2程序: 补充实例2运行效果: 外部中断的扩展问题(§5.4.2) 1、利用查询法扩展外部中断源 ——通过门电路连接多个外部中断源,利用输入端口线作为各个中断源的识别线。 2、利用定时器扩展外部中断源 ——通过定时器引脚连接外部中断源,利用工作在计数器方式下的1个计数脉冲信号产生溢出中断。 main(){ P0=P2=table[0]; //显示初值“00” TMOD=0x06;//T0计数方式2 TH0=TL0=0xff; //计数初值 ET0=1; EA=1; //开中断 TR0=1; //启动T0 while(1); } 实例2 测量从P3.2(INT0)输入的正脉冲的宽度,测量结果以BCD码形式存放在片内RAM 40H开始的单元处(设40H地址存放个位,系统时钟为12MHz,被测脉冲信号周期不超过100ms) 。 原理分析:GATE=TR0=1时允许INT0的脉冲控制定时器的启停, 即INT0=1可启动定时器,INT0=0可关闭定时器。若T0为定时器方式(计数初值为0),则根据T0先启动、再关闭后的计数值可算出被测脉冲宽度。 实例2参考程序 T0 实例2电路 脉冲设置(100ms) 在Proteus软件中实现C51源码级调试的方法: 形成OMF (absolute objectmodule format files,绝对目标文件) 格式文件。 omf文件 设置 omf文件加载 启动调试 omf文件窗口 片内RAM窗口 实例2的运行结果 结果:计数值为50000脉冲→脉宽值为50ms。 运行到光标 实例2的运行结果 视频 实例2小结 1、测量未知脉冲宽度的方法——利用INTx引脚接入待测脉冲→设置Tx定时方式→ THx和TLx清零→利用查询语句辅助计时→用Tx计数值计算脉宽值; 2、C51对存储器单元的操作方法——定义指针变量并赋地址值→按指针变量对数据进行读写操作; 3、十六进制数转BCD码的方法——从最低位开始反复进行模10计算→ 取模后删去最低位(整除10)→直至整除10的结果为0 ; 4、在Proteus中进行C51调试的方法——改变keil 的输出设置→形成omf格式编译文件→在Proteus中加载omf文件→利用类似汇编调试方法进行调试。 实例3 设计一个波形展宽程序。设由P3.
文档评论(0)