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

📄 dsp_com.h

📁 基于TMS320LF2407的LED大屏幕显示程序
💻 H
字号:
/*Designed by lizw 04/11/18*/

#ifndef DSP_COM_H   
#define DSP_COM_H


int  i_com;
int  send_len=0;
int  send_index;
int  rec_len; 
int  rand_num=0;


int start_index=-1,end_index=-1;

#include "real_time.h"

void disable_int(){
   asm(" setc INTM");
   asm(" setc SXM");
}

void enable_int(){
   asm(" clrc INTM");
}
void init_com(int a){
    disable_int();
    *IFR=0xffff;
    *SCSR1=0x81de;
    *WDCR=0xE8; 
    *SCICCR=0x07;
    *SCICTL1=0x13;
    *SCICTL2=0x03;//0X03
    *SCIHBAUD=0x01;
    *SCILBAUD=0x04;
    *SCICTL1=0x33;
    *SCIPRI=0x60;
    *MCRA=0x03;
    *PADATDIR=0x100;
    *IMR=(*IMR)|0x10;
        
    enable_int();
    
}

void init_SRbuf(int a){
     int i;
     if((a&0x01)!=0){
         *p_sendbuf=0x7c;
         *(p_sendbuf+1)=0xd2;
         *(p_sendbuf+2)=0x15;
         *(p_sendbuf+3)=0xd8;
         *(p_sendbuf+4)=0x41;
         *(p_sendbuf+5)=0x42;
         *(p_sendbuf+6)=0x39;
         for(i=0;i<4;i++)
           *(p_sendbuf+11-i)=*(p_sendbuf+i);
         
         send_index=0;
         send_len=12;
         end_index=-1;   
       } 
     if((a&0x02)!=0){
         for(i=0;i<512;i++)
           *(p_recbuf+i)='\0';
         rec_len=0;
         start_index=-1;
         end_index=-1;   
       } 
       
       i_com=0;
     
}



void com_send(){ 
     if(send_index>=send_len) return;
     *SCITXBUF=*(p_sendbuf+send_index);
     send_index++;
     *IFR=0x0010;
     enable_int();
   
}

void send_data(){ 
             
     send_index=1;
     *SCITXBUF=*(p_sendbuf+send_index-1);
     *IFR=0x0010;
     enable_int();       
}  
 
void com_recieve(){
    BYTE rec_temp; 
    int i;
    rec_temp=*SCIRXBUF;
    
    if(rec_len<1023)
       p_recbuf[rec_len]=rec_temp;  
    rec_len++;      
    *IFR=0x0010;
    enable_int();
    i_delay=0;
    //init_SRbuf(1);
    if(rec_len>=4){
        if((p_recbuf[rec_len-1]==0xd8)&&(p_recbuf[rec_len-2]==0x15)&&(p_recbuf[rec_len-3]==0xd2)&&(p_recbuf[rec_len-4]==0x7c)){                        ////////+CMTI:
           if((start_index==-1)&&(end_index==-1))
               start_index=rec_len; 
           i_com=1; 
         }        
                
     }
    if(rec_len>=8){        
       if((p_recbuf[rec_len-4]==0xd8)&&(p_recbuf[rec_len-3]==0x15)&&(p_recbuf[rec_len-2]==0xd2)&&(p_recbuf[rec_len-1]==0x7c)){                        ////////+CMTI:
           if((end_index==-1)&&(start_index>0))
               end_index=rec_len-5;  
        }
    }
    
}


void AT_init(){

     *p_sendbuf='A';
     *(p_sendbuf+1)='T';
     *(p_sendbuf+2)='S';
     *(p_sendbuf+3)='0';
     *(p_sendbuf+4)='=';
     *(p_sendbuf+5)='1';
     *(p_sendbuf+6)=13;
     *(p_sendbuf+7)=10;         
     send_index=0;
     send_len=8;
         
     send_data();                   


}
 
void AT_ack(BYTE i){
    init_SRbuf(1);
    *(p_sendbuf+6)=i;
    *(p_sendbuf+7)=*(p_sendbuf+7)+1;
    if(*(p_sendbuf+7)>0x39)
       *(p_sendbuf+7)=0x30;
    if(*(p_sendbuf+7)<0x30)
       *(p_sendbuf+7)=0x30;    
    send_len=12;
    my_delay(1);    
    send_data();                                 
} 

