vn00426941
25-11-2013, 03:45 PM
#include <p30F6014A.h>
#define FCY 10000000
#include <libpic30.h>
#include <spi.h>
_FOSC(CSW_FSCM_OFF & HS2_PLL4);
_FWDT(WDT_OFF);
_FBORPOR( PBOR_OFF);
_FGS(CODE_PROT_OFF);
int a,j,i,f,k,e[16][8],b[3][8];
int b[3][8]={0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,
0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,
0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
void int_spi()
{
SPI2STAT=0x8000;
SPI2CON=0x003F;
};
int latch()// Ham tao xung latch data ra cac ma tran led
{
LATCbits.LATC2=0;
LATCbits.LATC2=0;
}
void main()
{
TRISD=0;
TRISC=0;
TRISF=0;
TRISG=0;
LATCbits.LATC1=1;// Chan EN
LATCbits.LATC2=1;
//Chon quet 8 hang tren hoac 8 hag duoi
while(1)
{ int_spi();
LATCbits.LATC3=1;
for(j=0;j<3;j++)
{
LATD=j;// Bien j chon hang de quet: 0 quet hang dau tien 7:quet hang thu 8
for(i=0;i<8;i++)
{
a=b[1][i];
SPI2BUF= a;
while(!SPI2STATbits.SPITBF);
};
latch();
};
};
};
Khổng hiểu sao đoạn code này em cho nó scan 1 hàng thì spi lại truyền đúng chuỗi bit cần hiển thị. Nhưng scan nhiều hàng thì nó lại bị sai.
#define FCY 10000000
#include <libpic30.h>
#include <spi.h>
_FOSC(CSW_FSCM_OFF & HS2_PLL4);
_FWDT(WDT_OFF);
_FBORPOR( PBOR_OFF);
_FGS(CODE_PROT_OFF);
int a,j,i,f,k,e[16][8],b[3][8];
int b[3][8]={0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,
0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,
0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
void int_spi()
{
SPI2STAT=0x8000;
SPI2CON=0x003F;
};
int latch()// Ham tao xung latch data ra cac ma tran led
{
LATCbits.LATC2=0;
LATCbits.LATC2=0;
}
void main()
{
TRISD=0;
TRISC=0;
TRISF=0;
TRISG=0;
LATCbits.LATC1=1;// Chan EN
LATCbits.LATC2=1;
//Chon quet 8 hang tren hoac 8 hag duoi
while(1)
{ int_spi();
LATCbits.LATC3=1;
for(j=0;j<3;j++)
{
LATD=j;// Bien j chon hang de quet: 0 quet hang dau tien 7:quet hang thu 8
for(i=0;i<8;i++)
{
a=b[1][i];
SPI2BUF= a;
while(!SPI2STATbits.SPITBF);
};
latch();
};
};
};
Khổng hiểu sao đoạn code này em cho nó scan 1 hàng thì spi lại truyền đúng chuỗi bit cần hiển thị. Nhưng scan nhiều hàng thì nó lại bị sai.