您当前的位置:五五电子网电子知识单片机-工控设备义隆单片机义隆单片机PT2262无线解码程序 正文
义隆单片机PT2262无线解码程序

义隆单片机PT2262无线解码程序

点击数:7233 次   录入时间:03-04 11:41:52   整理:http://www.55dianzi.com   义隆单片机

Start(void);
void Stop(void);
u8   CurrentRead(void);
u8   RandomRead(u8 addr);
void ByteWrite(u8 addr,u8 data);
void SendByte(u8 data);
void I2c_Ack(void);
void I2c_NoAck(void);
u8   I2c_CheckAck(void);
u8   ReadByte(void);
void CommandWrite(u8 addr);
void PageWrite(u8 *data,u8 cnt,u8 BeginAddr);
void SequentialRead(u8 *data,u8 cnt,u8 BeginAddr);

#define SDA R60
#define SCL R61

u8 array[2];




////////////////////////////////////////////////////////////
// read Routine

u8 ReadByte(void)
{
    u8 i;
    u8 data;
    
    P6CR |= 0x01;                         //change to input
    for (i=0;i<8;i++)
    {
        data <<= 1;                  
        if (SDA)    data++;
        nop();
        SCL = 1;
        nop();
        nop();
        SCL = 0;                    
    }
    P6CR &= 0Xfe;             // change to output 
    return data;
}

u8 CurrentRead(void)
{
    u8 data;
    u8 ack;
    
    Start();
    SendByte(0xA1);           // read command
    ack = I2c_CheckAck();
    data = ReadByte();
    I2c_NoAck();
    Stop();
    
    return data;
}

u8 RandomRead(u8 addr)
{
    u8 data;
    
    CommandWrite(addr);    
    data = CurrentRead();
    return data;    
}

void SequentialRead(u8 *data,u8 cnt,u8 BeginAddr)
{
    u8 i;
    u8 ack;
    
    CommandWrite(BeginAddr);    
    Start();
    SendByte(0xA1);           // read command
    ack = I2c_CheckAck();
    
    for (i=0;i<cnt;i++,data++)
    {
        *data = ReadByte();
        I2c_Ack();
    }
    I2c_NoAck();
    Stop();            
    
}

////////////////////////////////////////////////////////////
// send Byte data via i2c

void CommandWrite(u8 addr)
{
    u8 ack;
    
    Start();
    SendByte(0xA0);
    ack = I2c_CheckAck();
    nop();
    SendByte(addr);
    ack = I2c_CheckAck();
    nop();    
}


void ByteWrite(u8 addr,u8 data)
{
    u8 ack;
    
    CommandWrite(addr);
    SendByte(data);    
    ack = I2c_CheckAck();
    nop();
    Stop();    
}

void PageWrite(u8 *data,u8 cnt,u8 BeginAddr)
{
    u8 i;
    u8 ack;
    
    CommandWrite(BeginAddr);
    for (i=0;i<cnt;i++,data++)
    {
        SendByte((u8)*data);    
        ack = I2c_CheckAck();        
    }    
    Stop();
}

////////////////////////////////////////////////////////////
// send 8 bit data

void SendByte(u8 data)
{
    u8 i;
    
    for(i=0;i<8;i++)      
    {           
        if(data&0x80)
        {
            SDA = 1;      // sda = 1
        }else{
            SDA = 0;      // sda = 0
        }
        nop();
        nop();
        SCL = 1;
        nop();
        nop();
        SCL = 0;
        data <<= 1;
    }
}

////////////////////////////////////////////////////////////
// acknowLEDge of i2c

void I2c_Ack(void)
{
    SDA = 0;
    nop();
    SCL = 1;
    nop();
    nop();
    SCL = 0;
}

void I2c_NoAck(void)
{
    SDA = 1;
    nop();
    SCL = 1;
    nop();

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]  下一页


本文关键字:单片机  无线  程序  义隆单片机单片机-工控设备 - 义隆单片机