一、定时器/ 计数器 1. 定时器/ 计数器结构 2. 寄存器 TCON : 定时器/ 计数启动和停止 TCON 的高 4 位控制定时器/ 计数器的启动和中断申请,低 4 位与外部中断有关。位序 8F 8E 8D 8C 8B 8A 89 88 位符号 TF1 TR1 TF0 TR0 TF1/TF0 :定时器/ 计数器 T1和 T0 的益处标志位,定时器/ 计数器有溢出时, 会将 TF1 或 TF0 位置“1”,表示定时器/ 计数器有中断请求。 TR1 或 TR0 : 定时器/ 计数器 T1和 T0 的启动/ 停止位。 TR1 或 TR0 设置为“1”定时器/ 计数器 T1和 T0 的启动,若设置为“0”,相应的定时器/ 计数器就停止工作。 3. 寄存器 TMOD :设置定时器/ 计数工作方式(用于计数或定时)。 TMOD :定时器/ 计数器工作方式工作方式 T1 T0 位序 B8 B7 B6 B5 B4 B3 B2 B1 位符号 GATE C/T M1 M0 GATE C/T M1 M0 TMOD 寄存器中高 4 位控制 T1,低4 位控制 T0。他们对定时器/ 计数器工作 T0、T1 的控制功能是一样。(下面以低 4 位控制定时器/ 计数器 T0 为例,说明各位的具体控制功能) GATE :门控位,控制定时器/ 计数器的启动模式。 GATE=0 时,只要用软件使 TCON 中的 TR0 置“1”,就可以启动定时器/ 计数器工作。 GATE=1 时,将 TR0 置“1”外, 还需要外部中断引脚 INT0 也为高电平, 才能启动定时器/ 计数器工作。 C/T :定时器/ 计数器模式选择位芯片型号 8051 计数器/ 定时器 2 个寄存器组成备注 T0 TH0+TL0 2 132 162 8 T1 TH1+TL1 C/T=0 时, 定时器/ 计数器被设置为定时器工作方式, C/T=1 时, 定时器/ 计数器被设置为计数器工作方式。 M0、 M1 :定时器/ 计数器工作方式设置位。 M1 M0 工作方式功能说明 000 13 位定时器, TH0 的8 位和 TL0 的低 5 位,最大计数值 2 13 =8192 011 16 位定时器, TH0 的8 位和 TL0 的低 8 位,最大计数值 2 16 =65535 102 带自动重装功能的 8 位计数器,最大计数 2 8 =256 113 T0 分成两个独立的 8 位计数器, T1 在方式 3 时停止工作备注: T0、 T1 工作于定时或者计数时都不占 CPU 工作时间。 4. 定时器/ 计数器的初始值计算 T1和 T0 都是增量计数器, 因此不能直接将要计数的值作为初值放入寄存器中,而是将计数的最大值减去实际要计数的值的差存入寄存器中, 定时器/ 计数器初值计算公式: 定时器/ 计数器初值=2 n-计数值(n 为工作方式决定的计数器位数,2 13、2 16、2 8) 例:当 T0 工作于方式 0时( T0为 13 位定时器), 最大计数值为 2 13 =8192 , 若要计数 100 0 次,初值为 8192-1000=7192 。如果单片机工作晶振为 ,则计数 1 次需要时间( 12 分频后的 1 个脉冲周期), T=12 ÷ = 。所以计数 1000 次实际上就相当于计时 × 1000=1085us 。( 定时器/ 计数器初值的计算是一样的) 5. 定时器/ 计数器应用举例 用定时器 T0 查询方式控制 P2口8位 LED 灯闪烁使用定时器 T0 的查询方式 TF0 来控制 P2口8位 LED 闪烁,T0 工作于方式 1,LED 灯闪烁周期 100ms, 即亮 50 ms ,熄灭 50 ms0。 定时器 T0 工作方式的设置用指令对 T0 的工作方式进行设置: TMOD=0X01 ; //即 TMOD=0000 0001B, 低4位 GATE=0 , C/T=0 , M1M0=01 上述设置中,低 4位 C/T=0 ,使 T0 工作于计时方式。 GATE=0 ,使 TR0=1 时即可启动 T0 开始工作。 M1M0=01 ,使 T0 工作于方式 1。 定时器初值的设定单片机晶振为 , 所以经 12 分频后送到 T0 的脉冲频率是 f= MHz ,周期 T=1/f=12/= us 。即每个脉冲计时 us ,要计时 50 ms(即 50000 us) ,需要计的脉冲数为 50000/=46038( 次) 。则
51单片机C语言学习笔记 来自淘豆网www.taodocs.com转载请标明出处.