![]() |
|
|
#3 | |
|
Nhập môn đệ tử
Tham gia ngày: Jul 2008
Bài gửi: 9
: |
Trích:
Tuy nhiên, mình sử dụng ngắt chứ ko sử dụng thuật toán thăm dò: data=spi_data_is_in()... Mình Post 2 đoạn Code, bạn nào cần thì tham khảo nha, truyền-nhận ngon lắm!!! Master Code: Code:
#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 fast_io(b)
#use fast_io(c)
#use fast_io(d)
#include <lcd_lib_4bit.c>
//*********************************
int8 data;
//*********************************
void main()
{
output_high(pin_c2);
data = 0b00110010; //Thử một giá trị để truyền
setup_spi( SPI_MASTER | SPI_L_TO_H);
delay_ms(1000);
while(1)
{
output_low(pin_c2); //Chân C2 dùng Select chip
spi_write(data);
output_high(pin_c2);
delay_us(10);//Tao tre giua 2 lan truyen
}
}
//*******************************
Slave Code: Code:
#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 fast_io(b)
#use fast_io(c)
#use fast_io(d)
#include <lcd_lib_4bit.c>
//*************************
int8 data;
//*************************
#int_ssp
void ssp_isr(void)
{
data = spi_read();
output_d(data); //Hiển thị ra Port D
}
//*************************
void main()
{
setup_spi(SPI_SLAVE|SPI_L_TO_H);
clear_interrupt(INT_SSP);
enable_interrupts(INT_SSP);
enable_interrupts(GLOBAL);
while(1)
{
//Ko làm gì, đợi Data đến
}
}
//************************
thay đổi nội dung bởi: falleaf, 22-08-2009 lúc 06:48 PM. |
|
|
|
|
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|