C51单片机应用与C语言程序设计第六章.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 机器人的距离检测 深圳市鸥鹏科技有限公司 黄曦 2009.3.21 摘要 用同样的IR LED/探测电路检测距离 任务一 定时/计数器的运用 任务二 测试扫描频率 任务三 尾随小车 任务四 跟踪条纹带 工程素质和技能归纳 科学精神的培养 用同样的IR LED探测电路检测距离 元件搭建:参考第五章任务一 新增工具和原料: (1)尺子 (2)一张纸任务一 定时/计数器的运用本任务主要介绍51单片机定时/计数器的使用方法,单片机STC89C52的定时/计数器可以分为定时器模式和计数器模式。其实这两种模式没有本质上的区别,均使用二进制的加一计数:当计数器的值计满回零时能自动产生中断的请求,以此来实现定时或者计数功能。它们的不同之处在于定时器使用单片机的时钟来计数,而计数器使用的是外部信号。 任务一 定时/计数器的运用 定时/计数器的控制51系列单片机有两个定时/计数器,通过TCON和TMOD这两个特殊功能寄存器控制。TCON和TMOD你都可以在头文件uart.h中看到其应用TCON为定时器控制寄存器,有8位,每个位的含义为如下表所示。TCON的低4位与定时器无关,它们用于检测和触发外部中断。 任务一 定时/计数器的运用 定时/计数器的控制 TMOD为定时器模式寄存器,它也有8位,但不能像TCON一样可以一位一位的设置,只能通过字节传送指令来设定TMOD的各个状态。TMOD的各位定义如下表所示: 任务一 定时/计数器的运用工作模式每个定时/计数器都有一个16位的寄存器Tn(n=0或1)来控制计数长度,由高8位THn和低8位TLn置初值。定时/计数器有四种工作模式。 模式0:定时/计数器按13位自加1计数器工作。这13位由TH的全部8位和TL中的低5位组成,TL中的高3位没有用到。 模式1:定时/计数器按16位自加1计数器工作。 模式2:定时/计数器被拆成一个8位寄存器TH和一个8位计数器TL,以便实现自动重载。这种模式使用起来非常方便,一旦设置好TMOD和THn,定时器就可以按设定好的周期溢出。 模式3:TH0和TL0均作为两个独立的8位计数器工作。定时器1在模式3下不工作。 任务一 定时/计数器的运用 定时/计数器初值的计算定时/计数器是在计数初值的基础上加法记数的,假设Tn(TLn和THn)中写入的值为TC,在该模式下最大计数值为2n,程序运行的计数值为CCTC=2n-CC 通过定时/计数器来实现LED测试电路 源程序:参考教材P105例程TimeApplication.c 任务一 定时/计数器的运用 例程TimeApplication.c是如何工作的 在C程序中,一个函数的定义可以放在任意位置,既可放在主函数main之前,也可放在main之后,但如果放在main之后的话,那么应该在main函数的前面加上这个函数的声明:void initial(void); // 子函数声明主函数main(): 首先对中断进行初始化设置,然后等待中断。IE=0x82;EA=1且ET0=1,打开了全局和定时器0的中断TCON=0x00;停止定时器,并清除了中断标志。TMOD=0x02;M1=0且M0=0,定时器0选择模式2TH0=0x38;TL0=0x38;设置计数初值和重载值。TR0=1;启动定时器0 任务一 定时/计数器的运用 中断 中断即发生了某种情况(事件),使得CPU暂时中止当前程序的执行,转去执行相应的处理程序。中断在单片机应用的设计与实现中起着非常重要的作用。使用中断允许系统响应事件并在执行其他程序的过程中处理该事件。中断驱使系统能够在同一时间处理许多任务。在某种程度上,中断与子程序有些相似:CPU执行另一个程序——子程序——然后返回主程序。 任务一 定时/计数器的运用 中断: 单片机AT89S52有5个中断源:2个外部中断源;2个定时器中断;1个串口中断。 每个中断源可以单独允许或禁止,通过修改可位寻址的专用寄存器IE(允许中断寄存器)实现,如下表所示 任务一 定时/计数器的运用 中断优先级 AT89S52的中断分为2级,高和低。利用“优先级”的概念,允许拥有高优先级的中断源中断系统正在处理的低优先级的中断源。 中断的优先级由高到低依次为:外部中断0,定时器0,外部中断1,定时器1,串口中断,定时器2中断。编译器Keil uVision2支持在C源程序中直接开发中断程序,提高了工作效率。中断服务程序是通过按规定语法格式定义的一个函数,语法格式如下:返回值 函数名([参数])interrupt m[using n]{……} 其中,m(0~31)表示中断号,C51编译器允许32个中断,定时器0的中断号为1;n(0~3)表示第n组寄存器,例程没有使用该参

文档评论(0)

dreamclb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档