51单片机 AT89C52 的中断/定时器/计时器 笔记
第二次学习 听课笔记
中断允许寄存器IE(地址为A8H,可位寻址)
EA:总中断允许控制位;
2外部中断+3内部定时器中断/计时器中断+1串口中断
EX0 EX1 外部中断;
ET0 ET1 ET2 内部 定时器中断 / 计时器中断;
ES 串口中断;
值为1,允许中断;值为0,禁止中断;
===========================================================
辅助中断控制寄存器XICON(地址为C0H,可位寻址)
这个老师貌似没有讲,可能暂时用不到,,,留位置以后再补
============================================================
中断/定时器/计时器 控制寄存器 TCON(地址为88H,可位寻址)
外部中断2+2 / 定时器+计时器 2+2
IT0 IT1 用来选择外部中断的触发方式;值为0 是低电平触发方式;值为1 是下降沿触发方式;
IE0 IE1外部中断 请求源的标志;这两个值都是硬件置1置0的,不需要软件去操作;
值为1时 外部中断向CPU请求中断;当CPU响应这个中断时,会由硬件自动置0;(边沿触发方式)
TR0 TR1 定时器的运行控制位;值为1时,定时器才能正常运行;
TF0 TF1 定时器溢出中断标志;定时器被允许计数并且产生溢出时,由硬件置1 向CPU请求中断;CPU响应中断时,有硬件置0(也可查询后,由软件置0);
============================================================
中断入口 和 默认的优先级
--------------------------------------------------------------------------------------------------------
自定义函数:外部中断1 初始化 (配置外部中断1,初始化函数需要在主函数中调用)
void int1Init() // int1 中断1自定义的简写, Init [ɪ'nɪt] 初始化
{
EA = 1;//总开关(中断允许控制器IE的总开关)
EX1 = 1;//外部中断1的小开关(中断允许控制器IE中外部中断1的小开关)
IT1 = 1;//选择下降沿触发方式(中断/定时器/计时器 控制寄存器 TCON中 外部中断1的触发方式)
}
============================================================
中断处理函数(interrupt [ˌɪntəˈrʌpt] 暂停 中断 阻断 打扰)不需要调用,可以放在主函数后面
void int1() interrupt 2 //中断处理函数,加关键字 interrupt 和 入口号
{
中断处理函数
}
============================================================
★ 使用定时器的步骤
启动定时器/计数器(通过TCON控制器)
设置定时器/计数器的工作模式(通过TMOD控制器)
查询定时器/计数器是否溢出(读TCON内TF位的值,溢出时硬件将值置1向CPU请求中断)
---------------------------------------------------------------------------------------------------------
定时器/计数器工作模式寄存器TMOD(不可位寻址,赋值用十六进制例如 TMOD = 0X10;)
GATE 默认0,一般不修改;值为1的时候 需要满足两个条件才能启用定时器
C/T 定时器和计数器 的选择位,值为0用作定时器(从内部系统时钟输入);值为1用作计时器(从相关引脚输入);
M1 M0 定时器/计数器 模式选择(共有四种模式,常用的有两种)
0 1 (16位定时器/计数器,低八位TL0 高八位TH0 全部使用,65535溢出)
1 0 (8位自动重装载定时器,当溢出时自动将 高八位TH0的值自动装入 低八位TL0,255溢出)
---------------------------------------------------------------------------------------------------------
定时器0 初始化 函数
void timer0Init() //自定义函数名timer0 ,Init [ɪ'nɪt] 初始化(需要放到主函数中进行初始化,timer0Init();)
{
TR0 = 1; //启动定时器0
TMOD = 0X01; //定时器工作模式1,16位定时计数模式
TH0 = 0X4B; //高八位初值,定时50ms
TL0 = 0XFD; //低八位初值,定时50ms
}
----------------------------------------
计数器用法 需要改变TMOD相应的值即可;
定时器/计数器 可配合中断一起使用;
============================================================
============================================================
第一次学习 听课笔记:
外部中断源(2个):INT0和INT1 低电平或者下降沿引起中断;
触发方式由 特殊功能寄存器TCON的低4位控制;
内部中断源(3个):T0,T1 由相应储存器溢出后引起中断;
TI/RI 串行中断,完成一帧字符发送/接收后引起中断;
这三个内部中断源的控制位分别所存在特殊功能寄存器TCON和SCON中;
=======================================
IE和XICON中断允许寄存器(可位寻址)
EA:总中断允许控制位;
ET2定时/计数器,值为1是允许,值为0是禁止;
TE1定时/计数器,值为1是允许,值为0是禁止;
ET0定时/计数器,值为1是允许,值为0是禁止;
EX1外部中断1 中断允许位;
EX0外部中断0 中断允许位;
ES 串行口1之 中断允许位;
=======================================
定时器/计数器0/1控制寄存器 TCON
TF1 计数器1定时溢出标志位,数据溢出后值为1,
TF0 计数器0
TR1 定时器1,定时器的运行控制位,为1时 允许开始计数,为0时禁止计数;
TR0 定时器0,
IE1 由硬件自动赋值,当值为1时 外部中断想PCU请求中断,当CPU相应该中断时 由硬件清0;
IE0同上;
IT1中断源类型选择。值为0 P3.3引脚上的低电平信号可触发中断;值为1,下降沿可触发;
IT0同上;
==========================================
中断优先级和入口
由高到低分别是
外部中断0:中断入口0
TO溢出中断:中断入口1
T1溢出中断:中断入口2
TI溢出中断:中断入口3
串行口中断:中断入口4
========================================
中断处理函数
void int1() interrupt 2
{
}
========================================
寄存器 TMOD(不可位寻址)
TMOD.3 GATE 控制位,默认为0:TR0为0时 打开定时/计数器;
TMOD.2 C/T 值为0的时候 用作定时器(从内部系统时钟输入),值为1的时候 用作计数器(从T0/P3.4脚输入);
TMOD.1 TMOD.0
四种模式中 常用到的是 0.1 (16位计时器,TL0和TH0全开)和1.0(8位重装模式)
其他两种模式不常用
51单片机 AT89C52 的中断/定时器/计时器 笔记相关推荐
- 10 51单片机汇编:让定时器产生中断(使用Keil模拟器)[系列教程之10]
10 51单片机汇编:让定时器产生中断(使用Keil模拟器)[系列教程之10] 该系列主仓库地址:https://gitee.com/langcai1943/8051-from-boot-to-app ...
- 51单片机 (九)定时器
什么是定时器? 定时器是单片机的重要功能模块之一,在检测.控制领域有广泛应用.定时器常用作定时时钟,以实现定时检测,定时响应.定时控制,并且可以产生ms宽的脉冲信号,驱动步进电机.定时和计数的最终功能 ...
- 【51单片机】外部中断
51的 外部中断 与 定时器(内部中断) 有一个共同特点,那就是与主程序是并行工作的,就是主程序在运行的时候,中断也在等待触发条件,当中断被触发的时候会暂停主程序转而执行中断服务程序,只有中断服务程序 ...
- 51单片机DS18B20与中断冲突解决方式
51单片机DS18B20与中断冲突解决方式 应用场所 在使用51单片机DS18B20的过程中,总会遇到中断(这里的中断主要是指定时器中断和串口中断)与其时序产生冲突,从而导致读取不稳定的情况发生. 问 ...
- 51单片机:有趣的定时器实验
51单片机:有趣的定时器实验 本以为考完试搞完课设就没啥单片机啥事了,结果莫名的来了软件工程软件基础训练,训练Proteus和Keil软件.我嘞天,之前天天用好不?这课程安排的emmmmm,我还要其他 ...
- 51单片机之外部中断拙见
外部中断需要注意的点 1. 外部中断其实是包含在中断系统中的,STC89Cx系列单片机提供4个外部中断:外部中断0(INT0),外部中断1(INT1),外部中断2(INT2),外部中断3(INT3) ...
- 【Proteus仿真】51单片机+555可调定时器电路
[Proteus仿真]51单片机+555可调定时器电路 Proteus仿真 程序代码 #include <reg52.h> #define uint unsigned int #defin ...
- 51单片机:外部中断实现流水灯
51单片机:外部中断实现流水灯 作业要求: 按照给定的实验板电路图编程实现外部中断控制流水灯,初始上电时,实验板右下侧的流水灯区域只有最右侧LED灯亮,其他灯全都熄灭,每按下一次按键,流水灯从右向左流 ...
- 51单片机电路原理图_10个定时器精选电路方案带你学习时钟脉冲的工作方式
可编程控制器中的定时器是根据时钟脉冲累积计时的,时钟脉冲有 1ms.10ms.100ms等不同规格.(定时器的工作过程实际上是对时钟脉冲计数)因工作需要,定时器除了占有自己编号的存储器位外,还占有一个 ...
最新文章
- c#中总是提示“在代码运行时或者在禁用“只要一个进程中断,就中断所有进程”选项时,不允许进行更改。...
- 【设计】H5移动端页面设计心得分享(附案例解析)
- 使用Spring 3 MVC处理表单
- 常用Java API 熟悉 方法 从记不得到忘不掉 java1.8.61为例
- 再学 GDI+[63]: 路径画刷(3) - SetFocusScales、GetFocusScales
- JAVA输入输出IO流→File、RandomAccessFilse、字节流InputSream与OutputStream、字符流Reader与Writer、对象序列化Serializable
- LeetCode刷题目录
- Note_Fast Image Processing with Fully-Convolutional Networks
- 移远EC20 4G模块拨号相关
- 项目管理:系统需求分析模板
- 主成分分析结果成分不显著_spss主成分分析结果解读
- Winclone快速安装苹果电脑双系统教程
- oracle自动化巡检报告
- 解析淘口令获取商品id,包含有效时间
- 博尔德大学计算机专业本科,2020美国大学计算机专业本科排名
- 冒志鸿:没有对比就没有伤害,原来中国的区块链这么……
- 比较员工的年龄大小(继承、异类集合、static)
- return true
- CSP认证:棋局评估
- 个人永久性免费-Excel催化剂功能第96波-地图数据挖宝之全国天气查询(区域最细可到区县,最长预报4天)...
热门文章
- java 重写paint_java – JLabel:重写paintComponent()之后.如何...
- 一个 70 后运维老兵的 Elastic 认证工程师之路
- 强大合作伙伴生态系统助力 Denodo 在大中华区不断发展壮大
- NiiOS-iOS复习及在学习进度更新
- 《java从入门到放弃》_《Java从入门到放弃》JavaSE入门篇:JDBC(入门版)
- 深度linux系统任务栏毛玻璃,操作系统中常见的「毛玻璃」效果是怎么设计出来的?...
- 二分法查找Unicode To GB2312转码表
- 2022年春招 360笔试 第二题 翻转棋子
- 洛谷-P1024-一元三次方程求解-普及-暴力/盛金公式/分治
- open FIFO for write returns “No such device or address”