Em tìm hiểu về cách giao tiếp SPI, do sẵn hỗ trợ phần cứng nên em chọn Pic16f877 để làm (giao tiếp master với slave thông qua module nRF24L01). Do mới tìm hiểu nên em chỉ test spi như sau.
- Master truyền 1 mã cho slave.
- Slave đọc rồi hiển thị ra led.
MASTER
SLAVE
Mong mọi người giúp đỡ,chỉ giáo em với nếu ai am hiểu hoặc biết chút ít về giao tiếp giữa 2 module nRF24L01 nữa thì xin chỉ giáo em với.
Và em sẵn hỏi cách hoạt động của ngắt SSP nữa.
Em xin cảm ơn.
- Master truyền 1 mã cho slave.
- Slave đọc rồi hiển thị ra led.
MASTER
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(A) #byte SSPBUF=0x13 unsigned int temp; void spi_ghi(unsigned char x) { SSPBUF = x; while(SSPIF==1); SSPIF = 0; } void init_master_spi() { TRISA= 0x00; // Chan xuat du lieu //TRISB = 0x03; // 00000010, chan RB1 la chan vao du lieu, con lai la xuat TRISC = 0x10; //0001|0000, RC4 nhan du lieu SSPSTAT = 0x80; //1000|0000 set che do lay mau va trang thai xung clock SSPCON = 0x31; //0010|0001 set che do master, cho phep cac chan serial RA5 = 0; //chan chon chip slave } void truyen_spi(unsigned char x) { SSPBUF = x; while(SSPIF==0); //cho cho dich data xong SSPIF=0; temp = SSPBUF; } void main() { init_master_spi(); while(1) { delay_ms(100); output_low(ra5); delay_ms(10); truyen_spi(0x81); output_high(ra5); } }
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(D) #byte SSPBUF=0x13 void init_slave_spi() { TRISC =0x18; //0001|1000 RC3, RC4 pin_in_data TRISA = 0xff; //all pin_in_data TRISD = 0x00; SSPSTAT=0x80; // 1000|0000 set sample va clock states SSPCON=0x35; // 0010|0100 SPI_slave enable SS } void nha_spi() { if(SSPIF==1) {PORTD = SSPBUF; delay_ms(10);} } void main() { init_slave_spi(); while(1) { nhan_spi(); } }
Và em sẵn hỏi cách hoạt động của ngắt SSP nữa.
Em xin cảm ơn.
Comment