- 打卡等级:以坛为家II
- 打卡总天数:435
- 最近打卡:2025-04-30 08:43:23
论坛元老
- 积分
- 4860
|
发表于 2023-12-15 20:55:54
|
显示全部楼层
本帖最后由 cofmilk 于 2023-12-15 21:00 编辑
第三部分,ADC
ADC这里STC15W的区别可就太大了,大跨步的大。
STC15W 是10位精度8个通道加一个内部通道的ADC;而STC8AD4与STC8H均是12位精度15个通道加一个内部通道的ADC
在对ADC的操作上也有很大区别,所以再写这部分代码的时候,就分开写的两边不再混用。
STC15W单片机的ADC在配置时还需要配置一个P1口模拟功能控制寄存器,在配置时需要置位对应通道的P1ASF位。不仅如此ADC转换结果调整寄存器位还塞到了CLK_DIV寄存器里,在使用的时候需要注意一下赋值方式.千万别一不小心把这个寄存器的其他位置的数据给改了..
到了STC8AD4与STC8H的时候就没有那么多的事儿了,只需要配置正确的IO工作模式就可以。其次,ADC功能相关的寄存器也没有东塞一个西塞一个了。而且,还可以使用PWM触发ADC的采集。再而且增加了ADC的时序控制和硬件自动求平均的功能。实际体验自动求平均确实再一定程度上抑制了ADC结果的波动。这东西有就用上..
而对于相同功能的寄存器位在不同单片机上的位置不同的问题,直接使用宏定义替换掉就OK了。实际上在代码开发的时候也推荐使用宏定义的方式替换掉魔法数字。
|
|