📄 dis_key.c
字号:
}
}
unsigned char comtx(unsigned char nData)
{/*函数返回:1:成功 ; 0:不成功*/
unsigned int i=0;
TI = 0;
SBUF = nData;
while ((TI==0)&&(i++<2000));
return TI;
}
void spidout ( unsigned char ch )
{
unsigned char xi ,yi ;
for ( xi=0; xi<8; xi++)
{
if ((ch & 0x80) == 0)
MOSI = 0;
else
MOSI = 1;
SCK = 1;
for ( yi = 0x00 ; yi < 200 ; yi ++ ) ;
ch = ch << 1;
SCK = 0;
for ( yi = 0x00 ; yi < 200 ; yi ++ ) ;
}
}
unsigned char spidin()
{
unsigned char xi , yi;
unsigned char ch = 0 ;
for ( xi=0; xi<7; xi++)
{
//MISO = 1;
if (MISO == 1)
ch ++;
SCK = 1;
ch = ch << 1;
for ( yi = 0x00 ; yi < 200 ; yi ++ ) ;
SCK = 0;
for ( yi = 0x00 ; yi < 200 ; yi ++ ) ;
}
MISO = 1;
if (MISO == 1)
ch ++;
return ch;
}
void spiwcmd ( unsigned char cmd )
{
unsigned char xi ;
//SPIEN = 1 ; //允许SPI总线
CSPI = 0 ; // nss = 0
SCK = 0;
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
spidout(cmd);
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
CSPI = 1 ;
//SPIEN = 0 ;
}
void spiwsts ( void )
{
unsigned char xi ;
//SPIEN = 1 ; //允许SPI总线
CSPI = 0 ; // nss = 0
SCK = 0;
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
spidout(SPI_WRSR);
spidout(0x08);
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
CSPI = 1 ;
//SPIEN = 0 ;
}
/*unsigned char spirsts ( void )
{
unsigned char xi ;
unsigned char ch;
//SPIEN = 1 ;
CSPI = 0 ; // nss = 0
SCK = 0;
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
spidout(SPI_RDSR);
ch = spidin();
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
CSPI = 1 ;
return ch ;
}*/
void wrbytespi ( unsigned int address , unsigned char dat )
{
unsigned char xi ;
spiwcmd ( SPI_WREN ) ;
//SPIEN = 1 ; // 允许SPI总线
CSPI = 0 ; // nss = 0
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
//SPIF = 0;
spidout(SPI_WRITE) ;
spidout(address / 0x100) ;
spidout(address % 0x100) ;
spidout(dat) ;
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
CSPI = 1 ;
//SPIEN = 0 ;
//SPIF = 0 ;
}
unsigned char rdbytespi ( unsigned int address )
{
unsigned char xi,dat ;
//SPIEN = 1 ; // 允许SPI总线
CSPI = 0 ; // nss = 0
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
//SPIF = 0;
spidout(SPI_READ) ;
spidout(address / 0x100) ;
spidout(address % 0x100) ;
dat = spidin();
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
CSPI = 1 ;
//SPIEN = 0 ;
//SPIF = 0 ;
return dat ;
}
void send(unsigned char l)
{
int i,check0;
data_tx[0]=0xeb; data_tx[1]=0x90;
check0=0xeb;
for(i=1;i<l-1;i++) check0=check0^data_tx[i];
data_tx[l-1]=check0;
for(i=0;i<l;i++) comtx(data_tx[i]);
}
void rx_run()
{
unsigned char i;
switch(data_rx[3])
{
case 0x03: data_rx[3]=0;
for(i=0;i<8;i++) { dataN[i]=data_rx[2*i+9]+data_rx[2*i+10]*256; }
for(i=0;i<2;i++)
{ bhzt[i]=data_rx[i+5];
kgzt[i]=data_rx[i+7];
}
break;
case 0xc0: data_rx[3]=0;
for(i=0;i<20;i++) { dz[i]=data_rx[2*i+5]+data_rx[2*i+6]*256; }
for(i=0;i<4;i++) { kzz[i]=data_rx[i+40]; }
break;
case 0xd0: data_rx[3]=0;
if(data_rx[5]==0x12)
{ page=36; page_change=1; }
break;
}
}
/*
void tx(unsigned char cmd)
{
switch(cmd)
{
case 1: data_tx[3]=1; send(7); break;
}
}
*/
void int_com() interrupt 4
{
unsigned char i,check1;
//unsigned int run_int;
if(RI==1)
{
rx1=rx0;
rx0=SBUF;
if((rx1==0xeb)&(rx0==0x90)) flag_rx=1;
if(flag_rx==1) { p_rx++; data_rx[p_rx]=rx0;}
if(p_rx>(data_rx[4]+4))
{ /* LED8=1;CLED = 0;CLED = 1; */
data_led=data_led^1;
check1=0xeb;
for(i=1;i<p_rx;i++) check1=check1^data_rx[i];
if(check1!=rx0) data_rx[3]=0;
flag_rx=0; p_rx=0;
}
RI=0;
}
TI=0;
}
void LCD_CLR()
{
unsigned int i,j;
for(i=0;i<6000;i++);
for(i=0;i<4;i++) for(j=0;j<16;j++) disp816(j*8,i*2,' ');
}
void page_mm()
{
if(page_change==1)
{
LCD_CLR();
disp_chn(8,0,110); disp_chn(8,2,111); disp_chn(8,4,112); disp_chn(8,6,113); //图元
disp816(32,0,'I'); disp816(40,0,'A'); disp816(56,0,'='); disp816(80,0,'.'); disp816(104,0,'A');
disp816(40,2,'P'); disp816(56,2,'='); disp816(80,2,'.'); disp816(104,2,'K'); disp816(112,2,'w');
page_change=0;
}
disp816(64,0,'0'+dataN[0]/1000); disp816(72,0,'0'+dataN[0]%1000/100); //
disp816(88,0,'0'+dataN[0]%100/10); disp816(96,0,'0'+dataN[0]%10);
disp816(64,2,'0'+dataN[2]/1000); disp816(72,2,'0'+dataN[2]%1000/100); //
disp816(88,2,'0'+dataN[2]%100/10); disp816(96,2,'0'+dataN[2]%10);
if(kgzt[1] & b1_msk) { disp_chn(8,2,115); }//开关合
else if(kgzt[1] & b2_msk) { disp_chn(8,2,111); }//开关分
else { disp_chn(8,2,111); }
if(kgzt[0] & b0_msk) { disp_chn(8,0,114); }
else { disp_chn(8,0,110); }
if(kgzt[0] & b1_msk) { disp_chn(8,4,116); }
else { disp_chn(8,4,112); }
KEY8=0xff; KEY9=1;
if((KEY8 !=0xff)||(KEY9 == 0))
{ page = 1; page_change = 1; }
}
void page1()
{
if(page_change==1)
{
LCD_CLR();
disp_chn(16,0,13); disp_chn(32,0,14);//数据
disp_chn(16,2,15); disp_chn(32,2,16);//状态
disp_chn(16,4,17); disp_chn(32,4,18);//定值
disp_chn(16,6,7); disp_chn(32,6,8); //控制
disp_chn(80,0,83); disp_chn(96,0,84);//事件
disp_chn(80,2,85); disp_chn(96,2,106);//复归
disp_chn(80,4,94); disp_chn(96,4,95);//版本
page_change=0; p_x=8; p_y=0;
}
KEY8=0xff; KEY9=1;
if((KEY8==~8)&&(p_y>=2)) { disp816(p_x,p_y,' '); p_y=p_y-2; }
else if((KEY8==~32)&&(p_x==8)&&(p_y<=4)) { disp816(p_x,p_y,' '); p_y=p_y+2; }
else if((KEY8==~32)&&(p_x==72)&&(p_y<=2)) { disp816(p_x,p_y,' '); p_y=p_y+2; }
else if((KEY8==~32)&&(p_x==8)&&(p_y==6)) { disp816(p_x,p_y,' '); p_x=72;p_y=0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -