View Single Post
Old 23-04-2012, 07:07 PM   #1
nguyenvietbinh
Nhập môn đệ tử
 
Tham gia ngày: Oct 2010
Bài gửi: 5
:
Giúp đỡ về giao tiếp truyền nhận 2 PIC với chuẩn SPI

Mọi người xem giúp mình đoạn code lỗi gì mà chỉ truyền được Master--> Slave mà không truyền ngược lại được. Trân trọng cảm ơn!


Code Master:



#include "16f877a.h"
#include "def_877a.h"
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#use rs232(baud=38400,parity=N,xmit=PIN_C6,rcv=PIN_C7)
#use fast_io(B)
#use fast_io(D)
#use fast_io(A)
#define REG_Write 0x80

#INT_SSP
void spi()
{
PORTD=spi_read(PORTB);
delay_ms(10);
}
void main()
{
port_b_pullups(TRUE);
setup_spi(spi_master|spi_l_to_h|spi_clk_div_16);
enable_interrupts(INT_SSP);
enable_interrupts(GLOBAL);
SET_TRIS_B(0xff);
SET_TRIS_D(0x00);
SET_TRIS_A(0x00);
while(1)
{
delay_ms(100);
output_low(PIN_A5);//Chân C2 dùng Select chip.
delay_ms(10);//Tao tre de Slave chuan bi.
spi_write(PORTB);
output_high(PIN_A5);
}
}


Code Slave:



#include "16f877a.h"
#include "def_877a.h"
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#use rs232(baud=38400,parity=N,xmit=PIN_C6,rcv=PIN_C7)
#use fast_io(B)
#use fast_io(D)

#INT_SSP
void spi()
{
PORTD=spi_read(PORTB);//Vua nhan vua truyen.
delay_ms(10);
}

void main()
{
port_b_pullups(TRUE);
setup_spi(spi_slave|spi_l_to_h|spi_clk_div_16);
enable_interrupts(INT_SSP);
enable_interrupts(GLOBAL);
TRISB=0xff;
TRISD=0x00;
while(1)
{
}
}

thay đổi nội dung bởi: nguyenvietbinh, 27-04-2012 lúc 12:01 AM.
nguyenvietbinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn