22-08-2009, 12:32 PM | #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. |
|
|
|