📄 anayserial_1.c
字号:
codebuff[7]=rxbuff[3];
codebuff[8]=rxbuff[4];
codebuff[9]=rxbuff[5];
codebuff[10]=0xd4;
codebuff[11]=0xaa;
codebuff[12]=0xd3;
codebuff[13]=0xe0;
codebuff[14]=0xb6;
codebuff[15]=0xee;
codebuff[16]=rxbuff[6];
codebuff[17]=rxbuff[7];
codebuff[18]=rxbuff[8];
codebuff[19]=rxbuff[9];
codebuff[20]=rxbuff[10];
codebuff[21]=rxbuff[11];
codebuff[22]=0xd4;
codebuff[23]=0xaa;
f_normdisp=1;
f_leddisp=0;
f_fixdisp=1;
f_t_delaywr=1;
pin_wrram=1;
}
}
}
}
}
if((f_handlesound&f_wrramover)==1)
{
f_handlesound=0;
isd_ce=1;
cnt_sound++;
tmp=length_s/2;
tp=length_s%2;
if(tp==0)
{
WDFeed();
if(cnt_sound<(tmp+1))
{
i=soundbuff[2*cnt_sound-2];
if(i==0)
{
isd_a9=0;
isd_a8=0;
}
if(i==1)
{
isd_a9=0;
isd_a8=1;
}
if(i==2)
{
isd_a9=1;
isd_a8=0;
}
if(i==3)
{
isd_a9=1;
isd_a8=1;
}
P0=soundbuff[2*cnt_sound-1];
isd_ce=0;
}
if(cnt_sound==(tmp+1))
{
cnt_sound=0;
f_wrramover=0;
}
}
}
}
}
void WDFeed(void)
{
wdi=1;
wdi=0;
}
void serial(void) interrupt 4
{
uchr tp=0;
if(RI==1)
{
RI=0;
if(f_rerx==1)
{
if(SBUF==start)
{
f_rerx=0;
cnt_rx=0;
}
}
else
{
cnt_rx++; //rxbuff[cnt_rx-1]=SBUF;
if(cnt_rx==1)
{
dispstyle=SBUF;
}
if(cnt_rx==2)//显示数据会大于256,所以用两个字节来表示数据长度
{
displength_h=SBUF;
}
if(cnt_rx==3)
{
//tp=SBUF;
displength_l=SBUF;
lengthdisp=displength_h*256+displength_l;
if(lengthdisp>384)
{
f_rerx=1;
f_transerr=1;
Tx();
}
if(lengthdisp>127)
{
f_over128=1;
}
else
{
f_over128=0;
}
}
if((cnt_rx>3)&&(cnt_rx<(lengthdisp+4)))
{
if(cnt_rx<132)
{
rxbuff[cnt_rx-4]=SBUF; //0->127
}
else
{
CHPCON|=0x10;
rxbuff2[cnt_rx-132]=SBUF; //128->384
CHPCON=0x00;
}
}
if(cnt_rx==lengthdisp+4)
{
lengthsound=SBUF;
CHPCON|=0x10;
}
if((cnt_rx>(lengthdisp+4))&&(cnt_rx<(lengthdisp+lengthsound+5)))
{
soundbuff[cnt_rx-lengthdisp-5]=SBUF;
}
if(cnt_rx==(lengthsound+lengthdisp+5))
{
rx_check=SBUF;
}
if(cnt_rx==(lengthsound+lengthdisp+6))
{
f_rerx=1;
if(SBUF==end)
{
f_anayrx=1;
}
else
{
f_transerr=1;
Tx();
}
}
}
}
if(TI==1)
{
TI=0;
if(cnt_tx==1)
{
SBUF=end;
cnt_tx=0;
f_transerr=0;
f_transsuc=0;
}
if(cnt_tx==2)
{
cnt_tx--;
if(f_transerr==1)
{
SBUF=txerr;
}
if(f_transsuc==1)
{
SBUF=txsuc;
}
}
}
}
void timer0(void) interrupt 1
{
TH0=0xfc;//定时1ms
TL0=0x66;
TR0=1;
if(f_t_delaywr==1)
{
cnt_delaywr++;
if(cnt_delaywr==10)
{
cnt_delaywr=0;
f_t_delaywr=0;
f_delaywr=1;
}
}
if(f_t_delayisd==1)
{
cnt_delayisd++;
if(cnt_delayisd==150)
{
cnt_delayisd=0;
f_t_delayisd=0;
//f_delayisd=1;
f_handlesound=1;
}
}
}
void int0(void) interrupt 0
{
if(isd_ce==0)
{
f_t_delayisd=1;
}
isd_ce=1;
}
void Tx(void)
{
cnt_tx=2;
SBUF=0x10;
}
void rom2ram_ascii(uchr x,uchr y)
{
uint tp=0;
uchr i=0;
ram_ce=0;
if(x<13)
{
for(i=0;i<16;i++)
{
tp=12*i+x-1;
nDispRam[tp]=ascii[y*16+i];
if(f_fixdisp==1)
{
if((tp==151)||(tp==163))
{
nDispRam[tp]=ascii[y*16+i]|0x03;
}
}
}
}
else
{
for(i=0;i<16;i++)
{
tp=12*(i+16)+x-1-12;
nDispRam[tp]=ascii[y*16+i];
if(f_fixdisp==1)
{
if((tp==343)||(tp==355))
{
nDispRam[tp]=ascii[y*16+i]|0x03;
}
}
}
}
ram_ce=1;
}
void rom2ram_hanzi(uchr x,ulng y)
{
uchr tp=0,i=0,j=0,m=0;
uint temp=0;
if((y<0x40000)&&(y>0x2ffff))
{
m=3;
rom_a17=1;
rom_a16=1;
}
if((y<0x30000)&&(y>0x1ffff))
{
m=2;
rom_a17=1;
rom_a16=0;
}
if((y<0x20000)&&(y>0xffff))
{
m=1;
rom_a17=0;
rom_a16=1;
}
if((y<0x10000))
{
m=0;
rom_a17=0;
rom_a16=0;
}
temp=y-m*65536;
for(i=0;i<32;i++)
{
j=i/2;
rom_ce=0;
tp=XBYTE[temp+i];
rom_ce=1;
if((i%2)==0)
{
if(x<13)
{
ram_ce=0;
nDispRam[12*j+x-2]=tp;
}
else
{
ram_ce=0;
nDispRam[12*(j+16)+x-2-12]=tp;
}
}
if((i%2)==1)
{
if(x<13)
{
ram_ce=0;
nDispRam[12*j+x-1]=tp;
}
else
{
ram_ce=0;
nDispRam[12*(j+16)+x-1-12]=tp;
}
}
ram_ce=1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -