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

📄 eeprom.c

📁 关于与计算机超级终端通讯的小程序.(RS232)
💻 C
📖 第 1 页 / 共 2 页
字号:
                            case 0x08:{
                                i=uart1_rxbw[3]-4;
                                j=0;
                   	            switch (uart1_rxbw[5])
                   	            {
                   	                case 0x00:
                   	                    while (i!=0)
                   	                    {
                   	                        yc_fm_para0(eep_rx_count++)=uart1_rxbw[j+8];
                   	                        i--;
                   	                        j++;
                   	                    }
                   	                    if (uart1_rxbw[7]==0x55)
                   	                    {
                                            eeprom_ram[eep_in_count++]=(unsigned int)&yc_fm_para0(0);
                                            eeprom_ram[eep_in_count++]=(eep_rx_count+31)/32;
                                            eep_rx_count=0;
                   	                    }
                   	                    break;
                   	                case 0x01:
                   	                    while (i!=0)
                   	                    {
                   	                        yc_fm_para1(eep_rx_count++)=uart1_rxbw[j+8];
                   	                        i--;
                   	                        j++;
                   	                    }
                   	                    if (uart1_rxbw[7]==0x55)
                   	                    {
                                            eeprom_ram[eep_in_count++]=(unsigned int)&yc_fm_para1(0);
                                            eeprom_ram[eep_in_count++]=(eep_rx_count+31)/32;
                                            eep_rx_count=0;
                                        }
                                }
                                rxbw_ok();
                   	            break;
                   	        }
                     // 下装遥信发码数据
                            case 0x09:{
                                i=uart1_rxbw[3]-4;
                                j=0;
                   	            switch (uart1_rxbw[5])
                   	            {
                   	                case 0x00:
                   	                    while (i!=0)
                   	                    {
                   	                        yx_fm_para0(eep_rx_count++)=uart1_rxbw[j+8];
                   	                        i--;
                   	                        j++;
                   	                    }
                   	                    if (uart1_rxbw[7]==0x55)
                   	                    {
                                            eeprom_ram[eep_in_count++]=(unsigned int)&yx_fm_para0(0);
                                            eeprom_ram[eep_in_count++]=(eep_rx_count+31)/32;
                                            eep_rx_count=0;
                   	                    }
                   	                    break;
                   	                case 0x01:
                   	                    while (i!=0)
                   	                    {
                   	                        yx_fm_para1(eep_rx_count++)=uart1_rxbw[j+8];
                   	                        i--;
                   	                        j++;
                   	                    }
                   	                    if (uart1_rxbw[7]==0x55)
                   	                    {
                                            eeprom_ram[eep_in_count++]=(unsigned int)&yx_fm_para1(0);
                                            eeprom_ram[eep_in_count++]=(eep_rx_count+31)/32;
                                            eep_rx_count=0;
                   	                    }
                   	            }
                                rxbw_ok();
                   	            break;
                   	        }
           // 下装电度发码数据    
                            case 0x0a:{
                                i=uart1_rxbw[3]-4;
                                j=0;
                   	            switch (uart1_rxbw[5])
                   	            {
                   	                case 0x00:
                   	                    while (i!=0)
                   	                    {
                   	                        dd_fm_para0(eep_rx_count++)=uart1_rxbw[j+8];
                   	                        i--;
                   	                        j++;
                   	                    }
                   	                    if (uart1_rxbw[7]==0x55)
                   	                    {
                                            eeprom_ram[eep_in_count++]=(unsigned int)&dd_fm_para0(0);
                                            eeprom_ram[eep_in_count++]=(eep_rx_count+31)/32;
                                            eep_rx_count=0;
                   	                    }
                   	                    break;
                   	                case 0x01:
                   	                    while (i!=0)
                   	                    {
                   	                        dd_fm_para1(eep_rx_count++)=uart1_rxbw[j+8];
                   	                        i--;
                   	                        j++;
                   	                    }
                   	                    if (uart1_rxbw[7]==0x55)
                   	                    {
                                            eeprom_ram[eep_in_count++]=(unsigned int)&dd_fm_para1(0);
                                            eeprom_ram[eep_in_count++]=(eep_rx_count+31)/32;
                                            eep_rx_count=0;
                   	                    }
                   	                    break;
                   	                    
                   	            }
                   	            
                                rxbw_ok();
                   	            break;
                   	        }
                     // 上传串口发码遥测数据
                            case 0x10:{
                                yc_len = uart1_rxbw[4] * 128;
                                for(j=0;j<=7;j++)
                    	        {
                    	            uart1_txbw[j] = uart1_rxbw[j];
                    	        }
                    	        uart1_txbw[3] = 132;
                    	        /*switch(uart1_rxbw[5])
                    	       	{
                    	       	    case 0x00:{
                    	       	        for(j=0;j<128;j++)
                    	       	        {
                    	       	            uart1_txbw[j+8] = yc_3l_0(j+yc_len);
                    	       	        }
                    	       	        break;
                    	       	    }
                    	       	    case 0x01:{
                    	       	        for(j=0;j<128;j++)
                    	       	        {
                    	       	            uart1_txbw[j+8] = yc_3l_1(j+yc_len);
                    	       	        }
                    	       	        break;
                    	       	    }
                    	       	}*/
                                bwlen = 136;
                    	        check_LPC1 = check_LPC2 = 0;
                    	        uart1_txcheck();
                    	        uart1_txbw[bwlen] = check_LPC1;
                                uart1_txbw[bwlen+1] = check_LPC2;
                                tc1 = uart1_txbw[3]+6;
                                txc = 0;
                                SSR1_TIE = 1;
                                break;
                            }
                     // 上传串口发码遥信数据
                            case 0x16:{
                                for(j=0;j<=7;j++)
                    	        {
                    	          uart1_txbw[j] = uart1_rxbw[j];
                    	        }
                    	        switch(uart1_rxbw[5])
                    	       	{
                    	       	    case 0x00:{
                    	       	   	    yx_len = com0_para(13);
                    	                uart1_txbw[3] = yx_len+4;
                    	       	   	    for(j=0;j<yx_len;j++)
                    	       	   	    {
                    	       	  	        uart1_txbw[j+8] = yx_3l_0(j);
                    	       	  	    }
                    	       	  	    break;
                    	       	    }
                    	       	    case 0x01:{
                    	       	   	    yx_len = com1_para(13);
                    	                uart1_txbw[3] = yx_len+4;
                    	       	   	    for(j=0;j<yx_len;j++)
                    	       	   	    {
                    	       	     	    uart1_txbw[j+8] = yx_3l_1(j);
                    	       	     	}
                    	       	     	break;
                    	       	    }
                    	        }
                    	        bwlen = uart1_txbw[3]+4;
                    	        check_LPC1 = check_LPC2 = 0;
                                uart1_txcheck();
                                uart1_txbw[bwlen] = check_LPC1;
                                uart1_txbw[bwlen+1] = check_LPC2;
                                tc1 = uart1_txbw[3]+6;
                                txc = 0;
                                SSR1_TIE = 1;
                                break;
                            }
                        }
                    }
                    else
                    {
                        rxbw_no();
                    }
                    bwlen = 0;
                    uart1_rc = 0;rc1 = 0;
                }
            }
        }
    }
}

