void LD_ReloadMp3Data_2() { uint32 nCurMp3Pos; uint8 val; uint8 k; nCurMp3Pos = nMp3StartPos + nMp3Pos; FLASH_CS=1; FLASH_CLK=0; FLASH_CS=0; IO_Send_Byte(W25P_FastReadData); IO_Send_Byte(((nCurMp3Pos & 0xFFFFFF) >> 16)); IO_Send_Byte(((nCurMp3Pos & 0xFFFF) >> 8)); IO_Send_Byte(nCurMp3Pos & 0xFF); IO_Send_Byte(0xFF); ucStatus = LD_ReadReg(0x06); while ( !(ucStatus&MASK_FIFO_STATUS_AFULL) && (nMp3Pos<nMp3Size) ) { val=0; for(k=0;k<8;k++) { FLASH_CLK=0; val<<=1; FLASH_CLK=1; val|=FLASH_DO; } LD_WriteReg(0x01,val); nMp3Pos++; ucStatus = LD_ReadReg(0x06); } FLASH_CS=1; FLASH_CLK=0; }
//------------------------------------------------------------------------------ void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer _DINT(); // 關閉中斷 InitTimeClock(); P1DIR |= (BIT0+BIT6+BIT3+BIT4); // Set pin to output direction P1DIR &= ~(BIT1+BIT2+BIT7); // Set pin to input direction P1OUT&=~BIT4; P1OUT&=~BIT6; //p1.6 一開始 為low P2SEL &= ~BIT6; //設定 P2.6為一般IO用途 P2DIR &= ~BIT6; //set p2.6 input ms = 0; sec = 0 ; minute = 16 ; hour = 11; day = 22; month = 12; year = 12; delay = 0; /* CCTL0 = CCIE; // CCR0 interrupt enabled CCR0 = 102; TACTL = TASSEL_2 + MC_1; // SMCLK, upmode */ _EINT(); //開始中斷 while(1){ if( (P1IN&BIT1)==BIT1 ) //----SEACLOCK 送資料出去 { sMs = ms; sSec= sec; sMinute = minute; sHour = hour; sDay = day; sMonth = month; sYear = year; //-----------------------開始送 IO_Send_Byte(sYear); IO_Send_Byte(sMonth); IO_Send_Byte(sDay); IO_Send_Byte(sHour); IO_Send_Byte(sMinute); IO_Send_Byte(sSec); IO_Send_Byte(sMs); } if((P1IN&BIT7)==BIT7 ) { _DINT(); // 關閉中斷 getTime_init(); get_time(); // 獲取GPS時間字串 //----- 同步處理 while((P2IN&BIT6)!=BIT6); // 等待 SeaScan 之 1pps 由H變L while((P2IN&BIT6)==BIT6); //因為 SeaScan 之 1pps已經與GPS同步過 ms = -1; //--當GPS由L變H 開始數 直到SEASCAN的PluS到來 //--新版本不需要由PIN19同步 _EINT(); //開始中斷 } } }