AT89C52单片机启动定时器0应设置如何设置工作方式

大家都在搜
8051单片机定时器计算器的门控信号G ATE设置为1时。定时器如何启动
dongxiaoas的答复:
&p&1、单片机与蜂鸣器连接图已附.&/p& &p&2、通常P1、P2、P3口都可以用来作为控制,P0口也可以,但因其内部无上拉电阻,所以外接时,应接一1K的上拉电阻,其他一样。有源蜂鸣器驱动电路设计,无须外加驱动电路。下载后,蜂鸣器一会一直处于鸣叫状态。也可以加个while(1)大循环,让它&滴、滴&不停地叫。你要多准确? 对应系统时间T=0.0904uS,5mS=36,可以用定时器0工作在16位定时模式。定时器时钟选系统时钟, 或者: //----------------------------------------------------------------------------- // Timer0_Poll1.c //----------------------------------------------------------------------------- // 此程序是一个使用定时器T0在查询模式的例子实现一个延时计数器精度1ms // // 假设在XTAL1和XTAL2之间接22.1184MHz晶体 // // 系统时钟频率存储在全局常量SYSCLK. // // 目标器件: C8051F02x // 链接工具: KEIL C51 6.03 / KEIL EVAL C51 // //----------------------------------------------------------------------------- // 包含文件 //----------------------------------------------------------------------------- #include
// SFR声明 //----------------------------------------------------------------------------- // C8051FF02x的16位SFR定义 //----------------------------------------------------------------------------- sfr16 DP = 0x82; // 数据指针 sfr16 TMR3RL = 0x92; // 定时器T3重装值 sfr16 TMR3 = 0x94; // 定时齐器T3计数器 sfr16 ADC0 = 0 // ADC0数据 sfr16 ADC0GT = 0xc4; // ADC0大于窗口 sfr16 ADC0LT = 0xc6; // ADC0小于窗口 sfr16 RCAP2 = 0 // 定时器T2捕捉/重装 sfr16 T2 = 0 // 定时器T2 sfr16 RCAP4 = 0xe4; // 定时器T4 捕捉/重装 sfr16 T4 = 0xf4; // 定时器T4 sfr16 DAC0 = 0xd2; // DAC0数据 sfr16 DAC1 = 0xd5; // DAC1数据 //----------------------------------------------------------------------------- // 全局常量 //----------------------------------------------------------------------------- #define SYSCLK
// 系统时钟频率Hz sbit LED = P1^6; // LED=&1& 意为ON sbit SW1 = P3^7; // SW1=&0& 意为按下开关 //----------------------------------------------------------------------------- // 函数原型 //----------------------------------------------------------------------------- void SYSCLK_Init (void); void PORT_Init (void); void Timer0_Delay (int ms); //----------------------------------------------------------------------------- // 全局变量 //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // 主程序 //----------------------------------------------------------------------------- void main (void) { WDTCN = 0 // 禁止看门狗定时器 WDTCN = 0 SYSCLK_Init (); // 初始化振荡器 PORT_Init (); // 初始化数据交叉开关和通用IO口 while (1) { Timer0_Delay (5); // 延时5ms LED = ~LED; //改变LED状态 } } //----------------------------------------------------------------------------- // 初始化子程序 //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // 系统时钟初始化 //----------------------------------------------------------------------------- // // 此程序初始化系统时钟使用11.0592MHz晶体作为时钟源 // void SYSCLK_Init (void) { // 延时计数器 OSCXCN = 0x67; // 启动外部振荡器晶振 for (i=0; i & 256; i++) ; // 等待振荡器启动 while (!(OSCXCN & 0x80)) ; // 等待振荡器稳定 OSCICN = 0x88; // 选择内部振荡器为时钟源并使能丢失时钟检测器 } //----------------------------------------------------------------------------- // IO口初始化 //----------------------------------------------------------------------------- // // 配置数据交叉开关和通用IO口 // void PORT_Init (void) { XBR0 = 0x00; XBR1 = 0x00; XBR2 = 0x40; // 使能数据交叉开关和弱上拉 P1MDOUT |= 0x40; // 使能P1.6(LED)为推挽输出 } //----------------------------------------------------------------------------- // Timer0_Delay //----------------------------------------------------------------------------- // // 配置定时器T0延时. // void Timer0_Delay (int ms) { // 毫秒计数器 TCON &= ~0x30; // 停止定时器T0并清除溢出标志 TMOD &= ~0x0f; // 配置定时器T0为16位模式 TMOD |= 0x01; CKCON |= 0x08; // 定时器T0计数系统时钟 for (i = 0; i & i++) { // 数毫秒 TR0 = 0; // 停定时器T0 TH0 = (-SYSCLK/1000) && 8; // 设置定时器T0 1ms溢出 TL0 = -SYSCLK/1000; TR0 = 1; // 启动定时器T0 while (TF0 == 0); // 等待溢出 TF0 = 0; // 清除溢出标志 } }。&/p&如何设置89C52单片机定时器0_百度知道
如何设置89C52单片机定时器0
EA=1;//总中断允许 ET1=1;//定时器1允许 TMOD=0x10;//选择工作方式 TH1=()/256;//定时器装初值 TL1=()%256; TR1=1;//定时器打开这是定时器1的设置方法 那么定时器0该怎么设置,以及定时器的函数
我有更好的答案
只要设定如下程序即可EA=1;
//总中断允许 ET0=1;
//定时器0允许 TMOD=0x01;
//T0工作在模式1 TH0=()/256;
//定时器装初值TL0=()%256; TR0=1;
//定时器打开89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统。
采纳率:65%
来自团队:
//总中断允许 ET0=1;
//定时器0允许 TMOD=0x01;
//T0工作在模式1 TH0=()/256;
//定时器装初值 TL0=()%256; TR0=1;
//定时器打开
本回答被网友采纳
为您推荐:
其他类似问题
您可能关注的内容
定时器的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。您当前的位置:&>&&>&&>&&>&
STC89C52定时器使用方法
定时器/计数器0 和定时器/计数器1 都可以在方式0、方式1、方式2 工作,而方式3 只有前者才能工作。
当TMOD 中M1、M0 都为0 时,T/C 工作在方式0。
方式0 为13 位的T/C,由TH 提供高8 位,TL 提供低5 位,注意TL 的高3 位是无效的,计数溢出值为2 的13 次方=8192,启动该计数器需要设置好计数初值。
当C/-- T该位为0 时,T/C 为定时器,振荡源12 分频的信号作为计数脉冲;当C/-- T该位为1 时,T/C为计数器,对外部脉冲输入端的T0 或T1 引脚进行脉冲计数。
计数脉冲能否加到计数器上,受启动信号的控制。当GATE=0 时,只要TR=1,则T/C 启动;当GATE=1时,启动信号受到TR 与INT 的双重控制。T/C 启动后立即加1 计数,当13 位计数满时,TH 向高位进位。此进位将中断溢出标志TF 置位即TF=1,产生中断请求,表示定时时间或计数次数到达。若T/C 开中断(ET=1)且CPU 开中断(EA=1),则当CPU 自动转向中断服务函数时,TF 自动清零,不需要人工软件清零。
当TMOD 中M1、M0 为0、1 时,T/C 工作在方式1。方式1 与方式0 基本相同,唯一不同的是方式0 是13 位计数方式,方式1 是16 位计数方式,TH 和TL 都同时提供8 位(方式0 时TL 只提供低5 位,高3 位无效),计数溢出值为2 的16 次方=65536。
当TMOD 中M1、M0 为1、0 时,T/C 工作在方式2。方式2 是8 位的可自动重装载的T/C,满计数值为2 的8 次方=256。在方式0 和方式1 中,当计数满后,若要进行下一次定时/计数,必须通过软件向TH 和TL 重新装载预置计数值。方式2 中TH 和TL 被当作两个8 位计数器。技术过程中,TH 寄存8 位初值并保持不变,由TL 进行8 位计数。计数溢出时,除产生溢出中断请求外,还自动将TH 中初值重装到TL,即重装载。除此之外,方式2 也同方式0。
方式3 只适合于T/C0。当T/C0 工作在方式3 时,TH0 和TL0 成为两个独立的计数器。这时,TL0可作定时器/计数器,占用T/C0 在TCON 和TMOD 寄存器中的控制位和标志位;而TH0 只能作定时器使用,占用T/C1 的资源TR1 和TF1。在这种情况下,T/C1 仍可用于方式0/1/2,当不能够使用中断方式。只有将T/C1 用作串行口的波特率方式器时,T/C0 才工作在方式3,以便增加一个定时器。
5. T/C2的工作方式
定时器/计数器2 包含一个16 位重载方式,T/C2 在计数溢出后,自动在瞬间重装载(像8 位自动重载方式2)。自动重载可由外部引脚T2EX 的负跳变开始,这样外部引脚用于产生和其他硬件计数器的同步信号。T/C2 可以看作看门狗或定时溢出的定时器。T/C2 还有捕获方式。把瞬时计数值传到另外的CPU 可读取的寄存器对(RCAP2H、RCAP2L)。
这样,在读的过程中,两个字节的计数值无波动的危险。对于快速变化的计数,比如计数值在读取高字节时是16FF时,到读取低字节时已变到1700,结果却得到1600。若16FF 瞬间捕获到另外的寄存器,则可以在CPU空闲的时候取到16 和FF。
#include &stc.h& //加载stc.h 头文件
unsigned char i=0; //声明变量i
void main(void) //主函数,程序是在这里运行的
TH0=()/256; //计数寄存器高8 位
TL0=()%6; //计数寄存器低8 位
TMOD=0x01; //工作方式为16 位定时器
ET0=0x01; //允许T/C0 中断
EA=1; // 全部中断允许
TR0=1; // 启动T/C0 运行
while(1) // 进入死循环
if(i&7)i=0; //若i&7,则i=0
void Timer0IRQ(void) interrupt 1 //中断服务函数
TH0=()/256; //计数寄存器高8 位重新载入
TL0=()%6; //计数寄存器低8 位重新载入
i++; //i 自加1
T/C0 的初始化在main 函数中进行,在while(1)死循环当中,只有对i 变量检测,对LED 灯进行操作主要放置在T/C0 的中断服务函数Timer0IRQ,即P2=1&很奇怪,main()函数里面基本对单片机的操作什么都没有,只有对变量i 的检测操作,几乎是空载运作,但是为什么流水灯还是能够运行呢?那么答案只能有一个,Timer0IRQ()中断服务函数能够脱离主函数独立运行。
大家很自然地想到为什么Timer0IRQ()函数独立于main()函数还能够运行,联系到在PC 机的C 语言的编程是根本不可能的事,因为所有的运行都必选在main()函数体中运行。只能告诉大家不同的平台自然有所不同,它们之间的不同必然会有各自的优点,还有例如AVR、编程同样是&主程序+中断服务函数&组合的架构,更何况是8051 系列单片机编程。当然我们学会了8051 系列单片机的编程,自然而然在AVR、ARM 或者更加多的单片机中的编程中得心应手,感觉就是以不变应万变。STC89C52单片机定时器2的使用
12:14:38来源: 51hei 关键字:&&&&
实现定时和计数的方法一般有:软件定时、专用电路和可编程定时器/计数器 三种方法。
软件定时:执行一个循环程序进行时间延迟。定时准确,不需要外加硬件电路,但会增加CPU开销。
专用硬件电路定时:可以实现请精确的定时和计数,但参数调节不方波。
可编程定时器/计数器:不占用CPU时间,能与CPU并行工作,实现精确的定时和计数,又可以通过变成设置其工作方式和其他参数,使用方便。
以下说明仅试用宏晶的!!
T2MOD,T2CON,TH2,TL2,RC2H,RC2L.
T2MOD:0C9H&(不可位寻址)
T2OE:定时器输出使能位
DECN:向上/向下计数使能位。定时器2可配制成向上/向下计数器。
& & & & & & & 0:向上计数(模式状态) & 1:向下计数(尽量不使用)
T2CON:0XC8H(可位寻址)
TF2:7 & & & & &上/下 溢出标志位,定时器2溢出时置位,必须有用软件清零!当RCLK或TCLK=1时,TF2将不会置位。
EXF2:6 & & & & 定时器2外部标志,当EXEN2=1且T2EX的负跳变产生捕获或重装时,EXF2置位。定时器2中断使能时,EXF2=1将使CPU从中断向量处执行定时器2中断子程序。EXF2位必须用软件清零。在递增/递减计数器模式(DCEN=1)中,EXF2位不会引起中断。
RCLK:5 & & & & 接收时钟标志。RCLK置位时,定时器2的溢出脉冲作为串口模式1和模式3的接收时钟。RCLK=0时,将定时器1的溢出脉冲作为串口模式1和模式3的接收时钟。&
TCLK:4 & & & & &发送时钟标志位。TCLK置位时,定时器2的溢出脉冲作为串口模式1和模式3的发送时钟。TCLK=0时,将定时器1的溢出脉冲作为串口模式1和模式3发送时钟。 & & & &&
EXEN2:3 & & & & &定时器2外部使能标志。当其置位且定时器2未作为串口时钟时,允许T2EX的负跳变产生捕获或重装。EXEN2=0时,T2EX的跳变对定时器2无效。
TR2:2 & & & & &定时器2 启动/停止控制位。置1时启动定时器。
C/T2:1 & & & & &定时器/计数器选择(定时器2)
& & & & & & & & & & 0 = 内部定时器(SYS_CLK/12或SYS_CLK/6)
& & & & & & & & & & 1 = 外部事件计数器(下降沿触发)
CP/RL2:0 & & 捕获/重装标志。EXEN2=1时,T2EX的负跳变产生捕获。EXEN2=0时,定时器2溢出或T2EX的负跳变都可以使定时器自动重装。RCLK=1或TCLK=1时,该位无效且定时器强制为溢出时自动重装。
定时器2有三种操作模式:捕获,自动重新装载(递增或递减计数)和波特率发生器,这三种模式由T2CON中的位进行选择:
定时器2的工作方式:
16位自动重装
波特率发生器
关键字:&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
网友正在学习IC视频
EEWORLD网友正在观看&&视频
EEWORLD网友正在观看&&视频
EEWORLD网友正在观看&&视频
EEWORLD网友正在观看&&视频
EEWORLD网友正在观看&&视频
相关关键词
热门关键词
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

我要回帖

更多关于 51单片机定时器工作方式2 的文章

 

随机推荐