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

📄 si4421.lst

📁 c8051f310xmodembootloader.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
 168   1              unsigned char i;
 169   1              unsigned int u,k;
 170   1              //P2 = 0xFF;
 171   1              sdi = 0;
 172   1              nsel = 0;
 173   1      //      spisendcommand(0xca83);
 174   1              spisendcommand(0x8228);//transimission starts turn on crystal
C51 COMPILER V8.16   SI4421                                                                12/10/2009 11:19:18 PAGE 4   

 175   1      //      sdi = 0;
 176   1      //      nsel = 0;
 177   1      
 178   1              len=len+4;         //字节固定同步头
 179   1      
 180   1              for(i=0;i<len;i++)
 181   1              {
 182   2                      nsel=0;
 183   2                      //while(!sdo);   
 184   2                      
 185   2                      for(k=0;k<6000;k++)
 186   2                        {
 187   3                          if(sdo)
 188   3                               {
 189   4                                break;
 190   4                               }
 191   3                        }
 192   2                  if(k==6000) 
 193   2                      {        // nres=0;
 194   3                               //  delayms(50);
 195   3                               //  nres=1;
 196   3                            ia442xinit();
 197   3                    spirevtwobyte();
 198   3                    spisendcommand(0x8288);                       //电源管理 whole receive crystal on
 199   3                    spisendcommand(0xca83);                           //FIFO COMMAND
 200   3                                if(DEBUG) Printf_String("\r\n[msg:]003 si4421's sdo is dead but she can receive");
 201   3                                return;
 202   3                      }
 203   2                      
 204   2                 
 205   2                      u=0xb8;
 206   2                      u<<=8;
 207   2                      u+=txdata[i];
 208   2                      spisendcommand(u);
 209   2              }
 210   1                      nsel=0;
 211   1                      //while(!sdo);
 212   1                      for(k=0;k<6000;k++)
 213   1                        {
 214   2                          if(sdo)
 215   2                               {
 216   3                                break;
 217   3                               }
 218   2                        }
 219   1                  if(k==6000) 
 220   1                      {        
 221   2                            // nres=0;
 222   2                               //  delayms(50);
 223   2                               //  nres=1;
 224   2                               
 225   2                            ia442xinit();
 226   2                    spirevtwobyte();
 227   2                    spisendcommand(0x8288);                       //电源管理 whole receive crystal on
 228   2                    spisendcommand(0xca83);                           //FIFO COMMAND
 229   2                                if(DEBUG) Printf_String("\r\n[msg:]004 si4421's sdo is dead but she can receive");
 230   2                                return;
 231   2                      }
 232   1                      spisendcommand(0xb8aa);//Transmitter Register Write Command byte aa
 233   1                      nsel=0;
 234   1                  //  while(!sdo);    
 235   1                      for(k=0;k<6000;k++)
 236   1                        {
C51 COMPILER V8.16   SI4421                                                                12/10/2009 11:19:18 PAGE 5   

 237   2                          if(sdo)
 238   2                               {
 239   3                                break;
 240   3                               }
 241   2                        }
 242   1                  if(k==6000)
 243   1                       {
 244   2                            ia442xinit();
 245   2                    spirevtwobyte();
 246   2                    spisendcommand(0x8288);                       //电源管理 whole receive crystal on
 247   2                    spisendcommand(0xca83);                           //FIFO COMMAND
 248   2                                if(DEBUG) Printf_String("\r\n[msg:]005 si4421's sdo is dead but she can receive");
 249   2                                return;
 250   2                       }      
 251   1                      spisendcommand(0x8288);//Enables the whole receiver chain Turns on the crystal
 252   1                      spirevtwobyte();//读状态
 253   1                      nsel=1;
 254   1      }
 255          /******************************************************************************
 256          ** 函数: spisendcommand()
 257          ** 入参: unsigned int x
 258          ** 返回: 
 259          ** 说明: 写指令
 260          ******************************************************************************/
 261          void spisendcommand(unsigned int x)     
 262          {
 263   1              unsigned char comdata1,comdata2;
 264   1              unsigned int a;
 265   1              a=x;
 266   1              nsel=0;
 267   1              comdata2=a;
 268   1              comdata1=a>>8;
 269   1              spisendbyte(comdata1);
 270   1              spisendbyte(comdata2);
 271   1              nsel=1;
 272   1      }
 273          /******************************************************************************
 274          ** 函数: spisendbyte(unsigned char x)
 275          ** 入参: unsigned char x
 276          ** 返回: 
 277          ** 说明: 写8位数据
 278          ******************************************************************************/
 279          void spisendbyte(unsigned char x)       
 280          {
 281   1              unsigned char i,bytedata;
 282   1              bytedata=x;
 283   1              for(i=0;i<8;i++)
 284   1              {
 285   2                      sck=0;
 286   2                      sdi=bytedata&0x80;
 287   2                      bytedata=bytedata<<1;
 288   2                      sck=1;
 289   2              }
 290   1              sck=0;
 291   1              sdi=0;
 292   1      }
 293          /******************************************************************************
 294          ** 函数: unsigned int spirevtwobyte()
 295          ** 入参: u
 296          ** 返回: 
 297          ** 说明: 读状态
 298          ******************************************************************************/
C51 COMPILER V8.16   SI4421                                                                12/10/2009 11:19:18 PAGE 6   

 299          unsigned int spirevtwobyte()                    //读状态
 300          {
 301   1              unsigned int u;
 302   1              nsel=0;
 303   1              u=spirevbyte();
 304   1              u<<=8;
 305   1              u+=spirevbyte();
 306   1              nsel=1;
 307   1              return(u);
 308   1      }
 309          /******************************************************************************
 310          ** 函数: unsigned char spirevbyte()
 311          ** 入参: 
 312          ** 返回: bytedata
 313          ** 说明: 读8位数据
 314          ******************************************************************************/
 315          unsigned char spirevbyte()                              
 316          {
 317   1              unsigned char i,bytedata;
 318   1              sdi=0;
 319   1              sck=0;
 320   1              bytedata=0;
 321   1              for(i=0;i<8;i++)
 322   1              {
 323   2                      sck=1;
 324   2                      bytedata=bytedata<<1;
 325   2                      if(sdo) bytedata+=1;
 326   2                      sck=0;
 327   2              }
 328   1              return(bytedata);
 329   1      
 330   1      }
 331          /*********************************@end@**************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    834    ----
   CONSTANT SIZE    =    265    ----
   XDATA SIZE       =   ----      12
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =      1    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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