📄 2main.c
字号:
{ unsigned char i;
STROBE_8816=0;
CS3_8816=1;
for(i=0;i<7;i++)
{
if((S3_reg&0x1)==1)
{
ADDR_8816=i+ybufon; STROBE_8816=1;
_asm CLRWDT _endasm STROBE_8816=0;
}
else
{
ADDR_8816=i+ybufoff; STROBE_8816=1;
_asm CLRWDT _endasm STROBE_8816=0;
}
S3_reg/=2;
}
CS3_8816=0;
}
void televise(void)
{
STROBE_8816=0;
CS1_8816=1;
CS2_8816=1;
CS3_8816=1;
_asm CLRWDT _endasm
ADDR_8816=xbuf+y0on; STROBE_8816=1; _asm CLRWDT _endasm STROBE_8816=0;
ADDR_8816=xbuf+y1on; STROBE_8816=1; _asm CLRWDT _endasm STROBE_8816=0;
ADDR_8816=xbuf+y2on; STROBE_8816=1; _asm CLRWDT _endasm STROBE_8816=0;
ADDR_8816=xbuf+y3on; STROBE_8816=1; _asm CLRWDT _endasm STROBE_8816=0;
ADDR_8816=xbuf+y4on; STROBE_8816=1; _asm CLRWDT _endasm STROBE_8816=0;
ADDR_8816=xbuf+y5on; STROBE_8816=1; _asm CLRWDT _endasm STROBE_8816=0;
ADDR_8816=xbuf+y6on; STROBE_8816=1; _asm CLRWDT _endasm STROBE_8816=0;
ADDR_8816=xbuf+ybufon; STROBE_8816=1; _asm CLRWDT _endasm STROBE_8816=0;
CS1_8816=0;
CS2_8816=0;
CS3_8816=0;
linker_S1();
linker_S2();
linker_S3();
}
void Linker_on(void)
{
switch(aa){
case 0: //S10_TRIS=1;
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x0+ybufon;CS1_8816=1;break;
case 1: //S11_TRIS=1; //Sxx=input
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x1+ybufon;CS1_8816=1;break;
case 2: //S12_TRIS=1; //Sxx=input
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x2+ybufon;CS1_8816=1;break;
case 3: //S13_TRIS=1; //Sxx=input
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x3+ybufon;CS1_8816=1;break;
case 4: //S14_TRIS=1; //Sxx=input
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x4+ybufon;CS1_8816=1;break;
case 5: //S15_TRIS=1; //Sxx=input
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x5+ybufon;CS1_8816=1;break;
case 6: //S16_TRIS=1; //Sxx=input
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x6+ybufon;CS1_8816=1;break;
case 7: //S20_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x0+ybufon;CS2_8816=1;break;
case 8: //S21_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x1+ybufon;CS2_8816=1;break;
case 9: //S22_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x2+ybufon;CS2_8816=1;break;
case 10: //S23_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x3+ybufon;CS2_8816=1;break;
case 11: //S24_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x4+ybufon;CS2_8816=1;break;
case 12: //S25_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x5+ybufon;CS2_8816=1;break;
case 13: //S26_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x6+ybufon;CS2_8816=1;break;
case 14: //S30_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x0+ybufon;CS3_8816=1;break;
case 15: //S31_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x1+ybufon;CS3_8816=1;break;
case 16: //S32_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x2+ybufon;CS3_8816=1;break;
case 17: //S33_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x3+ybufon;CS3_8816=1;break;
case 18: //S34_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x4+ybufon;CS3_8816=1;break;
case 19: //S35_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x5+ybufon;CS3_8816=1;break;
case 20: //S36_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x6+ybufon;CS3_8816=1;break;
}
switch(bb){
case 0: S10_TRIS=0;
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x0+ybufon;CS1_8816=1;break;
case 1: S11_TRIS=0; //Sxx=out low
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x1+ybufon;CS1_8816=1;break;
case 2: S12_TRIS=0; //Sxx=out low
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x2+ybufon;CS1_8816=1;break;
case 3: S13_TRIS=0; //Sxx=out low
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x3+ybufon;CS1_8816=1;break;
case 4: S14_TRIS=0; //Sxx=out low
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x4+ybufon;CS1_8816=1;break;
case 5: S15_TRIS=0; //Sxx=out low
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x5+ybufon;CS1_8816=1;break;
case 6: S16_TRIS=0; //Sxx=out low
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x6+ybufon;CS1_8816=1;break;
case 7: S20_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x0+ybufon;CS2_8816=1;break;
case 8: S21_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x1+ybufon;CS2_8816=1;break;
case 9: S22_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x2+ybufon;CS2_8816=1;break;
case 10: S23_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x3+ybufon;CS2_8816=1;break;
case 11: S24_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x4+ybufon;CS2_8816=1;break;
case 12: S25_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x5+ybufon;CS2_8816=1;break;
case 13: S26_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x6+ybufon;CS2_8816=1;break;
case 14: S30_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x0+ybufon;CS3_8816=1;break;
case 15: S31_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x1+ybufon;CS3_8816=1;break;
case 16: S32_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x2+ybufon;CS3_8816=1;break;
case 17: S33_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x3+ybufon;CS3_8816=1;break;
case 18: S34_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x4+ybufon;CS3_8816=1;break;
case 19: S35_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x5+ybufon;CS3_8816=1;break;
case 20: S36_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x6+ybufon;CS3_8816=1;break;
}
}
void Linker_off(void)
{
switch(aa){
case 0: //S10_TRIS=1;
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x0+ybufoff;CS1_8816=1;break;
case 1: //S11_TRIS=1; //Sxx=input
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x1+ybufoff;CS1_8816=1;break;
case 2: //S12_TRIS=1; //Sxx=input
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x2+ybufoff;CS1_8816=1;break;
case 3: //S13_TRIS=1; //Sxx=input
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x3+ybufoff;CS1_8816=1;break;
case 4: //S14_TRIS=1; //Sxx=input
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x4+ybufoff;CS1_8816=1;break;
case 5: //S15_TRIS=1; //Sxx=input
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x5+ybufoff;CS1_8816=1;break;
case 6: //S16_TRIS=1; //Sxx=input
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x6+ybufoff;CS1_8816=1;break;
case 7: //S20_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x0+ybufoff;CS2_8816=1;break;
case 8: //S21_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x1+ybufoff;CS2_8816=1;break;
case 9: //S22_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x2+ybufoff;CS2_8816=1;break;
case 10: //S23_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x3+ybufoff;CS2_8816=1;break;
case 11: //S24_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x4+ybufoff;CS2_8816=1;break;
case 12: //S25_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x5+ybufoff;CS2_8816=1;break;
case 13: //S26_TRIS=1; //Sxx=input
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x6+ybufoff;CS2_8816=1;break;
case 14: //S30_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x0+ybufoff;CS3_8816=1;break;
case 15: //S31_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x1+ybufoff;CS3_8816=1;break;
case 16: //S32_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x2+ybufoff;CS3_8816=1;break;
case 17: //S33_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x3+ybufoff;CS3_8816=1;break;
case 18: //S34_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x4+ybufoff;CS3_8816=1;break;
case 19: //S35_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x5+ybufoff;CS3_8816=1;break;
case 20: //S36_TRIS=1; //Sxx=input
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x6+ybufoff;CS3_8816=1;break;
}
switch(bb){
case 0: S10_TRIS=0;
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x0+ybufoff;CS1_8816=1;break;
case 1: S11_TRIS=0; //Sxx=out low
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x1+ybufoff;CS1_8816=1;break;
case 2: S12_TRIS=0; //Sxx=out low
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x2+ybufoff;CS1_8816=1;break;
case 3: S13_TRIS=0; //Sxx=out low
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x3+ybufoff;CS1_8816=1;break;
case 4: S14_TRIS=0; //Sxx=out low
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x4+ybufoff;CS1_8816=1;break;
case 5: S15_TRIS=0; //Sxx=out low
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x5+ybufoff;CS1_8816=1;break;
case 6: S16_TRIS=0; //Sxx=out low
CS1_8816=1;_asm CLRWDT _endasm ADDR_8816=x6+ybufoff;CS1_8816=1;break;
case 7: S20_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x0+ybufoff;CS2_8816=1;break;
case 8: S21_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x1+ybufoff;CS2_8816=1;break;
case 9: S22_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x2+ybufoff;CS2_8816=1;break;
case 10: S23_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x3+ybufoff;CS2_8816=1;break;
case 11: S24_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x4+ybufoff;CS2_8816=1;break;
case 12: S25_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x5+ybufoff;CS2_8816=1;break;
case 13: S26_TRIS=0; //Sxx=out low
CS2_8816=1;_asm CLRWDT _endasm ADDR_8816=x6+ybufoff;CS2_8816=1;break;
case 14: S30_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x0+ybufoff;CS3_8816=1;break;
case 15: S31_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x1+ybufoff;CS3_8816=1;break;
case 16: S32_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x2+ybufoff;CS3_8816=1;break;
case 17: S33_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x3+ybufoff;CS3_8816=1;break;
case 18: S34_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x4+ybufoff;CS3_8816=1;break;
case 19: S35_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x5+ybufoff;CS3_8816=1;break;
case 20: S36_TRIS=0; //Sxx=out low
CS3_8816=1;_asm CLRWDT _endasm ADDR_8816=x6+ybufoff;CS3_8816=1;break;
}
}
//主程序
void main()
{
unsigned char uchar;
S1x_TRIS=0XFF; //S10~S16 初始化
S1x_PORT=0;
S2x_TRIS=0xFF; //S20~S26 初始化
S2x_PORT=0;
S3x_TRIS=0XFF; //S30~S36 初始化
S3x_PORT=0;
TRISF=0; //8816命令脚初始化
PORTF=0;
TRISG=0; //8816命令脚初始化
PORTG=0;
MT8816RESET();
OUT_232=0;
RS232_initial(); //RS232初始化
for(;;){
_asm CLRWDT _endasm
if(buf_RCREG==1){
//cmd0=0b0ttaaaaa tt 命令类型, aaaaa地址
// 00 rst
// 01 televise
// 10 one2one
//cmd1=0b1ddbbbbb dd =0 aaaaa 和bbbbb 断开 dd =1 aaaaa 和 bbbbb联结
tt=cmd0;
tt>>=5;
if((cmd1&0x60)==0x60)
{dd=1;}
else
{dd=0;}
aa=cmd0&0x1F;
bb=cmd1&0x1F;
switch(tt){
case 1: if(dd) Linker_on();//个别联系
else Linker_off();
break;
case 2: buf_RCREG=0; //广播联系
while(buf_RCREG==0)
{
_asm CLRWDT _endasm
if(deal_Sxx_signal()!=0)
{
televise();
}
else
{
MT8816RESET();
}
}
break;
default :MT8816RESET(); //基本状态
break;
}
buf_RCREG=0xff;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -