新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 指針的一種用法(優(yōu)化代碼)

指針的一種用法(優(yōu)化代碼)

作者: 時間:2016-11-29 來源:網(wǎng)絡 收藏
/************************************************************************
函數(shù)名 :unsigned char CAN_Send_dat(CAN_DAT *can_tmp,unsigned char pir)功能 ?。篶an發(fā)送參數(shù) ?。?can_tmp 數(shù)據(jù)包 pir: 優(yōu)先級 0~3返回  :1->緩沖池滿需要等待下次裝入發(fā)送緩沖池 0->成功放入緩沖池************************************************************************/unsigned char CAN_Send_dat(CAN_DAT *can_tmp,unsigned char pir){unsigned char n,flag;unsigned char temp;unsigned char *P_addr,*P_addr_temp;flag = 0;if((TXB0CON&0x08)==0){P_addr = (unsigned char*)(&TXB0CON);flag = 1;}if((TXB1CON&0x08)==0){P_addr = (unsigned char*)(&TXB1CON);flag = 1;}if((TXB2CON&0x08)==0){P_addr = (unsigned char*)(&TXB2CON);flag = 1;}if(flag==1){P_addr_temp = P_addr;*P_addr = pir;P_addr++;if(can_tmp->IDR_RTR&0x02)//擴展標識符{*P_addr = ((can_tmp->ID[2]>>5)|(can_tmp->ID[3]<<3));temp = can_tmp->ID[2]&0x03;temp|=((can_tmp->ID[2]&0x1C)<<3);temp|= 0x08;P_addr++;*P_addr = temp;P_addr++;*P_addr = can_tmp->ID[1];P_addr++;*P_addr = can_tmp->ID[0];P_addr++;}else{*P_addr = ((can_tmp->ID[1]<<5)|(can_tmp->ID[0]>>3));;P_addr++;*P_addr = (can_tmp->ID[0]<<5);P_addr+=3;}*P_addr = can_tmp->length;P_addr++;for(n=0;nlength;n++){*P_addr =can_tmp->DATA[n];P_addr++;}*P_addr_temp |= 0x08;return 0;}return 1;}/************************************************************************函數(shù)名 :unsigned char CAN_Send_dat(CAN_DAT *can_tmp,unsigned char pir)功能 ?。篶an發(fā)送參數(shù) ?。?can_tmp 數(shù)據(jù)包 pir: 優(yōu)先級 0~3返回  :1->緩沖池滿需要等待下次裝入發(fā)送緩沖池 0->成功放入緩沖池************************************************************************/unsigned char CAN_Send_dat(CAN_DAT *can_tmp,unsigned char pir){unsigned char n;unsigned char temp;unsigned char *P_addr;if((TXB0CON&0x08)==0){// TXB0CON&=0xfc;//bit3=0標準標識符,bit3=1擴展標識符,bit7-5:標準標識符2-0位,bit7-5 擴展ID[16-17]TXB0CON = pir;//|= pir;           //設置TXB0為最高優(yōu)先級3if(can_tmp->IDR_RTR&0x02)//擴展標識符{TXB0EIDL  = can_tmp->ID[0];//擴展ID[0-7]TXB0EIDH  = can_tmp->ID[1];//擴展ID[8-15]TXB0SIDL  = can_tmp->ID[2]&0x03;//擴展ID[16-17]temp= ((can_tmp->ID[2]&0x1C)<<3);TXB0SIDL |= temp;//標準[0-3]TXB0SIDL |= 0x08;TXB0SIDH=((can_tmp->ID[2]>>5)|(can_tmp->ID[3]<<3));//標準標識符的10-3位}else{TXB0SIDL = (can_tmp->ID[0]<<5);//標準[0-3]TXB0SIDH = ((can_tmp->ID[1]<<5)|(can_tmp->ID[0]>>3));}//if(can_tmp->IDR_RTR&0x01)can_tmp->length|=0x40;TXB0DLC=can_tmp->length;P_addr = &TXB0D0;for(n=0;nlength;n++){*P_addr =can_tmp->DATA[n];P_addr++;}TXB0CON=TXB0CON|0x08; /* bit3(TXREQ)=1請求發(fā)送 */return 0;}if((TXB1CON&0x08)==0){// TXB1CON&=0xfc;TXB1CON = pir;//|= pir;if(can_tmp->IDR_RTR&0x02)//擴展標識符{TXB1EIDL  = can_tmp->ID[0];//擴展ID[0-7]TXB1EIDH  = can_tmp->ID[1];//擴展ID[8-15]TXB1SIDL  = can_tmp->ID[2]&0x03;//擴展ID[16-17]temp= ((can_tmp->ID[2]&0x1C)<<3);TXB1SIDL |= temp;//標準[0-3]TXB1SIDL |= 0x08;TXB1SIDH=((can_tmp->ID[2]>>5)|(can_tmp->ID[3]<<3));//標準標識符的10-3位}else{TXB1SIDL = (can_tmp->ID[0]<<5);//標準[0-3]TXB1SIDH = ((can_tmp->ID[1]<<5)|(can_tmp->ID[0]>>3));}//if(can_tmp->IDR_RTR&0x01)can_tmp->length|=0x40;TXB1DLC=can_tmp->length;P_addr = &TXB1D0;for(n=0;nlength;n++){*P_addr =can_tmp->DATA[n];P_addr++;}TXB1CON=TXB1CON|0x08; return 0;}if((TXB2CON&0x08)==0){//TXB2CON&=0xfc;TXB2CON = pir;if(can_tmp->IDR_RTR&0x02)//擴展標識符{TXB2EIDL  = can_tmp->ID[0];//擴展ID[0-7]TXB2EIDH  = can_tmp->ID[1];//擴展ID[8-15]TXB2SIDL  = can_tmp->ID[2]&0x03;//擴展ID[16-17]temp= ((can_tmp->ID[2]&0x1C)<<3);TXB2SIDL |= temp;//標準[0-3]TXB2SIDL |= 0x08;TXB2SIDH=((can_tmp->ID[2]>>5)|(can_tmp->ID[3]<<3));//標準標識符的10-3位}else{TXB2SIDL = (can_tmp->ID[0]<<5);//標準[0-3]TXB2SIDH = (can_tmp->ID[1]<<5|(can_tmp->ID[0]>>3));}// if(can_tmp->IDR_RTR&0x01)can_tmp->length|=0x40;TXB2DLC=can_tmp->length;P_addr = &TXB2D0;for(n=0;nlength;n++){*P_addr =can_tmp->DATA[n];P_addr++;}TXB2CON=TXB2CON|0x08; return 0;}return 1;}


關鍵詞: 指針優(yōu)化代

評論


技術專區(qū)

關閉