- 打卡等级:偶尔看看II
- 打卡总天数:26
- 最近打卡:2024-11-18 21:31:21
注册会员
- 积分
- 157
|
发表于 2024-8-20 00:28:56
|
显示全部楼层
本帖最后由 不会书 于 2024-8-20 17:50 编辑
之前有点事情耽搁了,今天继续学习
第四天:
第十集:多个数码管的使用,用短暂的延时来达到控制多个数码管,创建一个控制P7的数组,再多创建一个缓存数组来控制指定数码管显示指定的数字。如果打开P40开关的话,再加一个LED数组应该是可以做到同时LED灯组和数码管。
第十一集:定时器的使用,TMOD寄存器可以控制T0和T1,初始化设置时,高位4个位为T1,低位4个位为T0,四个位中第一位,置1时则需用外中断引脚( INT0或 INT1)上的电平与运行控制位TRx共同来控制定时器/计数器运行。
第二位置0时为定时器,置1时为计数器。后两位控制的是T0,T1的工作方式。通过定时器中断可以替代延时函数,防止延时函数阻断函数运行。初始化设置如下图。
第十二集:计数器的使用,初始化设置与定时器相似,多了一步设置打开内部上拉电阻,采用计数器模式,需要在外部引脚T0(P3.4)或T1(P3.5)提供一个能够进行负跳变的设备,比如开关按键。我照着冲哥的视频做了一遍
但是我的代码两秒过后无法重置计数器,在参考视频原代码后发现我的TMOD = 0x40,而参考代码为0x50。在我多次回放后找到在冲哥视频的33分49秒处有一次剪辑,从后TMOD 就 = 0x50了。
问题:为什么0x40变成0x50后又可以重置了呢?我改了一下我的代码,在16位重载模式下T1无法改变[TH1,TL1]的值,并且我发现在重载模式下,即使是在计数器的中断函数中也无法改变[TH1,TL1]的值。而以上在非重载模式下可以改变[TH1,TL1],也就可以重置了,这是为什么? |
|