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 ạ !!!!!!
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 ạ !!!!!!