em đang thực hiện việc giao tiếp giữa PIC với Mobie theo RS232 dùng CCS C
em truyền các mảng ký tự tương ứng với các lệnh AT với tốc độ 9600 như sau :
Code:
void read_SMS(){
int8 i,j;
i=0;
j=0;
while ((i<18)){
putc(mang1[i]);
i++;}
while (j<11){
putc(mang2[j]);
j++;}
}
mang1 và mang2 là các lệnh AT
điểm đặc biệt khi giao tiếp với Mobie là mỗi khi có một ký tự nào truyền đến từ chân TX của PIC thì Mobie sẽ truyền lại đúng ký tự đó theo chân RX
và em dùng ngắt nhận để nhận những ký tự này
Code:
#INT_RDA
void Recieve_isr(){
char c;
c = getc();
count++;
}
biến count là để em kiểm tra xem có bao nhiêu ngắt xảy ra(tưng ứng với số ký tự truyền lại PIC), và vấn đề ở đây là số lần xảy ra ngắt không đúng,mong anh giải thích giùm em !
Vì mới chuyển sang CCS C nên em chuă thể hiểu thấu đáo được,diều em băn khoăn ở đây là :
+)liệu với cách thức truyền ký tự như thế thì có đúng là tốc độ 9600 không,vì nếu em cho thêm 1 khoảng trễ trong read_SMS() thì số lần ngắt lại khác
+)em dùng thạch anh 12M thì liếu có đáp ứng kịp khi vừa truyền xong 1 ký tự thì có một ngắt nhận ký tự xảy ra hay không
Mong anh giải thích giùm em hiện tượng này! cảm ơn anh rất nhiều 1