[問題] ADC Binary to 16階LED,i>0可,i>=0卻不行
這個題目要把 ADC的 0~255 8bit 輸入, 轉換成16個LED漸層顯示
#include <reg51.h>
unsigned char ADC=0,i;
main()
{
while(1)
{
ADC=P0; //載入ADC 8bit值
P1=P3=0xff;//關閉這16顆LED
for(i=0;ADC>(i*16);i++);//計算階數
if(ADC>127)
{
P3=0;
for(;i>=9;i--)
P1=P1>>1;
}
else if(ADC<=128)
{
for(;i>0;i--) //Why can't "i>=0" ? <----問題所在
P3=P3>>1;
}
delay(10);
}
}
1.假如 for 迴圈設成 i>=0,高8bit全暗,低8bit全亮,電路對ADC毫無反應,怎麼會這樣?
2.請問整個題目還有更精簡的寫法嗎? (條件:越接近LSB要越先亮)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.167.217
※ 編輯: deo2000 來自: 140.122.167.217 (07/20 05:41)
推
07/20 11:51, , 1F
07/20 11:51, 1F
我只是要"整體"看起來漸層的就好,不用到PWM這麼細緻啦,
版大太佛心了還幫我把code寫好貼上
→
07/20 11:51, , 2F
07/20 11:51, 2F
→
07/20 11:52, , 3F
07/20 11:52, 3F
→
07/20 11:54, , 4F
07/20 11:54, 4F
→
07/20 11:55, , 5F
07/20 11:55, 5F
推
07/20 11:57, , 6F
07/20 11:57, 6F
→
07/20 11:57, , 7F
07/20 11:57, 7F
好直接! 直接用ALU的運算思考除法.可是,請問求餘數的做法是怎麼推導的呢?
→
07/20 12:07, , 8F
07/20 12:07, 8F
推
07/20 13:57, , 9F
07/20 13:57, 9F
這邊就沒辦法理解耶,unsigned char不是0~255嗎?
※ 編輯: deo2000 來自: 118.168.15.78 (07/20 16:52)
推
07/20 18:31, , 10F
07/20 18:31, 10F
推
07/20 18:35, , 11F
07/20 18:35, 11F
推
07/20 20:35, , 12F
07/20 20:35, 12F
ASM 近期熱門文章
PTT數位生活區 即時熱門文章