单片机80c51中定时/计数器的工作方式中怎么计数范围怎么算的为什么这样算?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-14
单片机中 定时器/计数器 的计数初值是怎么计算得出的?(计数和定时计算方式是否不同?)--初学单片机

计数初值的计算:
定时或计数方式下计数初值如何确定:定时器选择不同的工作方式,不同的操作模式其计数值均不相同。若设最大计数值为M,各操作模式下的M值为:
模式0 : M=2^13 =8192
模式1: M=2^16=65536模式2:M=2^8=256模式3: M=256,定时器T0分成2个独立的8位计数器,所以THO、TLO 的M均为256。
因为MCS-51 的两个定时器均为加1计数器,当初值到最大值( 00H或0000H )时产生溢出,将TF位置1,可发出溢出中断,因此计数器初值X的计算式为: X=M- 计数值。
式中的M由操作模式确定,不同的操作模式计数器的长不相同,故M值也不相同。而式中的计数值与定时器的工作方式有关。1、计数工作方式时
计数工作方式时,计数脉冲由外部引入,是对外部冲进行计数,因此计数值根据要求确定。其计数初值: X=M- 计数值。
2、定时工作方式时
定时工作方式时,计数脉冲由内部供给,对机器周期进行计数,计数脉冲频率fcont=fosc*1/12、计数周期T=1/fcont=12/fosc定时工作方式的计数初值X等于:
X=M-计数值=M-t/T=M-(fosc*t)/12
式中:fosc为振荡器的振荡频率,t为要求定吋的时间。

扩展资料:
定时器工作方式的设定:
定时器有两种工作方式:定时和计数。由TMOD的D6位和D2位决定,其中D6位决定T1的工作方式,D2位决定T0的工作方式。值为0时工作在定时方式,值为1时工作在计数方式。并且有四种操作模式:
1、模式0:13位计数器,TLi只用低5位。
2、模式1:16位计数器。
3、模式2:8位自动重装计数器,THi的值在计数中不变, TLi 溢出时,THi中的值自动装入TLi中。
4、模式3:T0分成2个独立的8位计数器,T1停止计数。

拆开计数,比如初值100
一个FOR语句,初值10让他计10次
祝你成功

定时器有一个16位的计数寄存器,这个16位被分成两个8位的寄存器,分别是THx和TLx,有4种工作方式:
方式0:用了THx的8位,用了TLx中的低5位,这样,加起来一共是13位,所以,最大计数范围就是0-8191,一共8192个时钟
方式1:用了THx的8位,用了TLx中的全部8位,这样,加起来一共是16位,所以,最大计数范围就是0-65535,一共65536个时钟,也是定时器用的最大的范围
方式2:只用了THx用来计数,当THx的计数用完了之后,硬件自动把TLx赋值给THx,所以方式2相当于只是8位,所以最大计数到 0-255,共256个
方式3:用于串口波特率的计算,不讨论.
方式0是为了向上兼容老式单片机,一般很少用,现在基本上用方式1最多.

首先13位是从全0到全1变化的二进制数如果转化为十进制数就是0~255,是256个数也是256个变化,每一位可以是0也可以是1就是2^13=256种变化,注意该变化是数学意义上的默认从1开始的所以是256种变化。而实际单片机中数值却是从0开始的。但是从0~255就是数学意义上的256种变化只不过表示的方法不一样而已,区别开来就可以了

一个机器周期计数一次,比如采用12m晶振,一个机器周期1us,方式1启用了13位,他总共能计2的13次方个数,此时经过了8192us,然后溢出。

方式0是13位定时器
方式1是16位定时器
方式2是8位定时器
你说的例子 :2的13次方是8192

