卖钢材做哪个宣传网站,wordpress列表显示标签,新手学网站建设,建设银行管官方网站目录 1.定时器
2. STC89C52定时器资源
3.定时器框图
4. 定时器工作模式
5.中断系统
1#xff09;介绍
2#xff09;流程图#xff1a;编辑
3#xff09;STC89C52中断资源
4#xff09;定时器和中断系统
5#xff09;定时器的相关寄存器
6.按键控制LED流水灯模…目录 1.定时器
2. STC89C52定时器资源
3.定时器框图
4. 定时器工作模式
5.中断系统
1介绍
2流程图编辑
3STC89C52中断资源
4定时器和中断系统
5定时器的相关寄存器
6.按键控制LED流水灯模式 1.定时器 介绍51单片机的定时器属于单片机的内部资源其电路的连接和运转均在单片机内部完成 作用 1用于计时系统可实现软件计时或者使程序每隔一固定时间完成一项操作 2替代长时间的Delay提高CPU的运行效率和处理速度避免按键不灵敏 … 2. STC89C52定时器资源 定时器个数3个T0、T1、T2, T0 和 T1 与传统的51单片机兼容T2是此型号单片机增加的资源 注意定时器的资源和单片机的型号是关联在一起的不同的型号可能会有不同的定时器个数和操作方式但一般来说T0和T1的操作方式是所有51单片机所共有的 3.定时器框图 提供计数单元的时钟脉冲 时钟计数 产生中断执行定时任务 定时器在单片机内部就像一个小闹钟一样根据时钟的输出信号每隔“一秒”计数单元的数值就增加一当计数单元数值增加到“设定的闹钟提醒时间”时计数单元就会向中断系统发出中断申请产生“响铃提醒”使程序跳转到中断服务函数中执行 4. 定时器工作模式
STC89C52的T0和T1均有四种工作模式 模式013位定时器/计数器 模式116位定时器/计数器常用 模式28位自动重装模式 模式3两个8位计数器
工作模式1框图 1TH0 TL0 计数系统最多可以存65535
2TF0为标志位通过标志位向中断系统申请中断
3时钟提供脉冲一个脉冲使计数系统加 1 当计数系统到达65535后会溢出计数系统为 0 通过TF0产生中断
4/12或/6 为分频 如12MHZ/12 1 MHZ
SYSclk系统时钟即晶振周期本开发板上的晶振为12MHz system clock)
T0 Pin :单片机外部接口
当有外部引脚来提供时钟时定时器为计数器 5.中断系统
1介绍 2流程图
3STC89C52中断资源
中断源个数8个外部中断0、定时器0中断、外部中断1、定时器1中断、串口中断、定时器2中断、外部中断2、外部中断3
中断优先级个数4个
中断号
注意中断的资源和单片机的型号是关联在一起的不同的型号可能会有不同的中断资源例如中断源个数不同、中断优先级个数不同等等 4定时器和中断系统
为了方便理解这里使用的中断系统图是传统51单片机的图STC89C52的中断系统图可参考手册
从左下往右分别为 非门数据取反 或门有1 则为1 与门有0则为0 5定时器的相关寄存器 寄存器是连接软硬件的媒介在单片机中寄存器就是一段特殊的RAM存储器一方面寄存器可以存储和读取数据另一方面每一个寄存器背后都连接了一根导线控制着电路的连接方式寄存器相当于一个复杂机器的“操作按钮” 6.按键控制LED流水灯模式
#include REGX52.H
#includeTimer0.h //main.c
#includeKey.h
#includeINTRINS.Hunsigned char KeyNum,LEDMode;
void main()
{P20xfe;Timer0Init();while(1){KeyNumKey();if(KeyNum){if(KeyNum1){LEDMode;if(LEDMode2)LEDMode0;} }}
}
void Timer0_Routine() interrupt 1
{static unsigned int T0Count;TL0 0x18; TH0 0xFC; T0Count;if(T0Count500){T0Count0;if(LEDMode0)P2_crol_(P2,1);if(LEDMode1)P2_cror_(P2,1);}
}
#include REGX52.H
void Timer0Init(void) //Timer0.c
{TMOD 0xF0; TMOD | 0x01; TL0 0x18; TH0 0xFC; TF0 0; TR0 1;ET01;EA1;PT00;
}
#ifndef ___Timer0__ //防止重定义
#define ___Timer0__ //Timer0.hvoid Timer0Init(void); #endif
#include REGX52.H //Key.c
#includeDelay.hunsigned char Key()
{unsigned char KeyNumber 0;if(P3_10){Delay(20);while(P3_10);Delay(20);KeyNumber1;}if(P3_00){Delay(20);while(P3_00);Delay(20);KeyNumber2;}if(P3_20){Delay(20);while(P3_20);Delay(20);KeyNumber3;}if(P3_30){Delay(20);while(P3_30);Delay(20);KeyNumber4;}return KeyNumber;
}#ifndef ___Key__ //防止重定义
#define ___Key__ //Key.hunsigned char Key();#endif
#include REGX52.Hvoid Delay(unsigned int xms) //延时 xms ms{unsigned char i, j;
while(xms)
{i 2;j 239;do{while (--j);} while (--i);xms--;
}
}
#ifndef __Delay_H //防止重定义
#define __Delay_H //Delay.hvoid Delay(unsigned int xms); #endif
注意可位寻址可以对单独的位进行赋值(TCON)不可位寻址只能整体赋值(TMOD) 谢谢观看