?? jh.c
字號:
//********************************************************************
//叫號系統窗口屏
//********************************************************************
#include<reg51.h>
#include<stdio.h>
#include<absacc.h>
#include <intrins.h>
#include<string.h>
#include<bao.h>
void y6()
{
P2=0xc0;
P2=0x00;
}
//顯示紅字
void row_r()
{
{
or1=d7;
og1=0;
pk=0;
pk=1;
or1=d6;
pk=0;
pk=1;
or1=d5;
pk=0;
pk=1;
or1=d4;
pk=0;
pk=1;
or1=d3;
pk=0;
pk=1;
or1=d2;
pk=0;
pk=1;
or1=d1;
pk=0;
pk=1;
or1=d0;
pk=0;
pk=1;
}
}
void init()
{
IE=0x90;
TMOD=0x20; //33M/0xEE;
TH1=0xfa;//0xfd;//-11.0592//0xf4;//-22.1184//////////////9600
TR1=1;
SCON=0xf0;//SM2=0//全部接收//0x50;
EA=1;
ES=1;
Flag=0;
P1=0x00;//InceptScr/44;
y6();
CodeH[0]=CodeL[0]=Windows[0]=0;
CodeH[1]=CodeL[1]=Windows[1]=0;
CodeH[2]=CodeL[2]=Windows[2]=0;
CodeH[1]=CodeL[3]=Windows[3]=0;
CodeH[4]=CodeL[4]=Windows[4]=0;
}
void receive(void) interrupt 4 using 3
{
uchar i,TempData,Address;
uint Addr,Code;
le=1;
P1=0xd0;
le=0;
Address=P0;
le=1;
P1=0xf0;
le=0;
Address=~Address;
if (RI)
{
RI=0;
TempData=SBUF;//接收第一個字節
if (TempData>0x7f && TempData<0xf0)//地址數據位
{
{
SM2=0;
{
Address2=_getkey();//地址第二字節
if (Address2!=0xff)return;
MainAdd1=_getkey();//主機高
if (MainAdd1!=0xfd)return;
MainAdd2=_getkey();//主機低
if (MainAdd2!=0xff)return;
Answer=_getkey();//應答信號
if (Answer!=0x09)return;
for (i=4;i>1;i--)
{
CodeH[i]=CodeH[i-1];
}
CodeH[0]=_getkey();//號碼高
for (i=4;i>1;i--)
{
CodeL[i]=CodeL[i-1];
}
CodeL[0]=_getkey();//號碼低
for (i=4;i>1;i--)
{
Windows[i]=Windows[i-1];
}
Windows[0]=_getkey();//窗口號
Team=_getkey();//隊列號
Flag=1;
SM2=1;
}
}
}
else
{
return;
}
//處理接收到的數據
{
Code=CodeH[Address-1]*256+CodeL[Address-1];
Addr=(Code/10000+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][3]=CBYTE[0xe800+Addr+i];
}
Addr=(((Code%10000)/1000)+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][4]=CBYTE[0xe800+Addr+i];
}
Addr=((Code%1000)/100+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][5]=CBYTE[0xe800+Addr+i];
}
Addr=((Code%100)/10+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][6]=CBYTE[0xe800+Addr+i];
}
Addr=(Code%10+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][7]=CBYTE[0xe800+Addr+i];
}
Addr=((Windows[Address-1]%100)/10+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][16]=CBYTE[0xe800+Addr+i];
}
Addr=((Windows[Address-1]%10)+0x30)*16;
for (i=0;i<16;i++)
{
Buffer[i][17]=CBYTE[0xe800+Addr+i];
}
}
}
}
void FlashShow()
{
uchar i,j,k;
uint m;
for (k=0;k<5;k++)
{
for (m=0;m<50;m++)
{
for (i=0;i<16;i++)
{
le=1;
for (j=0;j<Width*2;j++)
{
bd=Buffer[i][j];
row_r();
}
oe=1;
latch=0;
latch=1;
P1=0xf0|i;
oe=0;
le=0;
}
}
for (m=0;m<50;m++)
{
for (i=0;i<16;i++)
{
le=1;
for (j=0;j<Width*2;j++)
{
bd=~Buffer[i][j];
row_r();
}
oe=1;
latch=0;
latch=1;
P1=0xf0|i;
oe=0;
le=0;
}
}
}
}
void StaticShow()
{
uchar i,j;
uint m;
for (m=0;m<50;m++)
{
for (i=0;i<16;i++)
{
le=1;
for (j=0;j<Width*2;j++)
{
bd=Buffer[i+16][j];
row_r();
}
oe=1;
latch=0;
latch=1;
P1=0xf0|i;
oe=0;
le=0;
}
}
}
void RollShow()
{
uchar i,j,m,n,h,l;
for (m=0;m<16;m++)
{
h=31-m;
l=15-m;
for (n=0;n<5;n++)
{
for (i=16;i<32;i++)
{
le=1;
for (j=0;j<Width*2;j++)
{
bd=Buffer[i-m][j];
row_r();
}
oe=1;
latch=0;
latch=1;
P1=0xf0|i;
oe=0;
le=0;
}
}
for (j=0;j<Width*2;j++)
{
Buffer[h][j]=Buffer[l][j];
}
}
}
void main()
{
uint i;
init();
mm: if (Flag==1)
{
Flag=0;
RollShow();
FlashShow();
}
while(1)
{
for (i=0;i<200;i++)
{
StaticShow();
if (Flag==1)
{
goto mm;
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -