📄 protocol.c
字号:
#include "Include.H"
const struct devinfo_t stDevInfo[] =
{
//Devices which support Page Programming.
{M8515 , DEV_TWD3 | DEV_POLL | PAGE0X20},
// {M8515B , DEV_TWD0 | DEV_POLL | PAGE0X20},
{M103 , DEV_TWD2 | DEV_POLL | PAGE0X80},
{M603 , DEV_TWD2 | DEV_POLL | PAGE0X80},
{M128 , DEV_TWD3 | DEV_POLL | PAGE0X80},
// {M128B , DEV_TWD0 | DEV_POLL | PAGE0X80},
// {M64 , DEV_TWD0 | DEV_POLL | PAGE0X80},
// {M64B , DEV_TWD0 | DEV_POLL | PAGE0X80},
{TN26 , DEV_TWD3 | DEV_POLL | PAGE0X10},
{M161 , DEV_TWD1 | DEV_POLL | PAGE0X40},
// {M161B , DEV_TWD0 | DEV_POLL | PAGE0X40},
{M163 , DEV_TWD1 | DEV_POLL | PAGE0X40},
{M83 , DEV_TWD1 | DEV_POLL | PAGE0X20},
// {M163B , DEV_TWD0 | DEV_POLL | PAGE0X40},
// {M83B , DEV_TWD0 | DEV_POLL | PAGE0X20},
// {M8535 , DEV_TWD0 | DEV_POLL | PAGE0X20},
{M32 , DEV_TWD3 | DEV_POLL | PAGE0X40},
// {M32B , DEV_TWD0 | DEV_POLL | PAGE0X40},
{M16 , DEV_TWD3 | DEV_POLL | PAGE0X40},
// {M16B , DEV_TWD0 | DEV_POLL | PAGE0X40},
{M8 , DEV_TWD3 | DEV_POLL | PAGE0X20},
// {M8B , DEV_TWD0 | DEV_POLL | PAGE0X20},
// {M169 , DEV_TWD0 | DEV_POLL | PAGE0X40},
// {M169B , DEV_TWD0 | DEV_POLL | PAGE0X40},
// {S1200A , DEV_TWD0},
// {S1200B , DEV_TWD0},
// {S1200C , DEV_TWD0},
{S1200 , DEV_TWD0},
{S2313 , DEV_TWD0 | DEV_POLL},
{S4414 , DEV_TWD0 | DEV_POLL},
{S4433 , DEV_TWD0 | DEV_POLL},
{S2333 , DEV_TWD0 | DEV_POLL},
{S8515 , DEV_TWD0 | DEV_POLL},
{S2323 , DEV_TWD0 | DEV_POLL},
{S2343 , DEV_TWD0 | DEV_POLL},
// {TN11 , DEV_TWD0 | DEV_POLL},
// {TN10 , DEV_TWD0 | DEV_POLL},
{TN12 , DEV_TWD0 | DEV_POLL},
{TN15 , DEV_TWD0 | DEV_POLL},
// {TN19 , DEV_TWD0 | DEV_POLL},
// {TN28 , DEV_TWD0 | DEV_POLL},
{S8535 , DEV_TWD0 | DEV_POLL},
{S4434 , DEV_TWD0 | DEV_POLL},
// {C8534 , DEV_TWD0 | DEV_POLL},
// {C8544 , DEV_TWD0 | DEV_POLL},
// {C1051 , DEV_TWD0 | DEV_POLL},
// {C2051 , DEV_TWD0 | DEV_POLL},
// {S8252 , DEV_TWD0 | DEV_POLL},
// {S53 , DEV_TWD0 | DEV_POLL},
{0x00 , 0x00}
};
const struct devtwd_t stDevTwd[] =
{
{TWD_FLASH , TWD_EEPROM},
{TWD_FLASH_MEGA , TWD_EEPROM_MEGA},
{TWD_FLASH_M103 , TWD_EEPROM_M103},
{TWD_FLASH_NEW , TWD_EEPROM_NEW}
};
void SendDevCode(void)
{
uint08 code, i;
for (i = 0; code = stDevInfo[i].code; i++)
{
putchar(code);
}
putchar(0x00);
}
uint08 GetDeviceFlag(uint08 device)
{
uint08 code, flag, i;
flag = 0;
for (i = 0; code = stDevInfo[i].code; i++)
{
if (code == device)
{
flag = stDevInfo[i].flag;
break;
}
}
return(flag);
}
void EnterProgramMode(uint08 device)
{
DDRB = MASK(RST) | MASK(SCK) | MASK(MOSI) | MASK(SSn);
PORTB = MASK(MISO);
//释放复位,51系列高电平复位,AVR 系列低电平复位
if (device > 0x7f) //S89 device
{
CLRB(PORTB, RST);
}
else //AVR device
{
SETB(PORTB, RST);
}
Delay1mS(50);
PORTB ^= MASK(RST); //复位器件
Delay1mS(50);
#ifdef SYNFIX
if ((device >= 0x20) && (device <= 0x7F))
{
uint08 i;
for (i = 0; i < 32; i++)
{
SPIWrite(0xAC);
SPIWrite(0x53);
if (SPIWrite(0x00) == 0x53)
{
SPIWrite(0x00);
break;
}
SPIWrite(0x00);
SPIClock(); //SPI Synchronization (fix!)
}
}
else
{
SPIWrite(0xAC);
SPIWrite(0x53);
SPIWrite(0x00);
SPIWrite(0x00);
}
#else
SPIWrite(0xAC);
SPIWrite(0x53);
SPIWrite(0x00);
SPIWrite(0x00);
#endif
Delay1mS(5);
}
#if 1
void SetLed(uint08 u08Data)
{
u08Data &= 0x03;
if (u08Data == 0x00)
{
SETB(PORTA, LED0);
}
if (u08Data == 0x01)
{
SETB(PORTA, LED1);
}
if (u08Data == 0x02)
{
SETB(PORTA, LED2);
}
}
void ClrLed(uint08 u08Data)
{
u08Data &= 0x03;
if (u08Data == 0x00)
{
CLRB(PORTA, LED0);
}
if (u08Data == 0x01)
{
CLRB(PORTA, LED1);
}
if (u08Data == 0x02)
{
CLRB(PORTA, LED2);
}
}
#else
void SetLed(uint08 u08Data)
{
u08Data &= 0x03;
switch (u08Data)
{
case 0x00:
SETB(PORTA, LED0);
break;
case 0x01:
SETB(PORTA, LED1);
break;
case 0x02:
SETB(PORTA, LED2);
break;
default:
break;
}
}
void ClrLed(uint08 u08Data)
{
u08Data &= 0x03;
switch (u08Data)
{
case 0x00:
CLRB(PORTA, LED0);
break;
case 0x01:
CLRB(PORTA, LED1);
break;
case 0x02:
CLRB(PORTA, LED2);
break;
default:
break;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -