Ðề tài: PIC18F2620 + rs232
View Single Post
Old 16-12-2006, 01:44 AM   #2
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 littlephoc View Post
Mình thường thấy trong các sample CCS code, thường sử dụng giá trị 20Mhz cho delay:
#use delay(clock=20000000)
Mình hiểu là dùng chỉ thị này khi dùng delay_ms() function nhưng chưa hiểu hết ý nghĩa thực sự của nó
Mình dùng PIC8F2620, đọc datasheet thì thấy tần số hoạt động của nó là 8Mhz. Vậy mình sẽ sửa lại
#use delay(clock=8000000)
thì có đúng hay không.
Hiện mình đang lập trình để send key từ hyperterminal của máy tính đến cổng RS232 và muốn nó print lại ký tự đó lên màn hình terminal. Nhưng vẫn không được. Và không biết là làm sao để xác định được mình đang sai ở đâu.
(dùng picdem 2 plus , board màu đỏ, CCS version 4.017)

#include <18F2620.h>
#include <stdio.h>

#fuses HS,NOWDT,PUT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(BAUD=9600,parity=N,XMIT=PIN_B1, RCV=PIN_B4,bits=8,stream=pc)
#define KEYHIT_DELAY 500 // in milliseconds
void main()
{
char c;
while(1){
c= getch();
putc(c);
delay_ms(100);
}
}
#use delay(clock=20000000)
dùng để báo cho trình biên dịch biết tần số thực của xung clock ở mạch ứng dụng thực. Từ đó trình biên dịch sẽ tính ra được số chu kỳ máy cần chờ tương ứng với một giá trị delay nào đó trong chương trình. Bạn phải xem trên board PICDEM 2 Plus đó có tần số của bộ dao động hay thạch anh nối vào PIC18F2620 là bao nhiêu, dùng giá trị đó (đổi thành Hz) và thay vào chỗ 20000000 trong khai báo trên.

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