View Single Post
Old 08-11-2009, 01:02 AM   #58
npbaoduy
Đệ tử 2 túi
 
Tham gia ngày: Sep 2008
Nơi Cư Ngụ: Tp. HCM
Bài gửi: 38
:
điều gì xảy ra khi gởi giá trị 0 qua module UART?

Vấn đề ROM vẫn mò chưa ra , hôm nay em lại gặp một vấn đề thế này:
Code:
U1TXREG=0x00;
	while(!U1STAbits.TRMT);
	U1TXREG=0x41;
	while(!U1STAbits.TRMT);
thì trên máy tính chỉ nhận được giá trị 0, không nhận được 0x41 (ký tự A), em sử dụng VB, thấy không in ra được ký tự nào cả, dùng hàm lấy mã ascii chỉ thấy số 0.
còn nếu thay:
Code:
U1TXREG=0x01;  //có thể là một giá trị nào đó bất kỳ khác 0
	while(!U1STAbits.TRMT);
	U1TXREG=0x41;
	while(!U1STAbits.TRMT);
thì trên máy tính nhận được cả 2 giá trị (hiển thị được cả 2 ký tự).
Em không hiểu chỗ này, không lẽ khi gởi giá trị 0, bit U1STAbits.TRMT không được bật lên sau khi đã truyền xong hay sao?
Nếu thay bằng:
Code:
U1TXREG=0x00; 
	delay_ms(100);
	U1TXREG=0x41;
	while(!U1STAbits.TRMT);
thì nhận được cả số 0 và số 0x41, nhưng điều kiện là delay_ms phải đủ lớn, nếu delay_ms(1) thì cũng ko nhận được số 0x41 (quan sát thấy y như trường hợp đầu tiên).

thay đổi nội dung bởi: npbaoduy, 08-11-2009 lúc 01:15 AM.
npbaoduy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn