View Single Post
Old 29-12-2009, 08:54 AM   #1
tuongdtd
Đệ tử 2 túi
 
tuongdtd's Avatar
 
Tham gia ngày: Nov 2009
Bài gửi: 27
:
hỏi về VD 5_2 của anh Nam

chào các bác trên diễn đàn!
dưới đây là đoạn code trong vd5-2 của anh Nam:
while (1) {
if (flag) { //Neu co ket qua moi thi xuat ket qua
idx = (ADCValue >> 8); //Nibble cao nhat (chi co 2 bit)
U1TXREG = HexTable[idx]; //Chuyen thanh ky tu tuong ung
while (!U1STAbits.TRMT); //Cho den khi truyen xong ky tu
idx = ((ADCValue >> 4) & 0x000F); //Nibble thu hai
U1TXREG = HexTable[idx]; //Chuyen thanh ky tu tuong ung
while (!U1STAbits.TRMT); //Cho den khi truyen xong ky tu
idx = (ADCValue & 0x000F); //Nibble thap nhat
U1TXREG = HexTable[idx]; //Chuyen thanh ky tu tuong ung
while (!U1STAbits.TRMT); //Cho den khi truyen xong ky tu
U1TXREG = 0x0A; //Cap ky tu CR, LF
while (!U1STAbits.TRMT); //Cho den khi truyen xong ky tu
U1TXREG = 0x0D;
flag = 0; //Xoa co bao hieu co ket qua moi
};
};
theo em hiểu như thế này ko biết có đúng ko?
giả sử ADCvalue = 0x037f
ban đầu ta lấy 2 bit cao nhất tức là idx =0x0003
ta lấy 4 bit tiếp theo idx= 0x0007
và 4 bit cuối idx = 0x000f.
vậy ta sẽ gửi 3 byte lên máy tính, nhưng tai sao ta không gửi U1TXREG = idx mà phải sử dụng U1TXREG = HexTable[idx]?
tại sao ta lại phải truyền thêm hai ký tự CR và LF?
tuongdtd vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn