单片机原理2:定时器和中断

定时器

定时器寄存器:

TMOD:方式寄存器,设定定时器0和定时器1的工作方式 C/T:0为定时,1为计数 TCON:控制寄存器,可位寻址 TCON:TF1|TR1|TF0|TR0|IE1|IT1|IE0|IT0 前面四位用于定时/计数,后面四位用于控制外部中断

两个模式:定时和计数模式

中断:

主程序因为随机事件发生,暂停现行程序的运行,转去执行另一程序,处理完毕之后又自动返回原来程序继续运行。

中断源和中断允许:

中断源 中断标志位 中断允许 优先控制
外部输入中断源0 IE0 中断允许EX0 PX0
外部输入中断源1 IE1 中断允许EX1 PX1
片内定时器0 TF0 中断允许ET0 PT0
片内定时器1 TF1 中断允许ET1 PT1
片内串行口发送或者接受中断源 TI,RI 中断允许ES PS

中断源1-4的中断标志位均可通过TCON查看
TF1 |TR1| TF0 |TR0 |IE1 |IT1| IE0| IT0
串口的中断标志位为TI,RI,通过SCON查看(SCON.0,SCON.1,该寄存器可以位寻址)
总的中断允许位为EA
中断允许位通过IE寄存器查看(该寄存器也可以位寻址)
中断优先控制由寄存器IP进行查看(可以位寻址)
中断优先级可以设定高优先级和低优先级,优先控制为1则是高优先级,优先控制为0则是低优先级
自然优先级:INT0->T0->INT1->T1->串口(重要)

中断处理过程

中断响应,中断处理和中断返回(还有中断请求撤除)

中断响应

满足中断响应条件之后即可处理。
过程:保护断点地址(当前PC地址)->把程序转向中断服务程序的入口地址(矢量地址),即中断服务子程序的入口地址->使用时,通常在这些入口地址处存放一条跳转指令,使程序跳转到用户安排的中断服务程序起始地址去
这些过程是由硬件自动完成的!

中断处理

从入口地址开始执行,直到返回指令RET1为止
中断服务子程序,一般包括两个部分内容,一是保护和恢复现场,二是处理中断源的请求
关中断->保护现场->开中断->中断服务->关中断->恢复现场->开中断->中断返回->断点地址由堆栈弹入PC(RETI,硬件自动完成)
保护现场和恢复现场的过程不允许中断,以免现场遭到破坏。
保护现场和恢复现场之后的开中断是为了允许有更高级中断打断此中断服务程序。

中断请求的撤除

定时器和外部中断均用硬件自动清除中断标志位,外部中断的低电平在响应中断之后会立即撤除。
但是串行口中断没有硬件撤除,需要用软件来清除相对应的标志。

posted @   zxkic  阅读(196)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示