单片机KEIL中关于C语言编的定时器的问题
你没仔细看芯片手册吧?单片机中TH0、TL0是定时器0的计数寄存器,TH1、TL1是定时器1的计数寄存器,TH2、TL2是定时器2的计数寄存器,而RCAP2H、RCAP2L是TH2、TL2的副本,叫重装载寄存器,当TH2、TL2计数溢出产生中断,RCAP2H、RCAP2L的内容自动拷贝到TH2、TL2,就不用人工装载了。
以上说的这些在KEIL C语言编译中代表的都是寄存器,应该看相关单片机芯片的数据手册。
单片机 RCAP2H,RCAP2L的意思?
TH2=0xFF; // 给定时器2赋 定时初值
TL2=0xFD; //波特率:115200 晶振=11.0592MHz
RCAP2H=0xFF; // 定时器2的重装载值, 定时器2溢出时(CP/RL2=0时)
RCAP2L=0xFD; //16位自动再装入值 // 会把 RCAP2H, RCAP2L 中的数据装入TH2,TL2
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
51单片机的3个定时器怎样使用?
51单片机只有T0,T1。52才有T2的。定时器设置方法:做定时用一般采用16位模式,也就是TMOD=0x11(10或01单独一个定时器的话),初值的计算是这样的:假设时间是X毫秒,晶振为YMhz,那么:THn=(65536-1000*X*Y/12)/256 TLn=(65536-1000*X*Y/12)%256之后就是TRn=1(开启定时器)ETn=1(开启定时器中断)EA=1
51单片机定时器的工作方式
亲,很高兴为您解答:51单片机定时器工作原理及用法TMOD : 控制定时器的工作方式。8个bit,高四位 bit 控制 T1,、低四位 bit 控制 T0。因为定时器有4种工作方式;TMOD = 0x00(工作方式0),TMOD = 0x01(工作方式0),TMOD = 0x02(工作方式2),TMOD = 0x03(工作方式3)。以上是控制低4位的,所以是对应着T0。TR0:T0定时器 使能开关,TR0 = 1,开始工作; =0停止工作。ET0:T0定时器中断开关,定时时间一到,就会跑去中断程序。ET0=1,中断使能,=0失能。EA : 中断总开关,你可以想象成电路的总电闸,EA=1,中断使能; =0,中断失能。TH0,TL0 : T0定时器计数寄存器,组成16位的计数,0x0000--0xFFFF(0--65535),只要TH0TL0=0xFFFF(65535),程序就会跑去中断程序,在中断程序中,我们要重新给TH0,TL0重新赋值的。假如说,我们定时50毫秒,TH0,TL0对应着什么值呢? 上面我们说了,TH0,TL0,组成的16位计数器计数范围是 0---65535 。50ms = 50 000us,我们只要让 TH0 TL0 从(65535 - 50000)开始计数,TH0,TL0就会不停的+1,直到TH0,TL0=65535,就是计数了50000次,时间就是过了50ms。我们只要在中断程序里面,重新赋值给TH0,TL0=(65535 - 50000),定时器就会不停得每50ms中断一次了。所以,TH0=(65535-50000)/256; TL0 = (65535-50000)%256 ;好吧,T0程序例子,定时20ms的程序 :TO 20ms 例子程序说完了TO,T1该怎么办? 我开始的时候说了,TO,T1是一对双胞胎。大家把上面T0例子程序:(TMOD = 0x01, ET0 ,TR0,TH0,TL0 ,interrput 1) 改为(TMOD = 0x10, ET1 ,TR1,TH1,TL1 ,interrput 3) 这样就变成了T1,定时器的程序。【摘要】
51单片机定时器的工作方式【提问】
亲,很高兴为您解答:51单片机定时器工作原理及用法TMOD : 控制定时器的工作方式。8个bit,高四位 bit 控制 T1,、低四位 bit 控制 T0。因为定时器有4种工作方式;TMOD = 0x00(工作方式0),TMOD = 0x01(工作方式0),TMOD = 0x02(工作方式2),TMOD = 0x03(工作方式3)。以上是控制低4位的,所以是对应着T0。TR0:T0定时器 使能开关,TR0 = 1,开始工作; =0停止工作。ET0:T0定时器中断开关,定时时间一到,就会跑去中断程序。ET0=1,中断使能,=0失能。EA : 中断总开关,你可以想象成电路的总电闸,EA=1,中断使能; =0,中断失能。TH0,TL0 : T0定时器计数寄存器,组成16位的计数,0x0000--0xFFFF(0--65535),只要TH0TL0=0xFFFF(65535),程序就会跑去中断程序,在中断程序中,我们要重新给TH0,TL0重新赋值的。假如说,我们定时50毫秒,TH0,TL0对应着什么值呢? 上面我们说了,TH0,TL0,组成的16位计数器计数范围是 0---65535 。50ms = 50 000us,我们只要让 TH0 TL0 从(65535 - 50000)开始计数,TH0,TL0就会不停的+1,直到TH0,TL0=65535,就是计数了50000次,时间就是过了50ms。我们只要在中断程序里面,重新赋值给TH0,TL0=(65535 - 50000),定时器就会不停得每50ms中断一次了。所以,TH0=(65535-50000)/256; TL0 = (65535-50000)%256 ;好吧,T0程序例子,定时20ms的程序 :TO 20ms 例子程序说完了TO,T1该怎么办? 我开始的时候说了,TO,T1是一对双胞胎。大家把上面T0例子程序:(TMOD = 0x01, ET0 ,TR0,TH0,TL0 ,interrput 1) 改为(TMOD = 0x10, ET1 ,TR1,TH1,TL1 ,interrput 3) 这样就变成了T1,定时器的程序。【回答】