方式0是13位定时器
方式1是16位定时器
方式2是8位定时器
方式3另类。
上面的几种定时方式,13位是为了兼容早期的48系列单片机设定的,目前无用。16位定时65536
8位定时256

  • 单片机80c51中定时/计数器的工作方式中怎么计数范围怎么算的为什么这样...
    答:方式1:用了THx的8位,用了TLx中的全部8位,这样,加起来一共是16位,所以,最大计数范围就是0-65535,一共65536个时钟,也是定时器用的最大的范围 方式2:只用了THx用来计数,当THx的计数用完了之后,硬件自动把TLx赋值给THx,所以方式2相当于只是8位,所以最大计数到 0-255,共256个 方式3:用于串口波特...
  • 80C51单片机内部有几个定时/计数器?它们由哪些功能寄存器组成?怎样实现...
    答:1.中断启用寄存器IE 2.中断优先级寄存器IP 3.定时器/计数器模式寄存器TMOD 4.定时器/计数器控制寄存器TCON 5.计数寄存器THx TLx:先进行定时/计数中断相关寄存器的设定即1-4的赋值,再对计数寄存器即5进行赋值,接着开启中断TRx=1; 具体赋值见相关资料寄存器结构,不清楚的地方可以探讨一下。
  • 单片机80c51中定时/计数器的工作方式中怎么计数范围怎么算的为什么这样...
    答:定时器有一个16位的计数寄存器,这个16位被分成两个8位的寄存器,分别是THx和TLx,有4种工作方式:方式0:用了THx的8位,用了TLx中的低5位,这样,加起来一共是13位,所以,最大计数范围就是0-8191,一共8192个时钟方式1:用了THx的8位,用了TLx中的全部8位,这样,加起来一共是16位,所以,最大计数范围就是0-6553...
  • 单片机:80C51的中断系统及定时/计数器
    答:org 0000h ljmp reset org 000bh ljmp int_time ORG 0030H RESET: mov sp,#07h mov r0,#7fh clear0: mov @r0,a djnz r0,clear0 MOV TMOD,#01H;设定定时器0 MOV TL0,#0cH;设定定时初值65536-500 MOV TH0,#0FeH setb ea setb ET0 setb...
  • 80C51单片机,振荡频率是12MHZ,用定时/计数器T1实现从P1.1产生周期是2s...
    答:主程序里设置:uchar a=0;TMOD=0x10;ET1=1;EA=1;TH1=(65536-50000)/256;//定时50ms 20次是1STL1=(65536-50000)%256;TR1=1;中断程序:void timer1( ) interrupt 3{ TH1=(65536-50000)/256;//定时50ms TL1=(65536-50000)%256; a++; if(a==20} { a=0; P1.1=~P1.1;...
  • 单片机一道课后题:80c51定时器有哪几种工作方式?有何区别?
    答:方式0的最大计数值为8192.方式1是最大计数位数16位的计数器,最大计数值为65536.与方式0只有计数容量的区别。方式2是自动重装初值的8位计数器,原理为TH的8位用于存放定时器的初值或计数初值,TL中的8位用于加1计数,当TL的加1计数溢出后,硬件使TF自动置1,同时自动将TH中存放的定时初值或计数...
  • 设80C51单片机晶振频率为12MHZ,定时器作计数器使用时,其最高的输入计数...
    答:最高的输入技术频率应为500khz。计算方法:确认一次记数,即一次负跳变,需要2个机器周期,即24个时钟周期或震荡周期,则最高记数频率为12M/24=500khz。或者按照时间计算,晶振频率12M的2个机器周期即2us,那么频率就是1/2*10^6=500khz,结果相同。
  • 80C51单片机定时器 C/T 我想单独控制,怎么弄,
    答:不过定时器一般在初始化时设置,程序运行中不改变其工作性质,还是应该一次设置2个定时器,如 TMOD=0X11或TMOD=0X51;即使分开设置也不应多次改变其工作状态 如你对定时器1操作 先让 TMOD|=0X50;定时器1工作在16位计数器状态 然后 TMOD|=0X10;定时器1工作在16位定时器状态 本来应该是后...
  • 80c51单片机定时方式时是对什么进行计数?计数方式时是对什么进行计数...
    答:定时和计数都是能过对的机器周期的累加,定时是给定时间,由程序决定外部操作或程序的跳转,如果时间到就产生中断,计数是对外部事件进行计数的,由外部条件决定计数的开始和结束
  • 80C51串行口使用定时器1作波特率发生器,应定义为工作方式2,即( )方式...
    答:80C51串行口使用定时器1作波特率发生器,应定义为工作方式2,即( 自动重新装载 )方式。假定晶振频率为12MHZ,则可设定的波特率范围为 (6000 ) 到 ( 4800 ) 。理由如下:波特率=((2的SMOD1次方)/32)x(F/(12x(256-TH1))其中:SMOD1 是控制寄存器PCON的第7位(值为0或1),F是...