📄 复件.c
字号:
*p1=E7TIMES; /*给方向后松闸延时0397H*/
p1++;
*p1=E4TIMES; /*撤速后抱闸延时0398H*/
p1++;
*p1=E2TIMES; /*松闸后输出速度0399H*/
p1++;
*p1=E6TIMES; /*抱闸后撤方向延时039AH*/
p1++;
*p1=FIRST_LOU; /*楼层偏置039BH*/
p1++;
*p1=RUN_STATION; /*基站楼层039CH*/
p1++;
*p1=FLOOR_FIRE; /*消防楼层039DH*/
p1++;
*p1=SPECIAL; /*特殊服务楼层039EH*/
p1++;
*p1=PASSWORD1; /*密码039FH*/
p1++;
*p1=SP1_PULSE; /*中速换速脉冲03A0H--低8位*/
p1++;
*p1=SP1_PULSE; /*中速换速脉冲03A1H--高8位*/
*p1>>=8;
p1++;
*p1=SP2_PULSE; /*高速换速脉冲03A2H--低8位*/
p1++;
*p1=SP2_PULSE; /*高速换速脉冲03A3H--高8位*/
*p1>>=8;
p1++;
*p1=SP3_PULSE; /*超高速换速脉冲03A4H--低8位*/
p1++;
*p1=SP3_PULSE; /*超高速换速脉冲03A5H--高8位*/
*p1>>=8;
}
p1=(unsigned int*)0x03A6;
*p1=RUN_NUM; /*运行次数03A6H--低8位*/
p1++;
*p1=RUN_NUM; /*运行次数03A7H--高8位*/
*p1>>=8;
p1++;
*p1=RUN_TIME; /*运行时间03A8H--低8位*/
p1++;
*p1=RUN_TIME; /*运行时间03A9H--高8位*/
*p1>>=8;
p1++;
/*以上是实时显示数据*/
if(SCITX_FLAG==2) /*取查阅脉冲*/
{
*p1=SCI_NUM2; /*查阅楼层03AAH*/
p1++; /*p1=03AAH*/
p2=(unsigned int*)&UPPULSE1;
p2+=(SCI_NUM2-1);
*p1=*p2; /*脉冲数*/
p1++;
*p1=*p2;
*p1>>=8;
p1++;
*p1=ALL_PULSE; /*总脉冲*/
p1++;
*p1=ALL_PULSE;
*p1>>=8;
p1++;
*p1=ALL_PULSE1; /*总脉冲高位*/
p1++;
*p1=ALL_PULSE1;
*p1>>=8;
}
else if(SCITX_FLAG==5) /*取查阅故障状态*/
{
p2=(unsigned int*)&TR_STATUS;
p2+=(SCI_NUM2-1)*8;
*p1=SCI_NUM2; /*第几次故障03AAH*/
p1++;
*p1=*p2; /*故障代码*/
p1++;
p2++;
*p1=*p2; /*故障所处楼层*/
p1++;
p2++;
*p1=*p2; /*故障时间*/
p1++;
*p1=*p2;
*p1>>=8;
p1++;
p2++;
*p1=*p2; /*故障时已运行次数*/
p1++;
*p1=*p2;
*p1>>=8;
p1++;
p2++;
*p1=*p2; /*故障时电梯状态*/
}
}
void SPI_init()
{
SPICCR=0x0047; /*4:SPICLOCK上升沿输出数据下降沿输入数据无数据为低,数据字符长度为8*/
SPICTL=0x0006; /*主方式,禁止中断*/
SPIBRR=0x000F; /*1M*/
SPICCR=0x00C7;
}
void Load_Srom()
{
Cpld_Init();
for(i=1;i<=0x01FF;i++)
{
asm(" NOP ");
}
/*上电参数调入内存*/
Page_Read1(); /*读断电保存的数据*/
Page_Read2(); /*读自学习完毕保存的数据*/
Page_Read3(); /*读液晶修改后保存的数据*/
LIT1=0;
LIT2=0;
LIT1SYMBOL=45;
LIT2SYMBOL=45;
LIT1TIME=0;
LIT2TIME=0;
mach=0;
k10=0;
BZTIME=0;
BZTIMESYMBOL=10;
CB1TIME=0;
CB1TIMESYMBOL=20;
mach_state=1;
/*调整参数*/
// First_adjust();/*固定参数*/
First_adj1(); /*液晶调整参数*/
b2=0x0000;
b3=0x8600;/*给EEPROM地址*/
Read_Data(); /*b1=*0x0086*/
CHECKCODE1=b1; /*读取地址0086的内容*/
b2=0x0000;
b3=0x8800;/*给EEPROM地址*/
Read_Data();
CHECKCODE2=b1; /*读取地址0088的内容*/
a2=0;
k4=0;
k10=0;
k11=0;
k12=0;/*触点粘连限制电梯启动标志*/
k26=0;
b13=0;
k16=0;
k18=0;
zz1=0;
zz2=0;
yj=0;
IA_BUF=IA_BUF1;
IB_BUF=IB_BUF1;
IE_BUF=IE_BUF1;
IF_BUF=IF_BUF1;
IN_AB=IN_BB=IN_CB=0;
STATEBOX=0;
First_Memory();
b2=0x0000;
b3=0x8000;
Read_Data();
i9=b1; /*读取地址0080的内容*/
Write_Enable();
Read_Status();
while(~b1&0x0002)
{
Read_Status();
}
b2=0x0000;
b3=0x8000;
b1=0x0000;
Write_Data(); /*往地址0080里写b1=0*/
JSBAOY=v3;
JSBAOY&=0x00ff;
JSBAOY<<=8;
JSBAOY&=0xff00;
JSBAOY|=v2;
BYQD=0;
for(i=1;i<=0x00FF;i++)
{
asm(" NOP ");
}
}
void Save_Srom()
{
if(JOPSYMBOL&0x0001) /*是否参数已保存*/
{
DIS_SROM();
}
else
{
Save_Data1();
Write_Enable();
Read_Status();
while(~b1&0x0002) /*写使能是否有效*/
{
Read_Status();
}
b2=0x0000;
b3=0x8000;
b1=0x0600;
Write_Data(); /*往8000写入0006*/
JOPSYMBOL|=0x0001; /*置参数已保存标志*/
Watch_dog();
}
}
void Tiao_Shi()
{
Write_Enable();
Read_Status();
while(~b1&0x0002)
{
Read_Status();
}
b2=0x0000;
b3=0x8600;
b1=0x8600;
Write_Data();
Write_Enable();
Read_Status();
while(~b1&0x0002)
{
Read_Status();
}
b2=0x0000;
b3=0x8800;
b1=0x8800;
Write_Data();
}
void Tiao_Shi1()
{
Write_Enable();
Read_Status();
while(~b1&0x0002)
{
Read_Status();
}
b2=0x0000;
b3=0x8200;
b1=0x0800;
Write_Data();
}
void Save_Data1()
{
p1=(unsigned int*)0x0210; /*所需保存数据首地址*/
b2=0x0100;
b3=0x0000;
for(k=1;k<=6;k++) /* 共保存192个字节6*32 */
{
Watch_dog();
Write_Enable();
Read_Status();
while(~b1&0x0002)
{
Read_Status();
}
Page_Write();
b3+=0x2000;
}
}
void Save_Data2()
{
p1=(unsigned int*)0x0280; /*所需保存数据首地址*/
b2=0x0200;
b3=0x0000;
for(k=1;k<=5;k++) /* 共保存160个字节5*32 */
{
Write_Enable();
Read_Status();
while(~b1&0x0002)
{
Read_Status();
}
Page_Write();
b3+=0x2000;
}
}
void Save_Data3()
{
p1=(unsigned int*)0x02D0; /*所需保存数据首地址*/
b2=0x0300;
b3=0x0000;
for(k=1;k<=3;k++) /* 共保存96个字节3*32 */
{
Write_Enable();
Read_Status();
while(~b1&0x0002)
{
Read_Status();
}
Page_Write();
b3+=0x2000;
}
}
void Save_Data4()
{
p1=(unsigned int*)0x0280; /*所需保存数据首地址*/
b2=0x0200;
b3=0x0000;
for(j=1;j<=3;j++)
{
Write_Enable();
Read_Status();
while(~b1&0x0002)
{
Read_Status();
}
b1=*p1;
Write_Data();
Write_Enable();
Read_Status();
while(~b1&0x0002)
{
Read_Status();
}
b3+=0x0100;
b1=*p1;
b1<<=8;
Write_Data();
b3+=0x0100;
p1++;
}
}
/*读状态寄存器*/
void Read_Status()
{
EN_SROM(); /*ROM使能*/
for(i=1;i<15;i++)
{
asm(" NOP ");
}
SPITXBUF=0x0500;
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF; /*清中断标志*/
for(i=1;i<10;i++)
{
asm(" NOP ");
}
SPITXBUF=0;
while((SPISTS&0x0040)==0)
{}
b1=SPIRXBUF;
for(i=1;i<10;i++)
{
asm(" NOP ");
}
DIS_SROM(); /*关闭ROM使能*/
for(i=1;i<15;i++)
{
asm(" NOP ");
}
}
/*写使能*/
void Write_Enable()
{
EN_SROM(); /* /CS应该为低电平*/
for(i=1;i<15;i++)
{
asm(" NOP ");
}
SPITXBUF=0x0600;
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
for(i=1;i<10;i++)
{
asm(" NOP ");
}
DIS_SROM();
for(i=1;i<15;i++)
{
asm(" NOP ");
}
}
/*写状态寄存器*/
void Write_Status()
{
EN_SROM();
for(i=1;i<15;i++)
{
asm(" NOP ");
}
SPITXBUF=0x0100; /*写状态寄存器*/
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF; /*清中断标志*/
SPITXBUF=b1;
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF; /*清中断标志*/
for(i=1;i<10;i++)
{
asm(" NOP ");
}
DIS_SROM();
for(i=1;i<15;i++)
{
asm(" NOP ");
}
asm(" NOP ");
}
/*按页写-只可以写32个字节*/
void Page_Write()
{
EN_SROM();
for(i=1;i<15;i++)
{
asm(" NOP ");
}
SPITXBUF=0x0200;
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
SPITXBUF=b2; /*高位地址*/
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
SPITXBUF=b3; /*低位地址*/
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
for(j=1;j<=16;j++)
{
b1=*p1;
SPITXBUF=b1; /*数据*/
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
b1=*p1;
b1<<=8;
SPITXBUF=b1; /*数据*/
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
p1++;
}
for(i=1;i<10;i++)
{
asm(" NOP ");
}
DIS_SROM();
for(i=1;i<15;i++)
{
asm(" NOP ");
}
Read_Status();
while(b1&0x0001)
{
Read_Status();
}
asm(" NOP ");
}
/*写数据*/
void Write_Data()
{
EN_SROM();
for(i=1;i<15;i++)
{
asm(" NOP ");
}
SPITXBUF=0x0200;
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
SPITXBUF=b2; /*高位地址*/
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
SPITXBUF=b3; /*低位地址*/
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
SPITXBUF=b1; /*数据*/
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
for(i=1;i<10;i++)
{
asm(" NOP ");
}
DIS_SROM();
for(i=1;i<15;i++)
{
asm(" NOP ");
}
Read_Status();
while(b1&0x0001)
{
Read_Status();
}
asm(" NOP ");
}
void Page_Read1()
{
b2=0x0100;
b3=0x0000;
b8=96;
p1=(unsigned int*)0x0210;
Page_Read();
}
void Page_Read2()
{
b2=0x0200;
b3=0x0000;
b8=76;
p1=(unsigned int*)0x0280;
Page_Read();
}
void Page_Read3()
{
b2=0x0300;
b3=0x0000;
b8=48;
p1=(unsigned int*)0x02D0;
Page_Read();
}
/*连续读数据-/CS拉高则停止读*/
void Page_Read()
{
EN_SROM();
for(i=1;i<15;i++)
{
asm(" NOP ");
}
SPITXBUF=0x0300;
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
SPITXBUF=b2; /*高位地址*/
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
SPITXBUF=b3; /*低位地址*/
while((SPISTS&0x0040)==0)
{}
b=SPIRXBUF;
for(j=1;j<=b8;j++) /*load 88 words from serial EEprom*/
{
for(i=1;i<10;i++)
{
asm(" NOP ");
}
SPITXBUF=0;
while((SPISTS&0x0040)==0)
{}
b1=SPIRXBUF;
*p1=b1;
*p1<<=8; /*取高8位*/
for(i=1;i<10;i++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -