定时器
定时器寄存器:
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,硬件自动完成)
保护现场和恢复现场的过程不允许中断,以免现场遭到破坏。
保护现场和恢复现场之后的开中断是为了允许有更高级中断打断此中断服务程序。
中断请求的撤除
定时器和外部中断均用硬件自动清除中断标志位,外部中断的低电平在响应中断之后会立即撤除。
但是串行口中断没有硬件撤除,需要用软件来清除相对应的标志。