MMKC
Thành Viên PIF
Em có code bên C5:
Em ghép nối tiếp 2 con 595, SQh con này nối chân Data Input con kia, xung clock 2 con nối nhau ,chân chốt cũng vậy, OE nối GND, Reset nối VCC, cấp nguồn 5v.
Truyền 2 byte liên tiếp nhưng em kiểm tra thì không đúng dữ liệu mong muốn gửi ?
Em không biết sai chỗ nào
Code:
// HItech-C ban moi
#include<htc.h>
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF); //1st config. Word
__CONFIG(BOR4V_BOR21V); //2st config. Word
#define _XTAL_FREQ4000000
#include <htc.h>
unsigned char spi(unsigned char b);//truyen 1 byte (b) qua SPI port
void main(void)
{
ANSEL = 0;
ANSELH = 0;
// I/O PORT init for SPI communication
TRISC3 = 0;// SCK pin is output
TRISC5 = 0;// SDO pin is output
TRISC4 = 1;// SDI pin is input
// init LATCH PIN: RC1
TRISC1 = 0; // is output
//TRISD0 = 0;// 25LC256 chip select
//RD0 = 1;// deselect chip
//SSPSTAT
SMP = 1; // data in sampled at middle
CKE = 1; // data out at rising edge (with CKP = 0)
//SSPCON
SSPCON = 0b00100000;// CKP = 0, SPI mode baudrate = Fosc/4
while (1)
{
//For example
spi(0x55);
spi(0xAA);
//latch
RC1 = 1;
RC1 = 0;
}
}
//Truyen 1 byte
unsigned char spi(unsigned char b)
{
WCOL = 0;// clear any write collision condition
SSPIF = 0;// clear SSP interrupt flag
SSPBUF = b;// load the SSP buffer with data
while(!SSPIF);// wait for SSPIF to be set
return SSPBUF;
}
Truyền 2 byte liên tiếp nhưng em kiểm tra thì không đúng dữ liệu mong muốn gửi ?
Em không biết sai chỗ nào