PDA

View Full Version : In chuối lên PC qua cổng nối tiếp ( Printf )


loc.plsoft
28-05-2012, 10:15 PM
Mọi người vui lòng cho em hỏi sao ct của em sử dụng hàm printf để un một chuỗi từ PIC lên PC qua rs232 nhưng khi mở Terminal lên thì lại hiển thị các kí tự không đọc đc là gì hết ạ.

Mong mọi người chỉ dẫn giúp.

Rất cám ơn !

Code của em đây ạ.

#include <16f887.h>
#include <C:\Program Files\PICC\Devices\DEFS_16F877A.h>
#include <string.h>
#use delay(clock=20000000)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#USE RS232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)//,bits=9)
#byte portC = 0x07
int k=0;
int v=0;
int16 count = 0;
char* temp1;

#INT_RDA
VOID RECEVICE()
{


char c;
c = getc();
putc(c);
if(c=='a') {
output_high(pin_A1); }
else {
output_low(pin_A1); }


}
#int_timer0
void interrupt_timer0()
{
set_timer0(57); // 256 - 199
++count;
if (count >=95) // 98 x 199 x 51.2 ~ 1 giay
{
count =0;

printf("N Phuoc Loc");
}
}

VOID MAIN()
{

set_tris_a( 0x00 );




setup_timer_0(RTCC_DIV_256); // timer 0 mo^~i la^`n ta(ng 1 ?o+n vi. ma^'t 51.2 us
set_timer0(100); // 199 x 51.2 = 10188.8 us ( 256 - 57 = 199)


enable_interrupts(int_timer0);
enable_interrupts(int_rb);
enable_interrupts(INT_RDA);



while(TRUE)
{
enable_interrupts(global);
}
}


Nếu em dùng proteus và terminal thì nó chạy bình thường ạ !!!!!!

loc.plsoft
29-05-2012, 09:50 AM
help mình với !

tinh08260491
29-05-2012, 02:40 PM
bạn xem phần khai báo tốc độ baud trên code là 9600 và trên phần mềm máy tính là trùng nhau chưa.

loc.plsoft
29-05-2012, 10:21 PM
Mình khai báo trùng nhau, nhưng không hiểu sao nó lại nhận được các kí tự ngoằn nghèo, không biết tại sao nữa !

longtu
29-05-2012, 10:46 PM
Mình khai báo trùng nhau, nhưng không hiểu sao nó lại nhận được các kí tự ngoằn nghèo, không biết tại sao nữa !

Thử đọc luồng này xem, trong này mình có nói sử dụng thach anh nội xem sao:
http://www.picvietnam.com/forum/showthread.php?t=13556

loc.plsoft
30-05-2012, 01:11 AM
Rất cám ơn longtu, để em thử xem sao.