Trích:
Nguyên văn bởi manhha2799
int16 laybit(int16 binary,int8 vitri)
{
if (dbit==0) kq3&=0b00000001;
else if (dbit==1) kq3&=0b00000011;
else if (dbit==2) kq3&=0b00000111;
else if (dbit==3) kq3&=0b00001111;
else if (dbit==4) kq3&=0b00011111;
else if (dbit==5) kq3&=0b00111111;
else if (dbit==6) kq3&=0b01111111;
else if (dbit==7) kq3&=0b11111111;
return kq3;
}
|
huynh xem lại dùm đệ đoạn này hen!!
đệ nghĩ phải là 0b00000001 --> 0b00000010 --> 0b00000100..mới đúng chứ nhỉ?
cám ơn huynh!!
bạn cũng có thể dùng lệnh rotate_left hay rotate_right trong CCS C.cũng với cách tương tự như huynh trên làm.bạn tạo một vòng lặp trong đó cho "and" & với 0x01 rồi lấy mũ tương ứng và cộng dồn vào.nếu giá trị của bạn nằm trong vòng 16bit thì tạo 1 biến 16 bit cho giá trị muốn đổi và cứ cho vòng lặp 16 lần.
hy vọng mình nghĩ đúng và giúp ích cho bạn!!