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

📄 sdio.lst

📁 近期完成的一个项目
💻 LST
📖 第 1 页 / 共 5 页
字号:
 206   1      for( i=0;i<time_count;time_count++)
 207   1       delay_us(30);
 208   1      }
 209          
C51 COMPILER V7.05   SDIO                                                                  06/14/2007 16:16:46 PAGE 5   

 210          void Oscillator_Init(void)
 211          {
 212   1         OSCICL=0x08;                    //Internal Oscillator programme to 24MHz.
 213   1         OSCICN=0xC3;                    //Enable Internal oscilator and set dividor to 1
 214   1      }
 215          
 216          void Watchdog_close(void)
 217          {
 218   1         PCA0MD&=~0X40;                  //COSE WATCHDOG
 219   1      }
 220          
 221          void IO_Init(void)
 222          {
 223   1         P2MDOUT=0x08;                   //Config P2.0-P2.3(CLK,CMD,DATA0,led) as push_pull
 224   1         P1MDOUT=0x00;
 225   1         XBR1=0x60;                      //Crossbar enabled
 226   1         P1MDIN&=~0x30;
 227   1         Uart_Reg_Rv_Count=0;
 228   1         Int_Pending=0;
 229   1         Uart_Reg_IIR=0;
 230   1         Data_index=0;
 231   1         Acc_Request_Flag=0;
 232   1      }
 233          
 234          void ADC_Init(void)
 235          {
 236   1         AMX0P=0x04;                    //P1.5    x_axis
 237   1         AMX0N=0x1F;                    //GND(ADC in single-ended mode)
 238   1         ADC0CN=0xC0;  
 239   1         ADC0CF=0x38;                   //Right ajusted
 240   1         REF0CN=0x0A;                  // Vdd used as voltage reference, internal temperature sensor off             
             -    
 241   1      }          
 242          
 243          void Interrupts_Init()
 244          {
 245   1         IE=0xA0;                       //Enabled T2 interrupt  enabled all
 246   1      }
 247          
 248          void ADC(void)
 249          {
 250   1         AMX0P=0x05; 
 251   1         AD0BUSY=0X01;
 252   1         while(AD0BUSY);
 253   1         AD0BUSY=0X01;
 254   1         while(AD0BUSY);
 255   1         Data_Send[0]=ADC0H;  
 256   1         Data_Send[1]=ADC0L;  
 257   1         AMX0P=0x04;                    
 258   1         AD0BUSY=0X01;
 259   1         while(AD0BUSY);
 260   1         AD0BUSY=0X01;
 261   1         while(AD0BUSY);
 262   1         Data_Send[2]=ADC0H;  
 263   1         Data_Send[3]=ADC0L;
 264   1      }
 265          
 266          void Timer_Init(void)
 267          { 
 268   1         TMR2CN =0x04;                               //Timer2 enabled, clock is the system clock divided by 12  
             -                 
 269   1         TMR2RLL=0x00;
C51 COMPILER V7.05   SDIO                                                                  06/14/2007 16:16:46 PAGE 6   

 270   1         TMR2RLH=0xc0;
 271   1         TMR2L  =0x00;
 272   1         TMR2H  =0xc0;
 273   1         timer_index=0;
 274   1      }
 275          
 276          void Timer2_ISR (void) interrupt 5 using 1
 277          {
 278   1         
 279   1         //IE=0;
 280   1         TMR2CN&=0x7F;                              // clear inturrupt overflow flag  
 281   1         //if(++timer_index==1)
 282   1         //{
 283   1        // timer_index=0;
 284   1         SD_BUSY_LED^=1;
 285   1         //SD_BUSY_LED=0;
 286   1         //}
 287   1        ADC(); 
 288   1      }
 289          
 290          unsigned char Read_Byte_SD(void)              //MCU Data READ
 291          { 
 292   1         unsigned char temp=0;
 293   1         unsigned char i;
 294   1         for (i=0; i<8; i++)                        //MSB First
 295   1         {
 296   2          while(SD_CLK_PIN==1) ;                    //WAITING Clock Impuls (Low)
 297   2          temp=(temp<<1)|SD_DATA0_PIN;              //read data from master
 298   2          while(SD_CLK_PIN==0);                         //WAITING Clock Impuls (LOW)       
 299   2         } 
 300   1         return (temp);
 301   1      }
 302          
 303          unsigned char code mask[8]={0x80,0x40,0x20,0x10,8,4,2,1};
 304          void Write_Res_SD_CMD53(unsigned char value1,unsigned char value2)         //MCU CMD WRITE
 305          { 
 306   1         unsigned char i;  
 307   1         for (i=0; i<8; i++) 
 308   1         {
 309   2          while(SD_CLK_PIN==0);                     //WAITING Clock Impuls (Low) 
 310   2          if((value1 & mask[i])!=0)
 311   2              SD_CMD_PIN=1;
 312   2              else SD_CMD_PIN=0;                             
 313   2              if((value2 & mask[i])!=0)
 314   2              SD_DATA0_PIN=1; 
 315   2          else SD_DATA0_PIN=0; 
 316   2          while(SD_CLK_PIN==1);                     //WAITING Clock Impuls (High)   
 317   2         }                         
 318   1      }
 319          
 320          void Write_Byte_SD(unsigned char value)       //MCU Data WRITE
 321          { 
 322   1         unsigned char i;  
 323   1         for (i=0; i<8; i++) 
 324   1         { 
 325   2          while(SD_CLK_PIN==0);                     //WAITING Clock Impuls (Low)
 326   2          if((value & mask[i])!=0)
 327   2              SD_DATA0_PIN=1;                           //Send bit by bit(MSB First)
 328   2          else SD_DATA0_PIN=0;
 329   2          while(SD_CLK_PIN==1);                     //WAITING Clock Impuls (High)   
 330   2         }
 331   1      }
