📄 dj485p9k.c.bak
字号:
}
*/
;
return keystate;
}
//写EEPROM的程序
void writeeeprom(void)
{
uchar c ;//联控制数据的计数
uchar d=0;
for ( c = 1; c < testlend; c++ )
{
write=c485Buf[c];//装入数据
iic_write(d); // 址址与数量
delay1ms(100);
if(err_flag==1)
{
LcdFuc(FUA); //烧写失败!
BeepTwoSound(); //提示擒失败
SDA=0;
SCL=0;
break;
}
d++;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
// delay1ms(100);
}
asm("nop");
asm("nop");
SDA=0;
SCL=0;
}
void readeeprom(void)
{
uchar i,k;
for (i==0;i<30;i++)
{k=iic_read(i);
read[i]=k;
if(i==1)
delay1ms(50);
}
}
void BeepSound(void)
{
TRISB=0X00;
BEEP=1;
delay1ms(255);
BEEP=0;
}
void BeepTwoSound(void)
{
TRISB=0X00;
BEEP=1;
delay1ms(200);
BEEP=0;
delay1ms(150);
BEEP=1;
delay1ms(200);
BEEP=0;
}
void bjeeprom(void)
{
unsigned char bjcount=0,d=5,bjk,bjl,kk;
kk=8;
bj=1;
while(kk--)
{
bjk=read[d];
d=d+1;
bjl=c485Buf[d];
if(bjk!=bjl)
{
bj=0;
break;
}
}
}
void main(void)
{
ADCON1 = 0x07;
TRISA=0X28;
TRISB=0X00;
TRISC=0XC4;
TRISD=0X00;
TRISE=0X07;
SHOUDAO=0;
autoandsetp=1;
if (JP6==0)
autoandsetp=0;
// PORTB=0X00;
asm("NOP");
asm("NOP");
// PORTC=0X00;
// TRISD=0XFF;
Setup();
SDA_IO=0;
SCL_IO=0;
SDA=0;
SCL=0;
LKWP=1;
asm("NOP");
LKWP=0;
// write=0X88;
// iic_write(0X00); // 址址与数量
delay1ms(0x50);
readeeprom();
SDA_IO=0;
SCL_IO=0;
SDA=0;
SCL=0;
LKWP=1;
asm("NOP");
BeepSound(); //复位后要叫一声
// PORTC=0X00; //10000000
asm("NOP");
Lcdint();
asm("NOP");
LcdFuc(FU7);
asm("NOP");
if(autoandsetp==0)
LcdFuc(FU8);
else LcdFuc(FU9);
LcdFucInt();
asm("NOP");
LcdFuc(0x00);
asm("NOP");
//模拟232部分用的地址与状态初始化
cOurAddrHigh = 0x01;
cOurAddrLow = 0x01;
Rs485Initialise( cOurAddrHigh,cOurAddrLow );//打开了接收中断功能
// Rs485SendPacket(SENSOR_PING_SYNC, 0 , &cTest[0] ); //发送PING命令
while(1)
{
cPacketReady = Rs485Process(); //测试数据包是否是完整
if(cPacketReady==1)
{
if( cCommand==SENSOR_PING_SYNC) //如果发送的数据包是PING 发送PING命令
{
asm("nop");
delay1ms(1);
Rs485SendPacket(SENSOR_PING_SYNC, 0 , &cTest[0] );
cRS485State=PKT_WAIT_START;
// cCommand=
LcdFuc(FU6);
LcdFuc(FU0);
}
if (cCommand==SENSOR_POLL_CMD ) //如果收到的数据的话,进行数据处理
{
GIE=0;
asm("nop");
asm("nop");
LcdFuc(FU5);//显示当前的列
cRS485State=PKT_WAIT_START;
//数据处理 先把数据的第一个去掉,第一个数据是当前的列号,再把数据烧写到第二个体中
//先用缓存的处理再?
// Rs485GetPacket( &cCmd, &cLenOfData, &cTest[0] );
LKWP=1;
delay1ms(100);
// delay1ms(255);
writeeeprom();
SDA_IO=0;
SCL_IO=0;
SDA=0;
SCL=0;
if(err_flag==0)
{
//进行校验,如果校验不正确,再烧写一次,再校验,如果
//如果还不正确的话,就提示校验失败2007-4-18 20:21
LcdFuc(FU2);
BeepSound();
}
delay1ms(255);
LcdFuc(FU0);
asm("nop");
LKWP=0;
delay1ms(0X105);//等联控放开
if (autoandsetp==1)
{
LKWP=0;
while(1)
{
if(LKWPIN==0)
{
delay1ms(0X250);
if(LKWPIN==0)
{ break;}
}
}
SHOUDAO=0;
}//自动通行
delay1ms(0X100);
GIE=1;
// err_flag=0;
}
if (cCommand==SENSOR_CONFIG ) //结束列
{
GIE=0;
LcdFuc(FU5);
cRS485State=PKT_WAIT_START;
LcdFuc(FU3);
LKWP=1;
delay1ms(100);
asm("nop");
asm("nop");
writeeeprom();
asm("nop");
if(err_flag==0)
BeepSound();
// delay1ms(255);
// delay1ms(255);
// delay1ms(255);
LcdFuc(FU0);
delay1ms(255);
asm("nop");
LKWP=0;
delay1ms(0X105);//等联控放开
while(1)
{
if(LKWPIN==0)
{
delay1ms(0X250);
if(LKWPIN==0)
{ break;}
}
}
SHOUDAO=0;
delay1ms(0X100);
GIE=1;
}
if (cCommand==SENSOR_LKCOUNT) //联控数量
{
cRS485State=PKT_WAIT_START;
// LCDCOUNTOVER (c485Buf[0]);
LcdFuc(FU4);
asm("nop");
asm("nop");
}
if (cCommand==SENSOR_LKSZ) //联控数量
{
cRS485State=PKT_WAIT_START;
LKWP=1;
delay1ms(200);
asm("nop");
writeeeprom();
asm("nop");
BeepSound();
delay1ms(255);
asm("nop");
}
}
////////////////////////
LKWP=0;
if (autoandsetp==1) //自动运行
{
if(LKWPIN==1)
{
delay1ms(0X100);
if (LKWPIN==1)
{
if (SHOUDAO==0)
{
LKWP=1;
asm("nop");
asm("nop");
asm("nop");
SHOUDAO=0X01;
Rs485SendPacket(SENSOR_CONFIG , 0 , &cData[0] ); //发送准备好的命令
asm("nop");
}
}
}
}
if(autoandsetp==0) //手动运行
{
keyready = keyprocess(); //判断有没有按键按下了
if(keyready == run)
{
asm("nop");
cData[0]=c485Buf[0];
Rs485SendPacket(SENSOR_LKSZ , 1 , &cData[0] ); //发送准备好的命令
asm("nop");
}
if(keyready == up)
{
asm("nop");
if(c485Buf[0]>1)
cData[0]=c485Buf[0]-1;
else cData[0]=1;
Rs485SendPacket(SENSOR_LKSZ , 1 , &cData[0] ); //发送准备好的命令
asm("nop");
asm("nop");
}
/*
if(keyready==autowork)
{
Rs485SendPacket(SENSOR_CONFIG , 0 , &cData[0] ); //发送准备好的命令
asm("nop");
LcdFuc(FU1);
}
*/
if(keyready == down)
{
asm("nop");
Rs485SendPacket(SENSOR_CONFIG , 0 , &cData[0] ); //发送准备好的命令
asm("nop");
}
}
}
/*
while(1)
{
{
if (key==0)
{
GIE=0;//关了中断再说
delay1ms(10);
if (key==0)
{
for (i=0; i<8;i++)
{
putch(KKB[i]);
delay4();
}
}
asm("nop");
asm("nop");
while(1)
{
if(key==1)
{
delay1ms(10);
break;
}
}
GIE=1;
} //endif key0
}
{
if (key2==0)
{
GIE=0;//关了中断再说
delay1ms(10);
if (key2==0)
{
for (i=0; i<8;i++)
{
putch(KKE[i]);
delay4();
}
}
asm("nop");
asm("nop");
while(1)
{
if(key2==1)
{
delay1ms(10);
break;
}
}
GIE=1;
} //endif key0
}
;}
*/
// write[]={1,2,3,4,5}
// iic_write(0);/*首地址为0;连续写入5个数*/
// delay();
// delay();
// asm("goto $");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -