PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   dsPIC - Bộ điều khiển tín hiệu số 16-bit (http://www.picvietnam.com/forum/forumdisplay.php?f=29)
-   -   Xem giúp em đoạn code truyền spi này bị lỗi chỗ nào? (http://www.picvietnam.com/forum/showthread.php?t=33096)

vn00426941 25-11-2013 03:45 PM

Xem giúp em đoạn code truyền spi này bị lỗi chỗ nào?
 
#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.

vn00426941 02-12-2013 04:46 PM

undefinedundefinedAi giúp em với. Khi giữ cố đinh giá trị a=b[1][i] và quét 1 hàng thì lại đúng đc giá trị cần hiển thị. Nhưng khi dùng vòng lặp for cho biến j vào a=b[j][i] thì nó hiển thị sai.


Múi giờ GMT. Hiện tại là 02:54 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam