Assembly 基于AVR控制器的ADC控制PWM的优化方法

Assembly 基于AVR控制器的ADC控制PWM的优化方法,assembly,avr,pwm,adc,Assembly,Avr,Pwm,Adc,我从ADC(它位于[0,1024])中获得8位值,但我需要将它们转换为定时器PWM模式(它位于[25,255])中的占空比。使用汇编实现这一点的最佳方法是什么? 将ADC值除以4,表示将ADC值读入 注册,然后向右移动2次 那就确保 如果移位结果小于25,则将其设置为25 编辑 如果您想要对ADC读数做出非线性响应,您可以创建一个2561024字节的表…可能从25x“25”开始然后任何函数向255递增,并使用un移位的ADC值作为此表的索引…例如,对数LED调光曲线就是这样编程的。范围[010

我从
ADC
(它位于[0,1024])中获得8位值,但我需要将它们转换为定时器
PWM
模式(它位于[25,255])中的占空比。使用汇编实现这一点的最佳方法是什么?

  • 将ADC值除以4,表示将ADC值读入 注册,然后向右移动2次
  • 那就确保 如果移位结果小于25,则将其设置为25
编辑


如果您想要对ADC读数做出非线性响应,您可以创建一个2561024字节的表…可能从25x“25”开始然后任何函数向255递增,并使用un移位的ADC值作为此表的索引…例如,对数LED调光曲线就是这样编程的。

范围[01024)不适合8位,需要10位-这就是您的意思吗?对于非线性转换表,您可能希望有1024个条目,而不是移动索引。@MarkRansom true(+1)