RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

help pic16f877a - pc use ccs & matlab

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • namco102
    Nhập môn đệ tử
    • Oct 2007
    • 6

    #1

    help pic16f877a - pc use ccs & matlab

    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)
    RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển...


    còn đây là đoạn code ccs của pic,dùng để đk led chạy sang trái/phải

    Code:
    #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,bits=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
    Nhập môn đệ tử
    • Oct 2007
    • 6

    #2
    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

    Comment

    • namco102
      Nhập môn đệ tử
      • Oct 2007
      • 6

      #3
      đã 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

      Comment

      • namco102
        Nhập môn đệ tử
        • Oct 2007
        • 6

        #4
        hix,da test,thi ra thang matlab truyen xuong ma ascii
        da truyen thanh cong bang matlab

        Comment

        Working...