C51 COMPILER V7.05   SDIO                                                                  06/14/2007 16:16:46 PAGE 7   

 332          
 333          void Write_Res_SD(unsigned char value)         //MCU CMD WRITE
 334          { 
 335   1         unsigned char i;  
 336   1         for (i=0; i<8; i++) 
 337   1         {
 338   2          while(SD_CLK_PIN==0);                     //WAITING Clock Impuls (Low) 
 339   2          if((value&mask[i])!=0)
 340   2              SD_CMD_PIN=1;                             //Send bit by bit(MSB First)
 341   2          else SD_CMD_PIN=0; 
 342   2          while(SD_CLK_PIN==1);                     //WAITING Clock Impuls (High)   
 343   2         }                         
 344   1      }
 345          
 346          unsigned char Read_CMD_SD(void)               //MCU CMD READ
 347          { 
 348   1         unsigned char temp=0;
 349   1         unsigned char i;                       
 350   1         for (i=0; i<8; i++)                        //MSB First
 351   1         {
 352   2          while(SD_CLK_PIN==1) ;                    //WAITING Clock Impuls (Low)
 353   2          temp=(temp<<1)|SD_CMD_PIN;                //read data from master
 354   2          while(SD_CLK_PIN==0);                         //WAITING Clock Impuls (High)       
 355   2         } 
 356   1         return (temp);
 357   1      }
 358          
 359          unsigned char CRC7(unsigned char * chr, int cnt) 
 360          { 
 361   1         unsigned int i,a; 
 362   1         unsigned char crc_7,Data; 
 363   1         crc_7=0; 
 364   1         for(a=0;a<cnt;a++) 
 365   1         { 
 366   2           Data=chr[a]; 
 367   2           for (i=0;i<8;i++) 
 368   2          { 
 369   3            crc_7<<=1;
 370   3            if((Data&0x80)^(crc_7&0x80)) 
 371   3            crc_7^=0x09; 
 372   3            Data <<=1; 
 373   3          } 
 374   2         } 
 375   1         crc_7=(crc_7<<1)|1; 
 376   1         return(crc_7); 
 377   1      }
 378          
 379          //ITU-T V.41
 380          //x^16 + x^12 + x^15 + 1
 381          unsigned short
 382          sp_crc16(
 383           unsigned char *buf, 
 384           unsigned char size  
 385           )
 386          {
 387   1      unsigned short crc;
 388   1      unsigned char *data1 = buf;
 389   1      
 390   1      crc = 0;
 391   1      while (size )
 392   1      {
 393   2      crc = crc16_table[((crc >> 8) ^ *(data1++)) & 0xFF] ^ (crc << 8);
C51 COMPILER V7.05   SDIO                                                                  06/14/2007 16:16:46 PAGE 8   

 394   2      size--;
 395   2      }
 396   1      
 397   1      return crc;
 398   1      }
 399          /*unsigned char insert_crc7 (unsigned char *path_trace_message,int cnt)
 400          {
 401            unsigned char crc7_accum = 0;
 402            int i;
 403            unsigned char j;
 404            path_trace_message[0] &= ~0x7f; 
 405                  for (i=0;i<=cnt;++i)
 406            {
 407              crc7_accum =crc7_syndrome_table[(crc7_accum << 1)^path_trace_message[i]];
 408            }
 409            path_trace_message[0] ^= crc7_accum;
 410            path_trace_message[0]=(path_trace_message[0]<<1)|1;
 411            j=path_trace_message[0];
 412            return(path_trace_message[0]);
 413          }*/
 414          
 415          /*unsigned int CRC16(unsigned char * chr, int cnt)
 416          {
 417             unsigned int i,j;
 418             //unsigned char crc_16;
 419             unsigned int  crc_16=0xffff;
 420             for(i=0;i<cnt;i++)
 421            {
 422             crc_16=crc_16^((unsigned int)chr[i]);
 423             for (j=0;j<8;j++)
 424             {
 425               if(crc_16&0x0001)
 426              {
 427               crc_16=(crc_16>>1)^0x8408;
 428              }
 429              else
 430              crc_16=(crc_16>>1);
 431             }
 432            }
 433             crc_16= ~crc_16;
 434             return(crc_16);
 435          }*/
 436          
 437          void  Data_Write(void)
 438          {
 439   1        Write_Byte_SD(Adc_X);
 440   1        Write_Byte_SD(Adc_Y);
 441   1      }
 442          
 443          void Timing_Sync(void)
 444          {
 445   1        while(SD_CLK_PIN==0);
 446   1        while(SD_CLK_PIN==1);
 447   1        while(SD_CLK_PIN==0);                   

⌨️ 快捷键说明

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