51单片机守时器设置入门(STC89C52RC)
STC单片机守时器设置
STC单片机守时器的运用能够说十分简略,只需把握原理,有一点的C言语根底就行了。关键有以下几个:
1. 必定要知道英文缩写的原形,这样寄存器的姓名就不必记了。
了解是最好的伤心办法。好的教材必定会给出一切英文缩写的原形。
2.尽量用形像的办法伤心
比方TCON和TMOD两个寄存器各位上的功用,教程一般有个图表,你就在学习中不断回想那个图表的形像
TMOD:守时器/计数器形式操控寄存器(TIMER/COUNTER MODE CONTROL REGISTER)
守时器/计数器形式操控寄存器TMOD是一个逐位界说的8位寄存器,但只能运用字节寻址,其字节地址为89H。
其格局为:
其中低四位界说守时器/计数器C/T0,高四位界说守时器/计数器C/T1,各位的阐明:
GATE——门操控。
GATE=1时,由外部中止引脚INT0、INT1来发动守时器T0、T1。
当INT0引脚为高电平时TR0置位,发动守时器T0;
当INT1引脚为高电平时TR1置位,发动守时器T1。
GATE=0时,仅由TR0,TR1置位别离发动守时器T0、T1。
C/T——功用挑选位
C/T=0时为守时功用,C/T=1时为计数功用。
置位时挑选计数功用,清零时挑选守时功用。
M0、M1——办法挑选功用
咱们有2位,因此有4种作业办法:
M1M0 作业办法 计数器形式 TMOD(设置守时器形式)
0 0 办法0 13位计数器TMOD=0x00
0 1 办法1 16位计数器TMOD=0x01
1 0 办法2 主动重装8位计数器 TMOD=0x02
1 1 办法3 T0分为2个8位独立计数器,T1为无中止重装8位计数器 TMOD=0x03
单片机守时器0设置为作业办法1为TMOD=0x01
这儿咱们必定要知道,TMOD的T是TIMER/COUNTER的意思,MOD是MODE的意思。至于每位上的功用,你只需记住图表,并知道每个英文缩写的原型就能够了。
在程序中用到TMOD时,先当即回想图表,并依据缩写的单词原形理出每位的含义,假如含义不是很清楚,就查下手册,几回下来,TMOD的图表就已经在脑子里了。
8位 GATE位,自身是门的意思。
7位 C/TCounter/Timer
6位 M1Mode 1
5位 M0Mode 0
TCON: 守时器/计数器操控寄存器(TIMER/COUNTER CONTROL REGISTER)
TMOD分红2段,TCON操控愈加精密,分红四段,在本文中只需用到高四段。
TF0(TF1)——计数溢出标志位,当计数器计数溢出时,该方位1。
TR0(TR1)——守时器运转操控位
当TR0(TR1)=0 中止守时器/计数器作业
当TR0(TR1)=1 发动守时器/计数器作业
IE0(IE1)——外中止请求标志位
当CPU采样到P3.2(P3.3)呈现有用中止请求时,此位由硬件置1。在中止呼应完结后转向中止服务时,再由硬件主动清0。
IT0(IT1)——外中止请求信号办法操控位
当IT0(IT1)=1 脉冲办法(后沿负跳有用)
当IT0(IT1)=0 电平办法(低电平有用)此位由软件置1或清0。
TF0(TF1)——计数溢出标志位
当计数器发生计数溢出时,此位由硬件置1。当转向中止服务时,再有硬件主动清0。计数溢出的标志位的运用有两种状况:选用中止办法时,作中止请求标志位来运用;选用查询办法时,作查询状况位来运用。
留意伤心办法,了解单词原形,就绝对不会把TF和TR搞混。TF的F也便是溢出OverFlow的F。国外有个闻名的IT常识问答社区,网址就http://stackoverflow.com/
TR的R便是运转Run。默许是0不运转,当然要置1才运转。
STC单片机STC89C52RC守时器延时时刻的核算
延时时刻要依据晶振频率计算,不同板子或许有所不同。
时钟周期:
1/时钟源,在我现在这块板子上,晶振频率是11.0592M,也便是时钟周期是1/11059200秒
机器周期:
一般51单片机是12个时钟周期,我的板子也便是 12/11059200秒
单次守时最长时刻:
假如是16位的计数器,16位最大值是65535,共可计数65536次。根本的常数必定要记住,还要记住8位最大值是255,共可计数256次,还要记住8位上每位代表的数值。
12 * 65536/11059200 = 0.0711 s,也便是,71 ms内的守时能够单次守时就完结。假如守时时刻超越71 ms,就要循环了。
一次守时需求几回机器周期:
核算公式:守时秒数/机器周期
比方我要守时1秒, 1/(12/11059200)= 921600次,16位计数器最大可计数65536次,921600次早就益出了。咱们能够每次守时10 ms,循环100次就能够守时1秒了,1 s缩小100百倍便是10 ms, 也便是每次需求计数9216次。
的确计数器初始值:
守时10 ms时,假如计数器从0开端计数,咱们就不知道什么时候到了9216次。所以应该计数了9216次,16位计数器最多计数95536次,然后就溢出,一溢出TCON的TF位就会置1,咱们只需常常检测TF位就能够知道什么时候完结10ms的守时了。
核算公式:计数器初始值=最大计数次数 – 需求计数次数
假如守时10 ms,计数器的初始值便是65536 – 9216
核算计数器的高位和低位:
16位的计数器,也便是两个8位组成,8位的最大计数次数是256。所以:
计数器高位 = 初始值/256
计数器低位 = 初始值%256