640 likes | 860 Views
实例解读 51 单片机完全学习与应用 All you need to know about the 8051 microcontroller. 杨欣 Yang X 张延强 Zhang Y 编著 莱 · 诺克斯 Nokes L 王玉凤 Wang Y 刘湘黔 Liu X 主审 电子工业出版社 2011.2. 第 11 章 时间的计算. www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《 实例解读 51 单片机完全学习与应用 》 All you need to know about the 8051 microcontroller
E N D
实例解读51单片机完全学习与应用All you need to know about the 8051 microcontroller 杨欣Yang X 张延强Zhang Y 编著 莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X 主审 电子工业出版社 2011.2
第11章 时间的计算 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 秒表计时 秒表通常有6位数字,前两位数字代表分钟,中间两位代表秒钟,最后两位则是更小的计时单位——1/100秒。当计时启动后,1/100秒位的两位数字在1秒内飞快的由00增加到99。秒表内部的电路需要有较高的精度才能准确地以1/100秒为间隔更新显示数字。虽说如此,这个任务对于单片机来说却是小菜一碟。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.1 ■定时与计数 11.1.1 什么是定时? 设定加热一只鸡的时间为15分钟(900s),启动后微波炉开始倒计时,并在显示屏上显示剩余时间。图示当前剩余时间为5分45秒(345s)。单片机只需要每过1s 更新一次显示时间,当更新显示900次(900s)后就让微波炉停止加热即可。所以定时过程可视为单片机计算单位时间(可以是1s、1ms、1µs)的个数,当计时完成后,把单位时间乘以个数就得到了定时的时间长度。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.1.2 什么是计数? 计数就是计算事件的发生次数。霍尔开关每当车轮转过一圈时磁铁接近一次霍尔开关,于是就会输出一个脉冲。如果把这个脉冲输入单片机,单片机可以在每次脉冲到来时计一个数,假设60秒内单片机的计数值为n,于是车轮每转过一圈的时间,即脉冲的周期为: 如果车轮的半径为r,于是车轮的周长为C=2πr,得自行车的行驶速度为: www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.1.3 单片机的Timer AT89S51单片机有两个Timer——Timer 0和Timer 1。当Timer工作于定时功能下时,模拟开关打到T位置上,Timer计数电路计算的是单位时间脉冲。单位时间脉冲的周期与单片机的机器周期相等,如果晶振的频率是12MHz,则1个机器周期=1µs,于是单位时间脉冲的周期为1µs。也就是说,晶振频率=12MHz,Timer计数电路每过1µs计数值增加1。所以,在定时结束时Timer计数电路的计数值乘以1µs就能知道流逝了多少时间,从而起到定时的功能。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.1.3 单片机的Timer 如果图中模拟开关打到C位置上,进入Timer计数电路的则是外部事件脉冲。这样Timer计数电路的计数值就是外部事件脉冲的个数,这也就是单片机Timer的计数功能。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.2 ■与Timer有关的寄存器 11.2.1 Timer实现的延时 感受Timer的作延时用。如果晶振频率为12MHz,则程序实现50ms的延时。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.2.2 Timer模式控制寄存器TMOD TMOD是“timer mode”的缩写,用于设置Timer的工作模式。TMOD在特殊功能寄存器的地址89H上,如图11-5所示。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.2.2 Timer模式控制寄存器TMOD AT89S51单片机有两个Timer——Timer 0和Timer 1,它们的工作模式由TMOD中的对应位来分别设置。TMOD的长度为1个字节(8位),高4位和低4位分别控制Timer 1和Timer 0。其中由M11、M01控制Timer 1的工作模式,M10、M00控制Timer 0的工作模式。举个例子,我们想令Timer 0工作在定时器的模式0下(软件启动),而Timer 1工作在计数器的模式1下(软件启动),则设置Timer的指令为“MOV TMOD, #01010000B”。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.2.3 Timer寄存器 Timer寄存器里保存的是计数值,当Timer启动后每过一个机器周期(定时模式)或输入一个外部事件脉冲(计数模式),计数值会自动增加1。通过计数值我们可知道Timer启动之后流逝了多少时间(定时模式)或收到多少个外部事件脉冲。 AT89S51单片机有两个Timer,它们有各自的Timer寄存器,且每个Timer寄存器由高位字节寄存器THx和低位字节寄存器TLx组成。即Timer 0寄存器由TH0和TL0组成,Timer 1寄存器由TH1和TL1组成。这4个寄存器位于特殊功能寄存器的8AH~8DH上。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.2.3 Timer寄存器 Timer寄存器TL0、TH0、TL1、TH1可以像累加器A一样进行数据的装载和读取。假如需要向Timer 0寄存器载入计数初始值B35AH,可通过指令“MOV TL0, #5AH”和“MOV TH0, #0B3H”实现。另外,指令“MOV R2, TH1”则把Timer 1寄存器的高位字节TH1的值读到工作寄存器R2中。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.2.4 Timer控制寄存器TCON TCON是“timer control”的缩写,用于控制Timer的启动或停止,并指示Timer是否溢出。TCON在特殊功能寄存器的地址88H上。TCON的高4位的名称及功能描述: www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.2.4 Timer控制寄存器TCON TCON寄存器中,TFx是溢出标志位,当Timer寄存器计数达最大值之后再增加1时产生溢出,TFx位被硬件置1。于是可通过指令“JBC TFx, rel”或“JB TFx, rel”来判断TFx位是否为1,从而判断定时/计数是否完成。另外,TCON寄存器的TRx位控制Timer启动或关闭。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.2.5 Timer用作定时/计数器小结 AT89S51单片机中提供了2个通用的16位 Timer,分别为Timer 0和Timer 1,它们可以被独立配置成定时或计数器并工作于不同模式下。 当作为定时器时,Timer将在设定好的时间下工作并在计时完成后产生溢出。当作为计数器时,Timer将计算输入T0或T1管脚的脉冲个数,当计数达到预设的值时Timer同样可以产生溢出。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.3 ■ Timer的工作模式1 11.3.1模式1的特点 工作模式1下的Timer是一个16位的定时器或计数器,Timer寄存器TLx和THx共16位全部用来装计数值。当指令“SETB TRx”启动Timer x后,Timer寄存器将从计数初始值开始,每过一个机器周期计数值增加1,直到FFFFH再增加1溢出时完成一次计数过程。同时溢出标志TFx被硬件置1,可通过检测TFx标志位来了解计数是否完成。 当计数完成后,使用指令“CLR TRx”和“CLR TFx”来关闭Timer。如果需要循环Timer的定时或计数过程,Timer寄存器TLx和THx中必须再次装载原来的计数初始值。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.3.2模式1的设置 TMOD、Timer寄存器、TCON等寄存器中相关控制、标志位的操作实例:让P1.0口输出频率为100Hz方波信号(占空比为50%的矩形波)。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.3.2模式1的设置 • ①-设置Timer的工作模式。程序中使用的是Timer 0(当然也可以使用Timer 1),所以通过指令“MOV TMOD, #01H”向Timer模式控制寄存器TMOD中装载01H,即0000 0001B。GATE0=0说明使用软件控制启动或关闭,C/T0#=0使Timer 0作定时器使用,M10=0和M00=1则令Timer 0工作于模式1下。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.3.2模式1的设置 • ②-往Timer寄存器(TL0和TH0)载入计数初始值。两条MOV指令使TL0和TH0中分别装载78H和0ECH,即计数的初始值为EC78H。如果启动Timer后,从EC78H到Timer溢出需要经过1388H个机器周期(10000H-EC78H=1388H),也就是5000个机器周期。如果晶振频率为12MHz,机器周期为1µs。于是完成一次Timer计时需要5000µs。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.3.2模式1的设置 • ③-启动Timer。指令“SETB TR0”使TR0=1以启动Timer 0。启动之后,Timer寄存器中的计数值会自动地每过1个机器周期增加1。如图11-9所示,Timer寄存器从计数初始值EC78H计数到FFFFH。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.3.2模式1的设置 • ④-检测Timer溢出标志(TF0)。当Timer寄存器中的计数值增加到FFFFH后再增加1,计数值变成0000H,并产生Timer溢出,这使得TF0=1,于是指令“JNB TF0, CHECK”循环检测TF0位,从而等待Timer计数完成。 • ⑤-关闭Timer。Timer完成计数后,用指令“CLR TR0”将TR0位清0以关闭定时器。如果不用指令关闭Timer,Timer寄存器中的计数值还会继续以机器周期为周期进行增加1的操作。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.3.2模式1的设置 • ⑥-清0溢出标志(TF0)。将Timer溢出标志TF0清0,以便下次检测标志位的操作得以正常进行(步骤④)。 • ⑦-重新装载计数初始值。如果需要再次使用Timer进行同样的定时操作,则指令“JMP LOAD”带回到步骤②重新装载计数初始值并重新开始新一轮的计数过程。因为程序11-2在不断变换P1.0口状态(指令“CPL P1.0”)并进行5000µs的延时,于是就形成了频率100Hz的方波信号。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.3.3模式1的计数初始值 如果我们知道晶振频率,可根据以下的公式计算出模式1下Timer作定时器的定时时长: 定时时长t的单位为µs,为晶振频率,单位是MHz。FFFF是Timer寄存器的最大计数值,为十六进制数。MMLL表示Timer寄存器中装载的计数初始值,其中MM是高位THx的数值,LL是低位TLx的数值,MMLL也是十六进制数。Val的意思是将(FFFF-MMLL+1)的计算结果转换成十进制,再与机器周期相乘即可得到定时器的定时时长t。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.3.4设计模式1的计数初始值 • 假如要设计一个方波发生器,要求从P1.0口输出频率f=2kHz的方波,即P1.0口输出高、低电平持续时间分别为250µs 。如何确定计数初始值?250µs即Timer作定时器的定时时长t,计数初始值设计步骤为: • ①-将定时时长t除以。 • ②-用65536减去步骤①得到的数。 • ③-用科学计算器把步骤②的得数转换成十六进制形式MMLL,如果转换结果<100H,则MM=00。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.3.4设计模式1的计数初始值 • ④-最后得计数初始值:THx=MM,TLx=LL。 • 根据以上的步骤,设计计数初始值。假设晶振频率=12MHz,定时时长t=250µs,则有: • ①-250µs /1µs=250 • ②-65536 – 250=65286 • ③-65286(十进制)=FF06H(十六进制) • ④-THx=FF,TLx=06 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.3.4设计模式1的计数初始值 “MOVTMOD, #10H”向TMOD中装入的是10H,设置Timer 1作定时器,模式1下。Timer寄存器TL1和TH1载入计数初始值FF06H, “SETB TR1”启动Timer 1。“CHECK”段用指令“JNB TF1, CHECK”来检测Timer定时是否完成,检测过程花去的时间就是定时时长250µs,在此过程中P1.0口保持着高电平或低电平。当Timer定时完成,指令“CLR TR1”关闭Timer。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.4 ■ Timer的工作模式0 11.4.1模式0的特点 模式0下Timer寄存器只有13位,计数值的高8位装入THx中,TLx的低5位装入的是剩下的5位计数值。 13位Timer寄存器的最大计数范围是1FFFH,模式0下,当Timer启动后,Timer寄存器将从计数初始值开始,每过一个机器周期计数值增加1,直到1FFFH再增加1就会溢出,相应的TFx位就会被硬件置1,完成一次计数过程。这与模式1下计数至FFFFH相比,模式0的单次最大定时时长较短。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.4.2设计模式0的计数初始值 • 模式0下的Timer设置过程与模式1下相同,只是Timer模式控制寄存器TMOD中的M1x和M0x位均为0。计数初始值的设计: • ①-将定时时长t除以。 • ②-用8192减去步骤①得到的数。 • ③-用科学计算器把步骤②的得数转换成13位二进制数M N3 N2 N1 N0 P3 P2 P1 P0 Q3 Q2 Q1 Q0,高位如果是空的用0补上,依次填入THx的8位和TLx的低5位中,TLx的高3位用0代替。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.4.2设计模式0的计数初始值 • ④-最后得计数初始值:THx=M N3 N2 N1 N0 P3 P2 P1(二进制),TLx=0 0 0 P0 Q3 Q2 Q1 Q0(二进制)。 • 根据以上的步骤,晶振频率 =12MHz,定时时长500μs,则有: • ①-500µs /1µs=500 • ②-8192-500=7692 • ③-7692(十进制)=1111000001100(二进制), www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.4.2设计模式0的计数初始值 • ④-THx=11110000B=F0H,TLx=00001100B=0CH。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.5 ■ Timer的工作模式2 11.5.1模式2的特点 工作模式2下的Timer是一个具有自动重新载入功能的8位定时器或计数器,Timer寄存器只由TLx充当。模式2下的Timer还具有自动重新载入计数初始值的功能。在初始化Timer时,计数初始值同时装载到Timer寄存器THx和TLx中,当完成一次计数后Timer溢出之时,TLx会自动从THx中复制原来保存的计数初始值,而不需要再次用MOV指令向Timer寄存器载入计数初始值。这时只要把标志位TFx清0,Timer就可以再次启动重复计数过程了。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.5.1模式2的特点 比如,TLx和THx中都载入了计数初始值3FH,当Timer启动后,只有TLx中的计数值会随机器周期增加,直到Timer溢出后,标志位TFx=1,THx中的计数初始值被自动载入TLx中。这样在新一轮的计数一开始,TLx中已经有了初始值3FH。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.5.2模式2的设置 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.5.3设计模式2的计数初始值 • 在模式2下Timer作定时器的计数初始值只有8位,同时载入TLx和THx中。 • ①-将定时时长t除以。 • ②-用256减去步骤①得到的数。 • ③-用科学计算器把步骤②中的得数转换成十六进制形式TT。 • ④-最后得计数初始值:THx=TLx=TT。 • 假设某单片机系统的晶振频率=12MHz,定时时长t=50µs,根据以上步骤可以设计计数初始值: • ①-50µs /1µs=50 • ②-256 – 50=206 • ③-206(十进制)=CEH(十六进制) • ④-THx=CE,TLx=CE www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.6 ■ Timer的工作模式3 11.6.1模式3的特点 模式3,Timer 0寄存器TL0和TH0变成两个独立的8位Timer寄存器。也就是说,Timer 0变成了两个独立的8位Timer,但不具备自动重新装载计数初始值的特性。以TL0为Timer寄存器的Timer使用TMOD寄存器和TCON寄存器中原来与Timer 0有关的控制位和标志位,设置的方法与前面相同。而以TH0为Timer寄存器的Timer使用原来Timer 1的溢出标志位TF1和启动/关闭控制位TR1,但不能用作计数器使用。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.6.2模式3的设置 利用Timer 0工作在模式3下衍生出来的两个分别以TH0和TL0为Timer寄存器的8位Timer作为延时子程序的基础,单片机P1.0口输出周期T=300µs、占空比为1/3的矩形波。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.6.2模式3的设置 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.6.2模式3的设置 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.6.3设计模式3的计数初始值 • 在模式3下两个独立的Timer寄存器只有8位,其计数初始值的计算方法相同。 • ①-将定时时长t除以。 • ②-用256减去步骤①得到的数。 • ③-用科学计算器把步骤②中的得数转换成十六进制形式TT。 • ④-最后得计数初始值:TH0或TL0=TT。 • 假设某单片机系统的晶振频率 =12MHz,定时时长t=150µs,根据以上步骤可以设计计数初始值: • ①-150µs /1µs=150 • ②-256 – 150=106 • ③-106(十进制)=6AH(十六进制) • ④-TH0或TL0=6AH www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.7 ■计数器 11.7.1计数器的应用 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.7.2计数器的设置 在Timer模式控制寄存器TMOD的C/Tx#位用于设置Timer用作定时器或计数器,当C/Tx#=1时,对应的Timer用作计数器。Timer 0和Timer 1可以被配置成两个独立的计数器,分别对输入单片机T0端(14管脚)和T1端(15管脚)的脉冲进行计数。Timer作计数器使用时,Timer寄存器THx和TLx的计数值记录的是输入单片机的脉冲的个数。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.7.2计数器的设置 例子:设计为每按下4次按钮开关S1, P0口上的8支发光二极管就会做BCD码加1的变化。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.7.2计数器的设置 “MOV TMOD,#00000110B”设置Timer 0作计数器,模式2。MOV指令向TH0、TL0装入计数初始值(256-4),这样当T0端输入4个脉冲后,TL0中的计数值就会溢出从而完成一次计数过程。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.7.2计数器的设置 启动计数器后,循环等待按下按钮开关4次,Timer 0溢出TH0中保存的计数初始值自动装入TL0中为新一轮计数准备,之后跳到“LOOP_2”段,两条CLR指令关闭计数器和清0标志位后,P0口的数据进行了BCD码的加1操作。之后又循环到“LOOP”段,重新启动计数器。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.7.4计数器的计数初始值设定 Timer作计数器时,计数初始值的设定比较简单。模式2中,因为TL0和TH0都载入相同的初始值,所以只要把8位Timer的最大计数值减去所要计数的数值即可(256-4)。模式3与此相似,只不过模式3中只有Timer 0可用。 如果在模式1,为16位的计数器,需要计数的数值为n(十进制),则计数初始值为65536-n(十进制)。转换成十六进制后高位字节装入THx,低位字节载入TLx即可。更方便的是,汇编语言中可以使用“HIGH”和“LOW”来完成这个转换与表示,假如计数值为35,则可使用以下两条指令来装入计数初始值: www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.7.4计数器的计数初始值设定 在模式0则为13位的计数器,如果需要计数的数值为n,则THx中将装入(8192-n)/32,而TLx中装入(8192-n)MOD32。假如计数值为35,则可以使用以下两条指令来装入计数初始值: www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.7.5各种模式下的计数器 制药厂装药丸生产线控制电路的一部分,用于检测漏斗颈通过药丸的红外传感器的输出信号进入单稳态多谐振荡器SN54121,经过SN54121的过滤后,计数脉冲送入单片机的T0端。假设每个药瓶装20粒药丸,程序11-9~程序11-12展示了Timer在4种模式下实现同一功能的软件设计,今后有需要时可直接参考这几个程序。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.7.6计数脉冲的要求 Timer作计数器时,实际上是在计算计数脉冲下降沿的个数,或者说在计数脉冲的电平由高跳低时Timer寄存器中的计数值增加1,假如原来TL0=33,计数脉冲来到后每次下降沿使TL0增加1。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.7.6计数脉冲的要求 单片机检测下降沿需要一定的时间。所以外部事件发生的最高频率fe应小于晶振频率/24。假设晶振频率=12MHz,则输入T0或T1口的计数脉冲的最高频率fe应小于500kHz。另外,确保脉冲在跳变之前至少被采样一次,则该电平至少要保持一个机器周期,假设使用12MHz的晶振,计数脉冲的电平信号在跳变之前至少应保持1µs。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第11章 时间的计算 11.7.7 TMOD寄存器的门控位 当Timer模式控制寄存器TMOD中GATEx位=0时,Timer的启动/关闭由软件控制,指令“SETB TRx”启动Timer x,而指令“CLR TRx”实施关闭。 如果当GATEx位=1时,并同时使TCON寄存器的TRx=1即可通过外部信号(通过单片机的/INTx端)对Timer x实施启动与关闭,当/INTx =1时启动而/INTx =0关闭。此所谓硬件启动/关闭Timer。 /INTx端代表的是 /INT0(12管脚,控制Timer 0)或/INT1(13管脚,控制Timer 1)。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X