STC89C52MCU--内外部资源1
来源:互联网 发布:nginx 视频点播服务器 编辑:程序博客网 时间:2024/06/06 20:04
中断概念
51单片机油五个中断源
1. INT0 -- 外部中断0,P3.2口 低电平或者下降沿触发中断
2. INT1 -- 外部中断1,P3.3口低电平或者下降沿触发中断
3.T0 -- 定时器/计数器中断,由T0 计数器计满回零引起
4.T1 -- 定时器/计数器中断,由T1 计数器计满回零引起
5.T2 -- 定时器/计数器中断,由T2 计数器计满回零引起 (STC89C52)
6. TI/RI -- 串口中断,串行端口完成一帧字符发送/接收后引起
IE(Interrupt Enable)中断允许寄存器
ET2 -- 定时器2中断允许位
EX0 -- 外部中断0中断允许位
ES-- 串行中断允许位
以上位为1时打开相应中断,设置为0时候关闭中断
IP(Interrupt Priority)中断优先寄存器
PT1 -- 定时器1优先级控制位
PX1 -- 外部中断1优先级控制位
以上位地址设置为1则为高优先级中断,否则为低优先级中断
51单片机定时器/计数器
51单片机中有两个16位可编程的定时器/计数器,由高低两个八位寄存器组成。TMOD寄存器是定时器/计数器的工作方式寄存器,TCON是控制寄存器,控制T0,T1的启动和停止以及设置溢出位。 加1计数器技术脉冲有两个来源,一个是由系统时钟振荡器的12分频后送来;另外一个个是T0或T1引脚引入的外部脉冲源,每来一个脉冲计数器加一次,当加到计数器全为1时,再输入一个脉冲就使计数器清零,且计数器的益处使TCON寄存器中的TF0或TF1置一,向CPU发出中断请求()计数器中断使能时),如果工作于定时模式,表示定时时间已到;如果工作在基数模式,则表示计数已满。
所以 计数值N * Tcy = 定时时间t; 设置为计数模式时,外部事件技术脉冲由T0和T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器T0、T1加1,更新的计数值在下一周期的S3P1期间装入计数器。由于检测一个从1~0的下降沿需要两个机器周期,因此要求被采样的电平至少维持一个机器周期。当晶振频率为12MHZ时候, 最高计数频率不能超过 1/2MHZ,即技术脉冲频率要大于2us.
计数器/定时器工作方式寄存器TMOD
GATE:门控制位,GATE = 0 定时器/计数器启动与停止仅受TCON寄存器中TRX(X=0,1)来控制,如果GATE=1, 则由TCON的TRX和外部中断引脚(INT0和INT1)上的电平状态共同决定。
C/T = 1,计数器模式;C/T = 0则为定时器模式
M1M0: 工作方式选择位,定时器/计数器的4种工作方式
定时器/计数器控制寄存器TCON
TF1/TF0: 硬件置位,并且申请中断,进入中断程序中由硬件置零,所以不需要在中断中进行操作;如果是软件查询方式的话,查询到一的话要软件清零。
TR1/TR0:定时器运行控制位,GATE = 0时,TR1/TR0置1启动定时器;如果GATE = 1,INT1/INT0置1且TR1/TR0置1,才可以启动定时器/计数器。软件清零关闭定时器。
IE1: 外部中断1请求标志位,该位置由硬件置位和清零。
IT1: 外部中断触发方式选择位置,0 = 下降沿触发方式; 1 = 低电平有效
计数器初始化: THX= (65536 - N)256 TLX= (65536 - N)% 256N= t / Tcy
中断服务程序的写法
void 函数名() interrupt 中断号 using 工作组
{
中断服务程序内容
}
中断服务程序不能有参数和返回值,using 工作组是指这个中断函数使用单片机内存中4组工作寄存器中的哪一组,C51编译器在编译程序时候回自动分配工作组。
#include<reg52.h>
#define uchar undigned char
#define uint unsigned int
sbit led1 = P1^0;
uchar num =0;
void main()
{
TMOD = 0x01;
TH0 = (65536 - 45872)/256;
TH0 = (65536 - 45872)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
whiel()
{
if(num ==20)
{
num =0;
led1 = ~led1;
}
}
}
void T0_time() interrupt 1
{
TH0 = (65536 - 45872)/256;
TH0 = (65536 - 45872)%256;
num++;
}
- STC89C52MCU--内外部资源1
- STC89C52MCU--内外部资源2
- STC89C52MCU--内外部资源3
- STC89C52MCU--基础知识1
- 内外部存储大小
- 内外部参数
- 内部类 外部类
- 创建内外部文件
- jquery内外部插入
- SpringMVC 内外部视图
- SpringMVC 内外部视图
- 内部类、外部类
- 外部学习资源备注
- Unity3D加载外部资源
- spring加载外部资源
- 加载外部资源
- Tomcat访问外部资源
- 外部资源编码设置
- RocketMQ原理解析-producer 6.消息在broker落地之事物消息
- openfalcon mail provider with starttls (fastmail)
- R-FCN/Faster-rcnn使用snapshot继续训练
- 使用JDK自带的keytool工具生成证书
- Android Studio导入新的项目卡住长期不动解决办法
- STC89C52MCU--内外部资源1
- input踩坑大集合,持续更新~
- Python常见函数总结
- MPC 环境搭建
- uboot How-to
- android.os.TransactionTooLargeException异常
- HTML5规范
- Python笔记(6)模块
- 国内 Android 个人与团队博客汇总