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

📄 st16c2550.c

📁 在UCOS-II操作系统成功移植到AT91SAM7S64的基础上
💻 C
📖 第 1 页 / 共 2 页
字号:
         *AT91C_PIOA_CODR|=(CSB);
         *AT91C_PIOA_CODR|=(IOR);
         InputData();       
         *AT91C_PIOA_SODR|=(IOR);
         *AT91C_PIOA_SODR|=(CSB);       
         
}
void send_portB_char(unsigned char mdata)
{
        *AT91C_PIOA_CODR|=(A0|A1|A2);
         *AT91C_PIOA_CODR|=(CSB);
        *AT91C_PIOA_CODR|=(IOW);
         
        OutputData(mdata);  
        mDelay1_2uS( );
         *AT91C_PIOA_SODR|=(IOW);
        *AT91C_PIOA_SODR|=(CSB);       
}
void send_portA_char(unsigned char mdata)
{
         *AT91C_PIOA_CODR|=(A0|A1|A2);
         *AT91C_PIOA_CODR|=(CSA);
        *AT91C_PIOA_CODR|=(IOW);
       
        OutputData(mdata);       //
         mDelay1_2uS( ); 
         *AT91C_PIOA_SODR|=(IOW);
        *AT91C_PIOA_SODR|=(CSA); 
}
/*****************************************************************
连接视频的RS-485 接口
******************************************************************/
void IRQ0_pio_c_irq_handler ()
{

 /*       int j;
        int i_temp;
        *AT91C_PIOA_CODR|=(A0|A2);//读状态
        *AT91C_PIOA_SODR|=(A1);
        *AT91C_PIOA_CODR|=(CSB);
        *AT91C_PIOA_CODR|=(IOR);
        //mDelay1_2uS( ); 
        receiver_portb_state=InputData();//读中断的状态  
       
        *AT91C_PIOA_SODR|=(IOR);
        *AT91C_PIOA_SODR|=(CSB); 
        
    //   if((receiver_portb_state&0x04)==0x04)
      //  {
           *AT91C_PIOA_CODR|=(A0|A1|A2); //读数据
           *AT91C_PIOA_CODR|=(CSB);
           *AT91C_PIOA_CODR|=(IOR);
          // mDelay1_2uS( ); 
           receiverdata_portB=InputData();  
          
           *AT91C_PIOA_SODR|=(IOR);
           *AT91C_PIOA_SODR|=(CSB); 
     if((receiver_portb_state&0x04)==0x04) 
     {
           if(receiverdata_portB=='$') IsGyrohead=1;
           if(IsGyrohead==1)
           {
               Gyrodata[gyro_pos]=receiverdata_portB;
               if(gyro_pos>=99 ||receiverdata_portB==0x0A )
               {
                 IsGyrohead=0;
                 i_temp=1;

                 if(Gyrodata[1]=='C')
                 {
                     for(j=0;j<gyro_pos;++j)
                     {
                        ++i_temp;
                        str_compass[j]=Gyrodata[i_temp];
                        if(str_compass[j]=='P'|| i_temp>= gyro_pos ||j>10) break;
                     }
                     str_compass[j]=0; 
                     //compass=atof((char const *)gyrostrTemp);
                    
                     if(Gyrodata[i_temp]=='P')
                     {
                        for(j=0;j<gyro_pos;++j)
                        {
                           ++i_temp;
                           str_pitch[j]=Gyrodata[i_temp];
                           if(str_pitch[j]=='R'|| i_temp>= gyro_pos ||j>10) break;
                        }
                        str_pitch[j]=0; 
                        //pitch=atof((char const *)gyrostrTemp);
                       
                        if(Gyrodata[i_temp]=='R')
                        {
                           for(j=0;j<gyro_pos;++j)
                           {
                              ++i_temp;
                              str_roll[j]=Gyrodata[i_temp];
                              if(str_roll[j]=='X'|| i_temp>= gyro_pos ||j>10) break;
                           }
                           str_roll[j]=0; 
                           //roll=atof((char const *)gyrostrTemp);
                        }
                        
                     }
                   
                 }// if(Gyrodata[1]=='C')
                  gyro_pos=0;
               }//if(gyro_pos>=100 ||receiverdata==0x0A )
               else
               {
                 ++gyro_pos;
               }
           }
 
        }
 
      
*/
}


/***********************************
读罗盘数据
***********************************/
void IRQ1_pio_c_irq_handler ()
{
    #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
        OS_CPU_SR  cpu_sr = 0;
    #endif
        
    OS_ENTER_CRITICAL(); 
    AT91C_BASE_AIC->AIC_ICCR  = AT91C_ID_IRQ1; // 清除 中断
    AT91C_BASE_AIC->AIC_EOICR = 0;            // 中断结束信号
    OS_EXIT_CRITICAL();

        int j;
        int i_temp;
        *AT91C_PIOA_CODR|=(A0|A2);//读状态
        *AT91C_PIOA_SODR|=(A1);
        *AT91C_PIOA_CODR|=(CSA);
        *AT91C_PIOA_CODR|=(IOR);
        //mDelay1_2uS( ); 
        receiver_porta_state=InputData();//读中断的状态  
       
        *AT91C_PIOA_SODR|=(IOR);
        *AT91C_PIOA_SODR|=(CSA); 
        
    //   if((receiver_porta_state&0x04)==0x04)
      //  {
           *AT91C_PIOA_CODR|=(A0|A1|A2); //读数据
           *AT91C_PIOA_CODR|=(CSA);
           *AT91C_PIOA_CODR|=(IOR);
          // mDelay1_2uS( ); 
           receiverdata_portA=InputData();  
          
           *AT91C_PIOA_SODR|=(IOR);
           *AT91C_PIOA_SODR|=(CSA); 
     if((receiver_porta_state&0x04)==0x04) 
     {
           if(receiverdata_portA=='$') IsGyrohead=1;
           if(IsGyrohead==1)
           {
               Gyrodata[gyro_pos]=receiverdata_portA;
               if(gyro_pos>=99 ||receiverdata_portA==0x0A )
               {
                 IsGyrohead=0;
                 i_temp=1;
                 posflag=0;

                 if(Gyrodata[1]=='C')
                 {
                     for(j=0;j<gyro_pos;++j)
                     {
                        ++i_temp;
                        str_compass[j]=Gyrodata[i_temp];
                        if(str_compass[j]=='P'|| i_temp>= gyro_pos ||j>10)
                        { 
                          posflag|=0x01;
                          str_compass[j]=0; 
                          break;
                        }
                     }
                    // str_compass[j]=0; 
                     //compass=atof((char const *)gyrostrTemp);
                    
                     if(Gyrodata[i_temp]=='P')
                     {
                        for(j=0;j<gyro_pos;++j)
                        {
                           ++i_temp;
                           str_pitch[j]=Gyrodata[i_temp];
                           if(str_pitch[j]=='R'|| i_temp>= gyro_pos ||j>10)
                           {
                             posflag|=0x02;
                             str_pitch[j]=0; 
                             break;
                           }
                        }
                      //  str_pitch[j]=0; 
                        //pitch=atof((char const *)gyrostrTemp);
                       
                        if(Gyrodata[i_temp]=='R')
                        {
                           for(j=0;j<gyro_pos;++j)
                           {
                              ++i_temp;
                              str_roll[j]=Gyrodata[i_temp];
                              if((str_roll[j]=='T')||( i_temp>= gyro_pos )||(j>10)) //由于罗盘输出格式的问题,为了兼容,故判断了两种格式
                              {
                              posflag|=0x04;
                              str_roll[j]=0; 
                              //roll=atof((char const *)gyrostrTemp);
                              break;
                              }
                              else if((str_roll[j]=='X')||( i_temp>= gyro_pos)||(j>10)) 
                              {
                                poscount=0;
                                str_roll[j]=0; 
                                break;
                              }
                      //   str_roll[j]=0; 
                           //roll=atof((char const *)gyrostrTemp);
                           }
                     
                      if(Gyrodata[i_temp]=='T')
                        {
                           for(j=0;j<gyro_pos;++j)
                           {
                              ++i_temp;
                              Temperater[j]=Gyrodata[i_temp];
                              if((str_roll[j]=='X')||( i_temp>= gyro_pos)||(j>10)) 
                              {
                                posflag|=0x08;
                                poscount=0;
                                Temperater[j]=0; 
                                break;
                               }
                           }
                           
                        }
                   
                 }
                }
               }// if(Gyrodata[1]=='C')
                  gyro_pos=0;
               }//if(gyro_pos>=100 ||receiverdata==0x0A )
               else
               {
                 ++gyro_pos;
               }
           }
  
      }

}


⌨️ 快捷键说明

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