/////////
void load_crc_table(){
   *(p_crc+0)=0x0000;
   *(p_crc+1)=0xC1C0;
   *(p_crc+2)=0x81C1;
   *(p_crc+3)=0x4001;
   *(p_crc+4)=0x01C3;
   *(p_crc+5)=0xC003;
   *(p_crc+6)=0x8002;
   *(p_crc+7)=0x41C2;
   *(p_crc+8)=0x01C6;
   *(p_crc+9)=0xC006;
   
   *(p_crc+10)=0x8007;
   *(p_crc+11)=0x41C7;
   *(p_crc+12)=0x0005;
   *(p_crc+13)=0xC1C5;
   *(p_crc+14)=0x81C4;
   *(p_crc+15)=0x4004;   
   *(p_crc+16)=0x01CC;
   *(p_crc+17)=0xC00C;
   *(p_crc+18)=0x800D;
   *(p_crc+19)=0x41CD;
   
   
   *(p_crc+20)=0x000F;
   *(p_crc+21)=0xC1CF;
   *(p_crc+22)=0x81CE;
   *(p_crc+23)=0x400E;
   *(p_crc+24)=0x000A;
   *(p_crc+25)=0xC1CA;
   *(p_crc+26)=0x81CB;
   *(p_crc+27)=0x400B;
   *(p_crc+28)=0x01C9;
   *(p_crc+29)=0xC009;
   
   *(p_crc+30)=0x8008;
   *(p_crc+31)=0x41C8;
   *(p_crc+32)=0x01D8;
   *(p_crc+33)=0xC018;
   *(p_crc+34)=0x8019;
   *(p_crc+35)=0x41D9;
   *(p_crc+36)=0x001B;
   *(p_crc+37)=0xC1DB;
   *(p_crc+38)=0x81DA;
   *(p_crc+39)=0x401A;
   
   *(p_crc+40)=0x001E;
   *(p_crc+41)=0xC1DE;
   *(p_crc+42)=0x81DF;
   *(p_crc+43)=0x401F;
   *(p_crc+44)=0x01DD;
   *(p_crc+45)=0xC01D;
   *(p_crc+46)=0x801C;
   *(p_crc+47)=0x41DC;
   *(p_crc+48)=0x0014;
   *(p_crc+49)=0xC1D4;
   
   *(p_crc+50)=0x81D5;
   *(p_crc+51)=0x4015;
   *(p_crc+52)=0x01D7;
   *(p_crc+53)=0xC017;
   *(p_crc+54)=0x8016;
   *(p_crc+55)=0x41D6;
   *(p_crc+56)=0x01D2;
   *(p_crc+57)=0xC012;
   *(p_crc+58)=0x8013;
   *(p_crc+59)=0x41D3;
   
   *(p_crc+60)=0x0011;
   *(p_crc+61)=0xC1D1;
   *(p_crc+62)=0x81D0;
   *(p_crc+63)=0x4010;
   *(p_crc+64)=0x01F0;
   *(p_crc+65)=0xC030;
   *(p_crc+66)=0x8031;
   *(p_crc+67)=0x41F1;
   *(p_crc+68)=0x0033;
   *(p_crc+69)=0xC1F3;
   
   *(p_crc+70)=0x81F2;
   *(p_crc+71)=0x4032;
   *(p_crc+72)=0x0036;
   *(p_crc+73)=0xC1F6;
   *(p_crc+74)=0x81F7;
   *(p_crc+75)=0x4037;
   *(p_crc+76)=0x01F5;
   *(p_crc+77)=0xC035;
   *(p_crc+78)=0x8034;
   *(p_crc+79)=0x41F4;
   
   *(p_crc+80)=0x003C;
   *(p_crc+81)=0xC1FC;
   *(p_crc+82)=0x81FD;
   *(p_crc+83)=0x403D;
   *(p_crc+84)=0x01FF;
   *(p_crc+85)=0xC03F;
   *(p_crc+86)=0x803E;
   *(p_crc+87)=0x41FE;
   *(p_crc+88)=0x01FA;
   *(p_crc+89)=0xC03A;   
   
   *(p_crc+90)=0x803B;
   *(p_crc+91)=0x41FB;
   *(p_crc+92)=0x0039;
   *(p_crc+93)=0xC1F9;
   *(p_crc+94)=0x81F8;
   *(p_crc+95)=0x4038;
   *(p_crc+96)=0x0028;
   *(p_crc+97)=0xC1E8;
   *(p_crc+98)=0x81E9;
   *(p_crc+99)=0x4029;
   
   *(p_crc+100)=0x01EB;
   *(p_crc+101)=0xC02B;
   *(p_crc+102)=0x802A;
   *(p_crc+103)=0x41EA;
   *(p_crc+104)=0x01EE;
   *(p_crc+105)=0xC02E;
   *(p_crc+106)=0x802F;
   *(p_crc+107)=0x41EF;
   *(p_crc+108)=0x002D;
   *(p_crc+109)=0xC1ED;
   
   *(p_crc+110)=0x81EC;
   *(p_crc+111)=0x402C;
   *(p_crc+112)=0x01E4;
   *(p_crc+113)=0xC024;
   *(p_crc+114)=0x8025;
   *(p_crc+115)=0x41E5;
   *(p_crc+116)=0x0027;
   *(p_crc+117)=0xC1E7;
   *(p_crc+118)=0x81E6;
   *(p_crc+119)=0x4026;
   
   *(p_crc+120)=0x0022;
   *(p_crc+121)=0xC1E2;
   *(p_crc+122)=0x81E3;
   *(p_crc+123)=0x4023;
   *(p_crc+124)=0x01E1;
   *(p_crc+125)=0xC021;
   *(p_crc+126)=0x8020;
   *(p_crc+127)=0x41E0;
   *(p_crc+128)=0x01A0;
   *(p_crc+129)=0xC060;
   
   *(p_crc+130)=0x8061;
   *(p_crc+131)=0x41A1;
   *(p_crc+132)=0x0063;
   *(p_crc+133)=0xC1A3;
   *(p_crc+134)=0x81A2;
   *(p_crc+135)=0x4062;
   *(p_crc+136)=0x0066;
   *(p_crc+137)=0xC1A6;
   *(p_crc+138)=0x81A7;
   *(p_crc+139)=0x4067;
   
   *(p_crc+140)=0x01A5;
   *(p_crc+141)=0xC065;
   *(p_crc+142)=0x8064;
   *(p_crc+143)=0x41A4;
   *(p_crc+144)=0x006C;
   *(p_crc+145)=0xC1AC;
   *(p_crc+146)=0x81AD;
   *(p_crc+147)=0x406D;
   *(p_crc+148)=0x01AF;
   *(p_crc+149)=0xC06F;
   
   *(p_crc+150)=0x806E;
   *(p_crc+151)=0x41AE;
   *(p_crc+152)=0x01AA;
   *(p_crc+153)=0xC06A;
   *(p_crc+154)=0x806B;
   *(p_crc+155)=0x41AB;
   *(p_crc+156)=0x0069;
   *(p_crc+157)=0xC1A9;
   *(p_crc+158)=0x81A8;
   *(p_crc+159)=0x4068;
   
   *(p_crc+160)=0x0078;
   *(p_crc+161)=0xC1B8;
   *(p_crc+162)=0x81B9;
   *(p_crc+163)=0x4079;
   *(p_crc+164)=0x01BB;
   *(p_crc+165)=0xC07B;
   *(p_crc+166)=0x807A;
   *(p_crc+167)=0x41BA;
   *(p_crc+168)=0x01BE;
   *(p_crc+169)=0xC07E;
   
   *(p_crc+170)=0x807F;
   *(p_crc+171)=0x41BF;
   *(p_crc+172)=0x007D;
   *(p_crc+173)=0xC1BD;
   *(p_crc+174)=0x81BC;
   *(p_crc+175)=0x407C;
   *(p_crc+176)=0x01B4;
   *(p_crc+177)=0xC074;
   *(p_crc+178)=0x8075;
   *(p_crc+179)=0x41B5;
   
   *(p_crc+180)=0x0077;
   *(p_crc+181)=0xC1B7;
   *(p_crc+182)=0x81B6;
   *(p_crc+183)=0x4076;
   *(p_crc+184)=0x0072;
   *(p_crc+185)=0xC1B2;
   *(p_crc+186)=0x81B3;
   *(p_crc+187)=0x4073;
   *(p_crc+188)=0x01B1;
   *(p_crc+189)=0xC071;
   
   *(p_crc+190)=0x8070;
   *(p_crc+191)=0x41B0;
   *(p_crc+192)=0x0050;
   *(p_crc+193)=0xC190;
   *(p_crc+194)=0x8191;
   *(p_crc+195)=0x4051;
   *(p_crc+196)=0x0193;
   *(p_crc+197)=0xC053;
   *(p_crc+198)=0x8052;
   *(p_crc+199)=0x4192;
   
   *(p_crc+200)=0x0196;
   *(p_crc+201)=0xC056;
   *(p_crc+202)=0x8057;
   *(p_crc+203)=0x4197;
   *(p_crc+204)=0x0055;
   *(p_crc+205)=0xC195;
   *(p_crc+206)=0x8194;
   *(p_crc+207)=0x4054;
   *(p_crc+208)=0x019C;
   *(p_crc+209)=0xC05C;
   
   *(p_crc+210)=0x805D;
   *(p_crc+211)=0x419D;
   *(p_crc+212)=0x005F;
   *(p_crc+213)=0xC19F;
   *(p_crc+214)=0x819E;
   *(p_crc+215)=0x405E;
   *(p_crc+216)=0x005A;
   *(p_crc+217)=0xC19A;
   *(p_crc+218)=0x819B;
   *(p_crc+219)=0x405B;
   
   *(p_crc+220)=0x0199;
   *(p_crc+221)=0xC059;
   *(p_crc+222)=0x8058;
   *(p_crc+223)=0x4198;
   *(p_crc+224)=0x0188;
   *(p_crc+225)=0xC048;
   *(p_crc+226)=0x8049;
   *(p_crc+227)=0x4189;
   *(p_crc+228)=0x004B;
   *(p_crc+229)=0xC18B;
   
   *(p_crc+230)=0x818A;
   *(p_crc+231)=0x404A;
   *(p_crc+232)=0x004E;
   *(p_crc+233)=0xC18E;
   *(p_crc+234)=0x818F;
   *(p_crc+235)=0x404F;
   *(p_crc+236)=0x018D;
   *(p_crc+237)=0xC04D;
   *(p_crc+238)=0x804C;
   *(p_crc+239)=0x418C;
   
   *(p_crc+240)=0x0044;
   *(p_crc+241)=0xC184;
   *(p_crc+242)=0x8185;
   *(p_crc+243)=0x4045;
   *(p_crc+244)=0x0187;
   *(p_crc+245)=0xC047;
   *(p_crc+246)=0x8046;
   *(p_crc+247)=0x4186;
   *(p_crc+248)=0x0182;
   *(p_crc+249)=0xC042;
   
   *(p_crc+250)=0x8043;
   *(p_crc+251)=0x4183;
   *(p_crc+252)=0x0041;
   *(p_crc+253)=0xC181;
   *(p_crc+254)=0x8180;
   *(p_crc+255)=0x4040;


}
//////////////////////////////////////
//////////////
BYTE getNUM(volatile  unsigned int index){
     int i;
     int j;
     BYTE temp;
     
     i=index/2;
     j=index%2;
     
     if(j==0)
        temp=(BYTE)(p_crc[i]>>8);
     else
        temp=(BYTE)p_crc[i];
        
     return temp;
}


