namco102
26-02-2009, 12:36 AM
e vừa mới tập tành tìm hiểu về pic,nên kiến thức còn rất yếu lại thiếu kinh nghiệm,hiện đang gặp vài rắc rối về kết nối pic với pc dùng matlab (dùng chương trình của a NGÔ HẢI BĂC ,test truyền và nhận rất tốt)
http://www.picvietnam.com/forum/showthread.php?t=752
còn đây là đoạn code ccs của pic,dùng để đk led chạy sang trái/phải
#include <16F877A.h>
//#include <def_877a.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,bi ts=8)
int1 tam;
char kt='0';
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#byte portb = 0x6
#bit b0=portb.0
#bit b1=portb.1
#bit b2=portb.2
#bit b3=portb.3
#bit b4=portb.4
#bit b5=portb.5
#bit b6=portb.6
#bit b7=portb.7
#INT_RDA
void receiver(void)
{
CLEAR_INTERRUPT(INT_RDA);
kt=getc();
}
void main()
{
set_tris_b(0);
set_tris_c(128); // 10000000
ENABLE_INTERRUPTS(INT_RDA);
ENABLE_INTERRUPTS(GLOBAL);
b4 = 1; b5 = 0 ; b6 = 0 ; b7 = 0;
while(true)
{
if (kt=='1') //neu pc truyen xuong 1 thi quay phai
{
tam = b7 ; b7 = b6 ; b6 = b5 ; b5 = b4 ; b4 = tam ;
}
if (kt=='2') //pc truyen 2 -> quay trai
{
tam = b4 ; b4 = b5 ; b5 = b6 ; b6 = b7 ; b7 = tam ;
}
// if (kt=='0')
output_bit(pin_b4,b4);
output_bit(pin_b5,b5);
output_bit(pin_b6,b6);
output_bit(pin_b7,b7);
delay_ms(250);
}
}
tình hình là e test thì led đầu tiên sáng như default , pc truyền xuống vẫn vậy không thấy có gì thay đổi . e không biết tại sao lại không truyền đc bác nào có kinh nghiệm giúp e với.
Có 3 trường hợp lỗi :
- board ráp sai sót chỗ nào đó (nhưng đã kiểm tra kĩ không thấy sai sót gì)
- code nạp pic có vấn đề
- chương trình trên matlab không phù hợp hoặc thiếu lệnh gì đó => không truyền xuống đc (e nghĩ chương trinh không vấn đề gì)
Các bác cho e ý kiến nha
Cảm ơn các bác nhiều
http://www.picvietnam.com/forum/showthread.php?t=752
còn đây là đoạn code ccs của pic,dùng để đk led chạy sang trái/phải
#include <16F877A.h>
//#include <def_877a.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,bi ts=8)
int1 tam;
char kt='0';
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#byte portb = 0x6
#bit b0=portb.0
#bit b1=portb.1
#bit b2=portb.2
#bit b3=portb.3
#bit b4=portb.4
#bit b5=portb.5
#bit b6=portb.6
#bit b7=portb.7
#INT_RDA
void receiver(void)
{
CLEAR_INTERRUPT(INT_RDA);
kt=getc();
}
void main()
{
set_tris_b(0);
set_tris_c(128); // 10000000
ENABLE_INTERRUPTS(INT_RDA);
ENABLE_INTERRUPTS(GLOBAL);
b4 = 1; b5 = 0 ; b6 = 0 ; b7 = 0;
while(true)
{
if (kt=='1') //neu pc truyen xuong 1 thi quay phai
{
tam = b7 ; b7 = b6 ; b6 = b5 ; b5 = b4 ; b4 = tam ;
}
if (kt=='2') //pc truyen 2 -> quay trai
{
tam = b4 ; b4 = b5 ; b5 = b6 ; b6 = b7 ; b7 = tam ;
}
// if (kt=='0')
output_bit(pin_b4,b4);
output_bit(pin_b5,b5);
output_bit(pin_b6,b6);
output_bit(pin_b7,b7);
delay_ms(250);
}
}
tình hình là e test thì led đầu tiên sáng như default , pc truyền xuống vẫn vậy không thấy có gì thay đổi . e không biết tại sao lại không truyền đc bác nào có kinh nghiệm giúp e với.
Có 3 trường hợp lỗi :
- board ráp sai sót chỗ nào đó (nhưng đã kiểm tra kĩ không thấy sai sót gì)
- code nạp pic có vấn đề
- chương trình trên matlab không phù hợp hoặc thiếu lệnh gì đó => không truyền xuống đc (e nghĩ chương trinh không vấn đề gì)
Các bác cho e ý kiến nha
Cảm ơn các bác nhiều