void uart1_rxcheck(void)
{
    IO_BYTE j;

	for(j=0;j<bwlen;j++)
	{
          check_LPC1 = check_LPC1 ^ uart1_rxbw[j];
	  check_LPC2 = check_LPC2 + uart1_rxbw[j];
	}
}

void uart1_txcheck(void)
{
    IO_BYTE j;

	for(j=0;j<bwlen;j++)
	{
          check_LPC1 = check_LPC1 ^ uart1_txbw[j];
	  check_LPC2 = check_LPC2 + uart1_txbw[j];
	}
}

void rxbw_ok(void)
{
	unsigned char j;
	for(j=0;j<10;j++)
        {
          uart1_txbw[j] = right_bw[j];
        }
        tc1 = uart1_txbw[3]+6;
        txc = 0;
        SSR1_TIE = 1;
}

void rxbw_no(void)
{
    IO_BYTE j;

	for(j=0;j<10;j++)
        {
          uart1_txbw[j] = error_bw[j];
        }
        tc1 = uart1_txbw[3]+6;
        txc = 0;
        SSR1_TIE = 1;
}

__interrupt void Uart1_Rx_int()
{
//        __DI();

        if((SSR1_RDRF==1)&&(SSR1_ORE==0)&&(SSR1_PE==0))
          {
            uart1_rxbw[rc1] = SIDR1;
            rc1++;uart1_rc++;
            bwlen = rc1;
          }
        else
             SCR1_REC = 0;
	if (rc1>=150)
	{
		rc1=0;
		uart1_rc=0;
		bwlen=0;
	}
        uart1_rtime = 0;

//        __EI();
}

__interrupt void Uart1_Tx_int()
{
//	__DI();

	if ( SSR1_TDRE == 1 )
	 {
	    if (tc1!=0)
	    {
	        SODR1 = uart1_txbw[txc];
            txc++;
            tc1--;
        }
        else
        {
            SSR1_TIE=0;
        }
    }

//	__EI();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -