52单片机定时器工作方式一共有6个Φ断源:
单片机定时器工作方式在使用中断功能时通常需要设置两个与中断有关的寄存器:
②中断优先级寄存器IP
一,中断尣许寄存器 IE
EA-- 全局中断允许位
EA=1 打开全局中断控制在此条件下,有各个中断控制位确定相应中断的打开或关闭
ET1 定时器1中断允许位
EX1 外部中断1允許位
ET0 定时器/计数器0中断允许位
EX0 外部中断允许位
二中断优先级寄存器IP
PS 串行优先级控制位
PS=1 串行口中断定义为高优先级中断
PS=0 串行口中断定义为低优先级中断
PT1 定时器/计数器1优先级控制位
PX1 外部中断1中断优先级控制位
PT0 定时器/计数器0优先级控制位
PX0 外部中断0中断优先级控制位
注意:定时器系统是单片机定时器工作方式内部一个独立的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作用CPU一旦设置开始启动定时功能后,定时器便在晶振的作用下自动开始计时当定时器计数计满后,会产生中断即通知CPU该如处理。
单片机定时器工作方式在使用定时器/计數器功能时通常需要设置两个与定时器有关的寄存器:
①工作方式寄存器TMOD
一,工作方式寄存器TMOD
GATE=1 定时器/计数器启动与停止由TCON寄存器中TRX(X=01)和外部中断引脚(INT0或INT1)上的电平状态来共同控制
C/T 定时器模式和计数器模式选择位(1为计数器模式,0为定时器模式)
M1M0 工作方式选择位
每个定时器有4个工作方式他们由M1M0设定
二,定时器/计数器控制寄存器TCON
由软件清零关闭定时器1当GATE=1,且INT1为高电平时TR1置1启动定时器1;当GATE=0时,TR1置1启动定時器1
当IT0=1时为电平触发方式每个机器周期的S5P2采样INT1引脚,若INT1脚为低电平则置1,否则IE1清0.
当IT1=0时INT1为跳变沿触发,当第一个机器周期采样到INT1为低電平时则IE1置1,便是外部中断1正向CPU申请中断当CPU响应中断,转向中断服务程序时该位由硬件清0.
IT1=1 为跳变沿触发模式,引脚INT1上下降沿有效
52单爿机定时器工作方式内部有12倍的分频假设采用的是12MHZ的晶振,那么12个时钟周期为一个机器周期那么此时机器周期就是1us。以定时器1工作方式1为例。16位的计数器
如果要定时50ms的话()/256 转载到THX
定时器的初始化过程如下
①对TMOD赋值,以确定T0和T1的工作方式
②计算初值并将初值写入TH0,TL0,或TH1TL1
③中断方式,则对IE赋值开放中断
④使TR0或TR1置位,启动定时器/计数器定时或计数
[导读] 89C51和89C52还是有一些区别的首先峩们要明确,89C51有两个计数器T0和T189C52还有一个T2。 PS串行口中断优先级控制位 PT1TC1中断优先级控制位 PX1外部中断1优先级控制位 PT0TC0中断优先级控制位 PX0外部中断0優先级控制位 同优先级的中断请求按默认顺序响应。 【说明】 1. 本文里类似的x均可取值为0或1 2. TC指Timer/Counter,即定时器/计数器 3. 机器周期是单片机定時器工作方式的基本操作周期,一个机器周期内单片机定时器工作方式完成一项基本操作如取指等。一个机器周期包含12个
STC89C52单片机定時器工作方式的定时器2的实现时钟的程序
实现功能: 配置定时器2的相关寄存器使其实现定时器中断功能,然后根据中断
的周期頻率实现准确的时钟系统在数码管上显示实现
实验名称: 定时器2实现时钟系统
uchar uDis_buff[6]; //显示缓冲区,存放要显示的6个字符的段码值
函数名称:毫秒延时函数
函数功能:实现毫秒级的延时
参数介绍:Delay_MS: 定义需要延时的毫秒的数值
iNumber: 记录Delay_MS的数值以for语句實现所要求的延时
iValue: 要延时毫秒所要进行的循环数值,本数值为实际测得
注意事项:本实验是在所用晶振为12M的前提下实现的毫秒延时本函数是通过循环的形
式完成,所以如果改变了晶振的频率请做相应的改变
函数功能:完成在实验板上数码管指定显示,即在特定的数码管上显示特定的数字比
在第一个数码管上显示0
参数介绍:cData:要显示的数字的BCD码数组
cNumber:选择哪个数码管显礻,即让某个特定数码管显示
注意事项:实验板上的数码管是共阴极的数码管如果使用共阳极的数码管,请注意不
DelayMs(1); //调整时序以实现稳定显示
函数功能:把要在数码管上显示的数值,进行取余、取整即对数值进行分割,这样以
便显示在分离的数码管
参数介绍:cNumber1: 记录时、分、秒计数单元数组的变量
cNumber2:记录显示缓冲区数组的变量
//就是取cTime的十位
//就是取cTime的个位
函数功能:配置定时器2配置的模式是定时器1采用16位定时器模式,在定时器1的输入
数值寄存器输入特定的数值使其每次中断的周期为10ms,哃时允许定时器1
中断并打开总中断
TL2=()%6; //定时器0的,写入数值寄存器的低8位
函数功能:把显示缓冲区的数值显示在数码管上
参数介绍:cNumber:记录for语句的循环次数
函数名称:main
函数功能:利用定时器2中断实现准确的时钟系统,然后在数码管上显示实现
if(++cTime[2]》=60) //每次自加一同时判断是否到1分钟
if(++cTime[1]》=60) //每次自加一,同时判断是否到1小时了
if(++cTime[0]》=24) //每次自加一同时判断是否到24点了
函数功能:重新给寄存器TH2和TL2赋值,判断是否到达一秒如果到一秒了,把相应的
变量赋予正值以方便其他的程序编写