PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > dsPIC - Bộ điều khiển tín hiệu số 16-bit

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 08-11-2009, 10:10 PM   #27
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi harakiri View Post
Cám ơn anh Nam. Hàm delay là do em thử một trị khác trị tính toán ban đầu nên nó lung tung,không chính xác. Loay hoay tìm nhưng rốt cuộc lại bị lỗi là chưa gọi hàm Init_TMR1(). Một bài học đắt giá cho kinh nghiệm rất ít của em. Sau khi gửi lên máy tính xong, trong hàm main em viết thêm một câu lệnh nhận rất đơn giản (với biến temp em khai bao thuoc kieu char) rồi sau đó gửi ngược lên. Tuy nhiên nó lại không chạy. Nhân đây cho em hỏi, nếu mình muốn nhận về một chuỗi ký tự thì mình tách chuỗi thế nào để nhận được .
************************************************** *******
int main(void) {

InitClock(); // This is the PLL settings
Init_TMR1();
InitUART1(); // Initialize UART2 for 9600,8,N,1 TX/RX


while(1) { // The ever versatile Infinite Loop!
if (U1STAbits.URXDA==1)
{
temp=U1RXREG;
delay_ms(10);
U1TXREG=temp;
}
}
}
************************************************** ******
Còn khi em thử dùng hàm sau để kiểm tra thử :
*******************************
if (U1STAbits.URXDA==1){
U1TXREG='A';
}
else
{delay_ms(50);
U1TXREG='B';
}
********************************
thì kết quả là trên máy tính luôn nhận 'A'.
Nếu U1STAbits.URXDA bằng '1' thì có dữ liệu để đọc, nên đọc cho đến khi hết dữ liệu trong bộ đệm rồi hẵng dừng. Trong quá trình đọc có thể xuất dữ liệu ngược lại nguồn phát.

Đoạn code đầu tiên của bạn có gọi hàm delay_ms(), không rõ hàm này sẽ delay bao lâu, do đó không nên dùng nó. Đoạn code thứ hai thì rơi vào tình trạng nếu U1STAbits.URXDA bằng '1' thì nó sẽ luôn luôn rơi vào nhánh if, vì trong nhánh if đó bạn không bao giờ đọc dữ liệu ra khỏi bộ đệm để cờ URXDA được xóa về '0'.

Trong đoạn code thử của bạn, bạn nên bỏ hẳn lệnh gọi hàm delay_ms() đi, và phát ngay sau khi nhận được dữ liệu xem. Như vậy dsPIC sẽ chờ đến khi có dữ liệu và phát trả lại dữ liệu ngay khi đọc từ bộ đệm. Đây là cách tôi vẫn thử các module UART.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Tags
alphanumeric lcd, input read


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Học CCS thông qua Tutorial PICVIETNAM FFGmember Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 105 08-09-2017 04:12 PM
dsPIC Tutorial 2-Các kỹ thuật cơ bản namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 33 17-10-2013 11:09 PM
dsPIC Tutorial 5-Module ADC và MCPWM namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 83 12-09-2013 10:33 PM
dsPIC Tutorial 1-Tạo và biên dịch một project (ASM30) namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 16 22-08-2012 12:35 AM
dsPIC Tutorial 4-Module UART và I2C namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 76 09-05-2012 10:55 AM


Múi giờ GMT. Hiện tại là 03:19 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam