View Single Post
Old 15-12-2008, 02:47 PM   #1
han_nang_008
Đệ tử 1 túi
 
Tham gia ngày: Nov 2008
Bài gửi: 19
:
trong ví dụ 5.2 của bác đoặn thế này
Code:
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
		};
em viết lại thành hàm chuyển số sang chuỗi như này
Code:
//khai báo bien toan cuc
char chuoi[4];

unsigned char HexTable[] = "0123456789";
void so_to_chuoi(int so)
{	

	int  idx;
	int temp;
	temp=so;
			idx = ((temp >> 12) & 0x000F);			//Nibble cao nhat (chi co 2 bit)
			chuoi[0] = HexTable[idx];	

	  		idx = ((temp >> 8) & 0x000F);			//Nibble cao nhat (chi co 2 bit)
			chuoi[1] = HexTable[idx];	

			idx = ((temp >> 4) & 0x000F);			//Nibble cao nhat (chi co 2 bit)
			chuoi[2] = HexTable[idx];				//Chuyen thanh ky tu tuong ung
			
			idx = (temp & 0x000F);					//Nibble thu hai
			chuoi[3]= HexTable[idx];				//Chuyen thanh ky tu tuong ung
		
	  
}
trong hàm main em viết đoặn
so_to_chuoi(5893);
putsUART2((unsigned int*)chuoi);

rồi truyền lên PC thì thì ko thẻ nhận đúng số 5839, mà nhạn sang số khác,
đổi sang so_to_chuoi(so bat ki); thì cũng ko nhận đúng
nếu trong hàm so_to_chuoi(); em gán idx là các số cố định thì nhận dc chính xác, em suy ra là phần tách số có vấn đề, nhung em thử cackeeiur đều ko dc.
Bác xem hộ em với
han_nang_008 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn