⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2main.c

📁 一些用于电话管理的pc机下位机程序
💻 C
📖 第 1 页 / 共 2 页
字号:
{  	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 + -