?? main_slave_read.c
字號:
#include "p24fj128ga010.h"
#include "lcd.h"
#include "CONU2.h"
#include <string.h>
#include <stdlib.h>
#define USE_AND_OR // To enable AND_OR mask setting for I2C.
// Setup configuration bits
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & COE_OFF & FWDTEN_OFF & ICS_PGx2)
_CONFIG2( FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_HS & FNOSC_PRIPLL)
//using PLL
#define lenArray(arr) (sizeof(arr)/sizeof(arr[0]))
// calculate baud rate of I2C
#define Fosc (8000000)
#define Fcy (Fosc/2) // no PLL
#define Fsck 100000
#define I2C_BRG ((Fcy/2/Fsck)-1)
unsigned char myaddress=30, end;
unsigned char i2cdata[10];
int datasz=0;
char str[16];
int i=0;
void i2c_wit(unsigned int cnt)
{
while(--cnt)
{
asm( "nop" );
asm( "nop" );
}
}
void _ISR _SI2C1Interrupt(void)
{
_RA1=!_RA1;
if(I2C1STATbits.D_A==0)
{
end=I2C1RCV >> 1;
datasz=0;
i=0;
}
else
{
i2cdata[i]=I2C1RCV;
i++;
}
if(end==30 && i2cdata[4]==56)
{
_RA5=1;
clrLCD();
homeLCD();
sprintf(str," Get to ID [%d] ",end);
putsLCD(str);
for(i=0;i<5;i++)
{
sprintf(str,"%d ",i2cdata[i]);
putsLCD(str);
}
}
I2C1CONbits.SCLREL=1;
_SI2C1IF=0;
}
void initALL(void)
{
initLCD();
TRISAbits.TRISA0=0;
TRISAbits.TRISA1=0;
TRISAbits.TRISA2=0;
TRISAbits.TRISA3=0;
TRISDbits.TRISD6=1;
TRISDbits.TRISD7=1;
TRISAbits.TRISA7=1;
}
int main(void)
{
initALL();
clrLCD();
homeLCD();
putsLCD("RD6 to Start");
_RA0=1;
while(_RD6==1);
clrLCD();
homeLCD();
putsLCD("Waiting Data...");
_RA1=1;
//defenir endere鏾
I2C1ADD=myaddress;
//enable I2C
I2C1CON=0x8000;
I2C1CONbits.STREN=1;
I2C1BRG=I2C_BRG;
IFS1bits.SI2C1IF=0;
IPC4bits.SI2C1P=0b011;
IEC1bits.SI2C1IE=1;
while(1);
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -