View Single Post
Old 07-11-2012, 09:27 PM   #10
legiap
Nhập môn đệ tử
 
Tham gia ngày: Jun 2007
Bài gửi: 1
:
while(1)
{ ADC = read_ADC();

if((ADC>4)&&(ADC<8)){portb = 0x01;portd = 0x00;} // tan so lay mau
if((ADC>8)&&(ADC<16)){portb = 0x03;portd = 0x00;}
if((ADC>16)&&(ADC<24)){portb = 0x07;portd = 0x00;}
if((ADC>24)&&(ADC<32)){portb = 0x0f;portd = 0x00;}
if((ADC>32)&&(ADC<40)){portb = 0x1f;portd = 0x00;}
if((ADC>40)&&(ADC<48)){portb = 0x3f;portd = 0x00;}
if((ADC>48)&&(ADC<56)){portb = 0x7f;portd = 0x00;}
if((ADC>56)&&(ADC<64)){portb = 0xff; portd = 0x00;}

if((ADC>64)&&(ADC<72)){portd = 0x01; portb = 0xff;}
if((ADC>72)&&(ADC<80)){portd = 0x03; portb = 0xff;}
if((ADC>80)&&(ADC<96)){portd = 0x07; portb = 0xff;}
if((ADC>96)&&(ADC<100)){portd = 0x0f; portb = 0xff;}
if((ADC>104)&&(ADC<112)){portd = 0x1f; portb = 0xff;}
if((ADC>112)&&(ADC<120)){portd = 0x3f; portb = 0xff;}
if((ADC>120)&&(ADC<128)){portd = 0x7f; portb = 0xff;}
if(ADC>128){portd = 0xff; portb = 0xff;}
delay_ms(5); // do nhay nhay theo dieu nhac
}


Cảm ơn bạn tungtot_vl!
Từ đoạn code trên ta thấy
Nếu a = phần nguyên của ADC/8
((2 mu a) -1) là giá trị 16 bit có byte thấp là giá trị của Port B và byte cao là giá trị của Port D.
Vì vậy có thể rút gọn lại được.
legiap vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn