公司的网站建设费用怎么入账,代理上网,建造师报考条件,江苏省企业年报网上申报入口51单片机的定时器属于单片机的内部资源#xff0c;其电路的连接和运转均在单片机内部完成
作用#xff1a;
用于计时系统替代长时间Delay#xff0c;提高运行效率和速度任务切换
STC89C52定时器资源#xff1a;
定时器个数#xff1a;3个#xff08;T0,T1,T2#xf…51单片机的定时器属于单片机的内部资源其电路的连接和运转均在单片机内部完成
作用
用于计时系统替代长时间Delay提高运行效率和速度任务切换
STC89C52定时器资源
定时器个数3个T0,T1,T2T2是新增资源T0T1为老版本兼容
定时器的资源和单片机的型号是关联在一起的不同型号可能有不同定时器个数和操作方式
定时器根据时钟的输出信号每隔固定时间段计数单元的数值加一当计数单元数值增加到设定的值时计数单元会向中断系统发出中断申请使程序跳转到中断服务函数中执行
STC89C52的T0和T1均有四种工作模式
模式013位定时器/计数器模式116位定时器/计数器常用模式28位自动重装模式模式3两个8位计数器 计数单元时钟发出脉冲给计数单元每个脉冲加一计数单元一共2*816位最大65535超过最大值溢出此时标志位TF0发出中断请求
时钟有两个来源
SYSclk系统时钟即晶振周期12MHz此时做定时器T0 Pin外接时钟——此时做计数器
中断系统使CPU具有对外界紧急事件的实时处理能力高级别的中断优先执行多级中断称为中断嵌套中断请求的来源称为中断源
STC89C52中断资源
中断源个数8个外部中断0定时器0中断外部中断1定时器1中断串口中断外部中断2外部中断3中断优先级个数4个中断号 寄存器是连接软硬件的媒介在单片机中寄存器就是一段特殊的RAM存储器一方面寄存器可以存储和读取数据另一方面每一个寄存器背后都连接了一根导线控制着电路的连接方式寄存器相当于一个复杂机器的“操作按钮”
TCON控制中断 TMOD定时和计数功能 12MHz每隔一微秒加一计数单元0~65535通过赋初始值的方式做到每秒中断
0~65535
总共定时65535us
计数单元初始值为64535计时时间为1000us1ms
所以TH0高位TL0低位应组合
TH0 64535/256; // 取出64535的高八位赋给TH0
TL0 64535%256; // 取出64535的低八位赋给TL0
1.因为64535是十进制数要先转换为十六进制数所以除16
2.然后还要取高8位所以再除16算到一起就是除256.
3.取模同理void Timer0_Init(){TMOD 0x01; // 0000 0001 定时模式1// 这里TMOD可以使用与或式赋值法只操作特定位而不改变其他位// TMOD 0xf0;// TMOD | 0x01;TF0 0; // 标志位初始化防止产生中断TR0 1; // 运行控制位开始计数工作TH0 64535 / 256; // 给计数单元赋初值TL0 64535 % 256;ET0 1;// 溢出中断允许位EA 1; // 总中断允许控制位PT0 0; // 定时器0中断优先级控制位
}void Timer0_Rountine() interrupt 1{ // 中断号static unsigned int T0Count 0;TH0 64535 / 256; // 给计数单元赋初值保证每次移除后都是从64535开始重新计数TL0 64535 % 256;T0Count;if(T0Count 1000){ // 中断次数超过1000即经过1秒后T0Count 0;P2 ~P2;}
}一个函数头文件INTRINS.H
内部函数 描述
_crol_ 字符循环左移 溢出则从低位重新开始
_cror_ 字符循环右移
_irol_ 整数循环左移
_iror_ 整数循环右移
_lrol_ 长整数循环左移
_lror_ 长整数循环右移
_nop_ 空操作 8051 NOP 指令
_testbit_ 测试并清零位 8051 JBC 指令
_nop_ 空操作 8051 NOP 指令
_testbit_ 测试并清零位 8051 JBC 指令