一十三强人 发表于 2025-7-11 21:32:41

《8051U深度入门到32位51大型实战教学视频》第7集:定时器中断

本节课程的内容如下:

1、定时器的介绍
实例问题led三秒闪烁不起作用,没有使用中断功能,一个mcu是单核。
作用如下:用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作。
                  替代长时间的延时函数,提高程序运行效率和处理速率,从而打断主循环来进行其他事项处理。

2、定时器的应用
    还是引用上述的任务:LED灯三秒取反一次,期间任意时刻按下按钮,串口打印按键次数。
   24位定时器,
   使用ISP定时器来生成定时器,24M频,初始化设置TMOPS/AUXR/TMOD/TL0/TH0/TF0/TR0/ET0
   调用定时器
   定时器中断,在函数名后增加 interrupt关键字来表示此处为中断函数处理
   void Timer0_ISR(void) interrupt 1
   编译并下载,演示。
   AI8051U中关于keil的0xfd问题说明。
   初始化设置意义:TM0PS/TM1PS定时器0/1的8位预分频寄存器、
                           AUXR辅助寄存器1:0-对应12T模式,CPU12分频,1-对应1T模式,CPU不分频
                           TMOD:定时器0/1模式寄存器,T1_M1和T1_M0设置不一样;定时器0模式0,16位自动重装模式
                           
    定时频率 = 系统频率 / ((TM0PS + 1)* (65536 - 【TH0, TL0】) * T)
    定时时间 = ((TM0PS + 1)* (65536 - 【TH0, TL0】) * T)/ 系统频率
    T=1或12,超过65536后溢出重置标志位

3、函数的定义、声明、调用
    一般的函数包括: 返回值类型、函数名、入口参数、函数体、return 返回值,返回值可以不需要这时应为void

4、多任务的定时中断如何实现?

5、课后小练:电子功德箱。

本节课要掌握中断函数的使用,中断用于传感器输入的控制非常重要。

一十三强人 发表于 2025-7-16 18:51:10

到货,以咨纪念。

一十三强人 发表于 14 分钟前

《8051U深度入门到32位51大型实战教学视频》第8集:定时器周期性调度任务

本节课程的内容如下:

1、上一趟课程的BUG调整和优化
   例如: 大小写、中英文符号、如何查抄问题所在位置、串口更多设置
2、周期性任务介绍
   任务1:用1个定时器实现这个任务,led1实现03秒取反一次,led2实现0.6秒取反一次,led3每0.9秒取反一次。
               思路:通过一个变量计数,假设这个变量1ms自加一次,加到300即为300ms,加到600即为600ms, 计数达到后重新清0.
               中断函数中应调整为1ms的延时函数,定义变量来接受计数300/600/900以判别是否达到led1/led2/led3的反转条件。
               多个相同类型的变量可以用一个数组来替代。
   任务2:数组点亮led,实现流水灯。0-点亮,1-熄灭。数组长度需要把握好。流水灯移动时间。
            多行注释。数组中定义0,1时要注意
    任务3:按键按一下,LED通过数组移动一下。这里要考虑抖动。


3、创建c和h文件
   三步骤:创建文件并保存,添加到工程,添加引用路径。1个C配置一个H。
   

4、结构体的介绍

5、结构体数组的周期性任务调度。
led1 0.3秒闪一次,led2 0.6秒闪一次, led3 0.9秒闪一次,
任务要求有如下特点:1、有定时器1ms的计数目标,2都有一个设定的目标值。3、都需要有执行的功能。4、定时时间到了才能执行。
typedef struct{}

本节课要掌握结构体数组再周期性重复性任务重的使用,以减少代码的重复编写和一次写完可反复使用,结构体也经常用于数据代码编写。
页: 1 [2]
查看完整版本: 【新手开帖】从AI8051U开始——聊聊学习动机与未来可能性