Nguyên văn bởi queduong
Trở lại bài toán của bác:
000 100100010 ( tự điền : bit 11 =0 ; bit 10 =0; bit 9 =0 )
....
truyền bit 11 trước, rồi 10,9...0
Vậy đơn giản viết như sau:
Cách 1:
void Transmiter(unsigned int data)
i=11;
while(i--)
{
if(data & 0b100000000000) RBi=1; else RBi=0;
data=(data<<1);//dịch trái
DELAY();
}
thay while(i--) = lệnh for(i=0;i<12;i++) cũng được
Cách 2:
Trước hết khia báo mảng hằng số:
const unsigned char Mask[12]={2048,1024,512,256,128,64,32,16,8,4,2,1}void Transmiter(unsigned int data)
for (i=0;i<12;i++)
{
if(data & Mask[i]) RBi=1; else RBi=0;
DELAY();
}
Và ngoài ra còn nhiều cách khác nữa
Comment