unsigned int cal_crc(volatile unsigned char *ptr,volatile  unsigned int len) {
   unsigned int crc;
   BYTE cccc0,cccc1,cccc2,cccc3;
   unsigned int i2; 
   
  
/* CRC余式表 */
   load_crc_table();
   cccc0=0;
   cccc1=0;
   cccc2=0;
   cccc3=0;
   
   for(i2=0;i2<len;i2++){
     cccc0=getNUM( ( ptr[i2] ^ cccc2)*2 );
     cccc0=cccc0&0xff;
     cccc1=getNUM( (( ptr[i2]^ cccc2)*2)+1) ;
     cccc1=cccc1&0xff;
     cccc2=cccc0^cccc3;
     cccc2=cccc2&0xff;
     cccc3=cccc1;
     
    }
  
   crc=(cccc2<<8)+cccc3;
    
   return(crc);
}



///////////////
int  crc_YesNo(){
    unsigned int crc; 
    unsigned int com_data;          
    if(start_index<0)
       return -1;
    if(end_index<0)
       return -1;
    com_data=( ((*(p_recbuf+end_index-1)))<<8 )+((*(p_recbuf+end_index))&0xff);
    crc=cal_crc(p_recbuf+start_index,end_index-start_index-1);
    if(com_data!=crc)
        return 0;    
    return 1;
	
}




#endif

⌨️ 快捷键说明

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