📄 access.c
字号:
#define __ACCESS__
#include "Header\INCLUDE.H"
#if (MCU_TYPE == MCU_MTV512)
///////////////////////////////////////////////////////////////////////
// SCL Processor
///////////////////////////////////////////////////////////////////////
void MCU_WriteI2cScl(bit Status)
{
bIIC_SCL = Status;
}
///////////////////////////////////////////////////////////////////////
// SDA Processor
///////////////////////////////////////////////////////////////////////
void MCU_WriteI2cSda(bit Status)
{
bIIC_SDA = Status;
}
bit MCU_ReadI2cSda(void)
{
return (bIIC_SDA);
}
///////////////////////////////////////////////////////////////////////
// RTD Reset Processor
///////////////////////////////////////////////////////////////////////
#if (RESET_TYPE == RESET_IN)
void MCU_WriteRtdReset(bit Status)
{
bRTD_RST = Status;
}
bit MCU_ReadRtdReset(void)
{
return (bRTD_RST);
}
#endif
///////////////////////////////////////////////////////////////////////
// RTD SDIO Processor
///////////////////////////////////////////////////////////////////////
/*
void MCU_WriteRtdSdio(bit Status)
{
bRTD_SDIO_0 = Status;
}
bit MCU_ReadRtdSdio(void)
{
return(bRTD_SDIO_0);
}
///////////////////////////////////////////////////////////////////////
// RTD Sclk Processor
///////////////////////////////////////////////////////////////////////
void MCU_WriteRtdSclk(bit Status)
{
bRTD_SCLK = Status;
}
///////////////////////////////////////////////////////////////////////
// RTD Scsb Processor
///////////////////////////////////////////////////////////////////////
void MCU_WriteRtdScsb(bit Status)
{
bRTD_SCSB = Status;
}
*/
///////////////////////////////////////////////////////////////////////
// VIDEO POWER Processor
///////////////////////////////////////////////////////////////////////
#if (VIDEO_CHIP != VDC_NONE)
void MCU_WriteVideoPower(bit Status)
{
bVDC_PWR = Status;
}
#endif
///////////////////////////////////////////////////////////////////////
// PANEL POWER Processor
///////////////////////////////////////////////////////////////////////
void MCU_WritePanelPower(bit Status)
{
bPANEL_PWR = Status;
}
///////////////////////////////////////////////////////////////////////
// BACKLIGHT POWER Processor
///////////////////////////////////////////////////////////////////////
void MCU_WriteBacklightPower(bit Status)
{
bLIGHT_PWR = (Status);
}
///////////////////////////////////////////////////////////////////////
// VGA CONNECT Processor
///////////////////////////////////////////////////////////////////////
bit MCU_ReadVgaConnect(void)
{
return (bVGA_CONNECT);
}
#endif
void BitDly(void)
{
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
}
void I2CRead(unsigned char addr, unsigned char index, unsigned char count)
{
unsigned char n;
if (count)
{
I2CSendAddr(addr, index, 0);
I2CSendAddr(addr, 0, 1);
count = count - 1;
for (n = 0; n < count; n++) Data[n] = I2CGetByte(0);
Data[count] = I2CGetByte(1);
I2CSendStop();
}
}
void I2CWrite(unsigned char *array)
{
unsigned char n, len;
if (3 <= array[0])
{
len = array[0];
I2CSendAddr(array[1], array[2], 0);
for (n = 3; n < len; n++) I2CSendByte(array[n]);
I2CSendStop();
}
}
unsigned char I2CGetByte(unsigned char ack)
{
unsigned char r, m;
r = 0;
#if (MCU_TYPE == MCU_STD8051)
for (m = 0; m < 8; m++) // Each bit at a time, MSB first
{
bIIC_SCL = 1;
BitDly(); // Delay
r = (r << 1) | bIIC_SDA;
bIIC_SCL = 0;
BitDly(); // Delay
}
// Send ACK according to 'ack'
bIIC_SDA = (bit)(ack & 0x01);
BitDly(); // Delay
bIIC_SCL = 1;
BitDly(); // Delay
bIIC_SCL = 0;
BitDly(); // Delay
bIIC_SDA = 1;
#else
for (m = 0; m < 8; m++) // Each bit at a time, MSB first
{
MCU_WriteI2cScl(_HIGH);
BitDly(); // Delay
r = (r << 1) | MCU_ReadI2cSda();
MCU_WriteI2cScl(_LOW);
BitDly(); // Delay
}
// Send ACK according to 'ack'
MCU_WriteI2cSda((bit)(ack & 0x01));
BitDly(); // Delay
MCU_WriteI2cScl(_HIGH);
BitDly(); // Delay
MCU_WriteI2cScl(_LOW);
BitDly(); // Delay
MCU_WriteI2cSda(_HIGH);
#endif
return (r);
}
void I2CSendByte(unsigned char send)
{
unsigned char m;
#if (MCU_TYPE == MCU_STD8051)
for (m = 0; m < 8; m++)
{
bIIC_SDA = (bit)(send & 0x80); // Send each bit, MSB first
BitDly();
bIIC_SCL = 1;
BitDly();
bIIC_SCL = 0;
send = send << 1;
}
bIIC_SDA = 1;
bIIC_SCL = 1;
BitDly();
bIIC_SCL = 0;
BitDly();
#else
for (m = 0; m < 8; m++)
{
MCU_WriteI2cSda((bit)(send & 0x80)); // Send each bit, MSB first
BitDly();
MCU_WriteI2cScl(_HIGH);
BitDly();
MCU_WriteI2cScl(_LOW);;
send = send << 1;
}
MCU_WriteI2cSda(_HIGH);
MCU_WriteI2cScl(_HIGH);
BitDly();
MCU_WriteI2cScl(_LOW);;
BitDly();
#endif
}
void I2CSendAddr(unsigned char addr, unsigned char index, unsigned char rd)
{
#if (MCU_TYPE == MCU_STD8051)
bIIC_SCL = 1;
bIIC_SDA = 0; // Start
BitDly();
bIIC_SCL = 0;
I2CSendByte(addr + rd); // Send address byte
if (0 == rd) I2CSendByte(index); // Send index byte
#else
MCU_WriteI2cScl(_HIGH);
MCU_WriteI2cSda(_LOW); // Start
BitDly();
MCU_WriteI2cScl(_LOW);;
I2CSendByte(addr + rd); // Send address byte
if (0 == rd) I2CSendByte(index); // Send index byte
#endif
}
void I2CSendStop(void)
{
#if (MCU_TYPE == MCU_STD8051)
bIIC_SDA = 0;
BitDly();
bIIC_SCL = 1;
BitDly();
bIIC_SDA = 1;
BitDly();
#else
MCU_WriteI2cSda(_LOW);
BitDly();
MCU_WriteI2cScl(_HIGH);
BitDly();
MCU_WriteI2cSda(_HIGH);
BitDly();
#endif
}
unsigned char RTDGetByte(void)
{
#if (PARALLEL_PORT)
bRTD_SCLK = 1;
bRTD_SCLK = 0;
r0 = bRTD_SDIO_0;
r1 = bRTD_SDIO_1;
r2 = bRTD_SDIO_2;
r3 = bRTD_SDIO_3;
bRTD_SCLK = 1;
bRTD_SCLK = 0;
r4 = bRTD_SDIO_0;
r5 = bRTD_SDIO_1;
r6 = bRTD_SDIO_2;
r7 = bRTD_SDIO_3;
bRTD_SCLK = 1;
/*
bRTD_SCLK = 1;
bRTD_SCLK = 0;
Reg = P0 & 0x0f;
bRTD_SCLK = 1;
bRTD_SCLK = 0;
Reg = Reg | ((P0 & 0x0f) << 4);
bRTD_SCLK = 1;
*/
#else // Serial port
bRTD_SCLK = 1;
bRTD_SCLK = 0;
r0 = bRTD_SDIO_0;
bRTD_SCLK = 1;
bRTD_SCLK = 0;
r1 = bRTD_SDIO_0;
bRTD_SCLK = 1;
bRTD_SCLK = 0;
r2 = bRTD_SDIO_0;
bRTD_SCLK = 1;
bRTD_SCLK = 0;
r3 = bRTD_SDIO_0;
bRTD_SCLK = 1;
bRTD_SCLK = 0;
r4 = bRTD_SDIO_0;
bRTD_SCLK = 1;
bRTD_SCLK = 0;
r5 = bRTD_SDIO_0;
bRTD_SCLK = 1;
bRTD_SCLK = 0;
r6 = bRTD_SDIO_0;
bRTD_SCLK = 1;
bRTD_SCLK = 0;
r7 = bRTD_SDIO_0;
bRTD_SCLK = 1;
#endif
return Reg;
}
void RTDSendByte(unsigned char send)
{
#if (PARALLEL_PORT)
bRTD_SDIO_0 = (bit)(send & 0x01);
bRTD_SDIO_1 = (bit)(send & 0x02);
bRTD_SDIO_2 = (bit)(send & 0x04);
bRTD_SDIO_3 = (bit)(send & 0x08);
bRTD_SCLK = 1;
bRTD_SCLK = 0;
bRTD_SDIO_0 = (bit)(send & 0x10);
bRTD_SDIO_1 = (bit)(send & 0x20);
bRTD_SDIO_2 = (bit)(send & 0x40);
bRTD_SDIO_3 = (bit)(send & 0x80);
bRTD_SCLK = 1;
bRTD_SCLK = 0;
bRTD_SDIO_0 = 1;
bRTD_SDIO_1 = 1;
bRTD_SDIO_2 = 1;
bRTD_SDIO_3 = 1;
bRTD_SCLK = 1;
/*
unsigned char ucTemp;
ucTemp = P0 & 0xf0;
P0 = ucTemp | (send & 0x0f);
bRTD_SCLK = 1;
bRTD_SCLK = 0;
P0 = ucTemp | (send >> 4);
bRTD_SCLK = 1;
bRTD_SCLK = 0;
P0 = ucTemp | 0x0f;
bRTD_SCLK = 1;
*/
#else //serial port
bRTD_SDIO_0 = (bit)(send & 0x01);
bRTD_SCLK = 1;
bRTD_SCLK = 0;
bRTD_SDIO_0 = (bit)(send & 0x02);
bRTD_SCLK = 1;
bRTD_SCLK = 0;
bRTD_SDIO_0 = (bit)(send & 0x04);
bRTD_SCLK = 1;
bRTD_SCLK = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -