i8051U--定时器周期性调度任务--打卡6
定时器周期性调度任务
定时器周期性调度任务:通过定时器中断触发任务切换,以实现多任务的并行处理。
定时器:能够对内部时钟信号或外部输入信号进行计数,数值达到设定要求时,向CPU发起中断请求,完成外部程序的运行。
定时方式由单片机晶振分频和定时模式及初值决定定时的时间。
中断系统
中断:单片机在执行main函数时,如果系统出现随机产生的突发事件,单片机会暂停main函数的程序转而去处理突发事件,处理完后再返回到刚才暂停的位置继续执行main函数中的程序。
中断系统组成:中断源、中断请求标志位、中断控制位和中断优先级控制位。
-
中断源
- 中断源是引起中断的原因和申请中断的来源。
- 中断源有外部中断、定时/计数器中断和串行口中断。
-
中断请求标志位
- 用于判断中断的来源。
- TCON是定时器/计数器控制寄存器
- SCON是串口中断控制寄存器
-
中断使能寄存器IE
- IE是单片机中断的使能控制寄存器。
- 中断使能开关分两级:第1级为总开关EA,用于所有中断的控制;第2级为分级开关,分别对单片机5个中断源进行控制。
-
中断优先级控制位IP
- 中断源默认的中断优先级别,从高到低分别为:外部中断0、定时器/计数器0、外部中断1、定时器/计数器
- 中断优先级可更改:1是高优先级中断,0是低优先级中断
中断服务函数
中断服务函数是指当中断源申请中断后,单片机中断main函数的程序转而去执行的函数。中断服务函数优于main函数。
void 函数名称(void) interrupt 中断编号 using 工作寄存器组编号
{
中断服务程序
}
中断编号:0--外部中断0,1--定时/计数器中断0,2--外部中断1,3--定时/计数器1,4--串口中断
中断服务函数注意事项:
- 中断服务函数优于main函数,不能直接被main函数调用,否则将导致编译失败。
- 中断服务函数没有返回值,应将中断服务函数定义为void类型。
- 中断服务函数参数函数,即中断服务函数不能有传参列表,否则将导致编译错误。
- 中断服务函数只识别中断编号,不识别中断服务函数名称。因此函数名称只要符合命名规则即可,但中断编号必须一一对应。
- 若中断服务函数中调用了其他函数,则被调用函数使用的寄存器编号必须与中断函数相同,也就是using 后面的数字必须一样。
- 中断服务函数使用浮点运算时,要保存浮点寄存器状态。