PDA

View Full Version : help pic16f877a - pc use ccs & matlab


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

namco102
28-02-2009, 03:19 PM
hix hix cuối cùng cũng kết nối dc,lý do là do cái board của e có vấn đề .
nhưng không hiểu sao truyền lệnh xuống so sánh khác (!=) thì chạy,còn so sanh bằng (==) thì không so sánh đc , chắc do cách đặt biến

namco102
01-03-2009, 02:40 AM
đã test bằng VC++ truyền nhận tốt, matlab không hiểu sao nhận đc mà không so sánh dc

namco102
02-03-2009, 01:29 AM
hix,da test,thi ra thang matlab truyen xuong ma ascii
da truyen thanh cong bang matlab