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

📄 sp2538 demo.lst

📁 这个SP2358外扩串口芯片的C语言源程序。非好好用。
💻 LST
📖 第 1 页 / 共 2 页
字号:
  83   3                              else {                          //子串口2接收到一个字节(输入地址:010)
  84   4                                      Uart2RBuf=SBUF; //缓存子串口2收到的数据,以便接收后续数据
  85   4                                      bUart2RFlag=1;  //置子串口2收到数据标志,便于主程序查询
  86   4                              }
  87   3                      }
  88   2                      else if(AdrIn0){                //子串口1接收到一个字节(输入地址:001)
  89   3                              Uart1RBuf=SBUF;         //缓存子串口1收到的数据,以便接收后续数据
  90   3                              bUart1RFlag=1;          //置子串口1收到数据标志,便于主程序查询
  91   3                      }
  92   2                      else {                                  //子串口0接收到一个字节(输入地址:000)
  93   3                              Uart0RBuf=SBUF;         //缓存子串口0收到的数据,以便接收后续数据
  94   3                              bUart0RFlag=1;          //置子串口0收到数据标志,便于主程序查询
  95   3                      }
  96   2              }
  97   1              
  98   1              else{
  99   2                      TI=0;                                                   //已经产生发送中断,准备解析下一个需要发送的数据
 100   2                      switch(UartPointer){                    //判断即将向哪个子串口发送数据?
 101   3                              case 0:{                                        //准备向子串口0发送数据
 102   4                                      UartPointer++;                  //下一次发送中断准备向子串口1发送数据
 103   4                                      if(Uart0TNum){                  //串口0发送缓存区是否有数据需要发送?
 104   5                                              AdrOut0=0;                      //有数据需要发送,则选通子串口0的地址
 105   5                                              AdrOut1=0;
 106   5                                              AdrOut2=0;
 107   5                                              SBUF=Uart0Tbuf[--Uart0TNum];//将串口0发送缓存中的一个字节
 108   5                                              break;                                          //由子串口0发送到下位机
 109   5                                      }
 110   4                                      else goto T_NopInstruction;     //若子串口0没有数据发送则准备发送空指令
 111   4                              }
 112   3      
 113   3                              case 1:{                                        //准备向子串口1发送数据
 114   4                                      UartPointer++;                  //下一次发送中断准备向串口2发送数据
 115   4                                      if(Uart1TNum){                  //串口1发送缓存区是否有数据需要发送?
 116   5                                              AdrOut0=1;                      //有数据需要发送,则选通子串口1的地址
 117   5                                              AdrOut1=0;
C51 COMPILER V7.20   SP2538_DEMO                                                           03/09/2006 09:31:46 PAGE 3   

 118   5                                              AdrOut2=0;
 119   5                                              SBUF=Uart1TBuf[--Uart1TNum];//将串口1发送缓存中的一个字节
 120   5                                              break;                                          //由子串口1发送到下位机
 121   5                                      }
 122   4                                      else goto T_NopInstruction;     //若子串口1没有数据发送则准备发送空指令
 123   4                              }                                                               //而只能够发送一条空指令用于时序配合
 124   3      
 125   3                              case 2:{                        //准备向子串口2发送数据
 126   4                                      UartPointer++;  //下一次发送中断准备向串口3发送数据
 127   4                                      if(Uart2TNum){                  //串口2发送缓存区是否有数据需要发送?
 128   5                                              AdrOut0=0;                      //有数据需要发送,则选通子串口2的地址
 129   5                                              AdrOut1=1;
 130   5                                              AdrOut2=0;
 131   5                                              SBUF=Uart2TBuf[--Uart2TNum];//将串口2发送缓存中的一个字节
 132   5                                              break;                                          //由子串口2发送到下位机
 133   5                                      }
 134   4                                      goto T_NopInstruction;  //若子串口2没有数据发送则准备发送空指令
 135   4                              }                                                               //而只能够发送一条空指令用于时序配合
 136   3      
 137   3                              case 3:{                        //准备向子串口3发送数据
 138   4                                      UartPointer++;  //下一次发送中断准备向串口4发送数据
 139   4                                      if(Uart3TNum){                  //串口3发送缓存区是否有数据需要发送?
 140   5                                              AdrOut0=1;                      //有数据需要发送,则选通子串口3的地址
 141   5                                              AdrOut1=1;
 142   5                                              AdrOut2=0;
 143   5                                              SBUF=Uart3TBuf[--Uart3TNum];//将串口3发送缓存中的一个字节
 144   5                                              break;                                          //由子串口3发送到下位机
 145   5                                      }
 146   4                                      goto T_NopInstruction;  //若子串口3没有数据发送则准备发送空指令
 147   4                              }                                                               //而只能够发送一条空指令用于时序配合
 148   3      
 149   3                              case 4:{                        //准备向子串口4发送数据
 150   4                                      UartPointer++;  //下一次发送中断准备发送空指令
 151   4                                      if(Uart4TNum){                  //串口4发送缓存区是否有数据需要发送?
 152   5                                              AdrOut0=0;                      //有数据需要发送,则选通子串口4的地址
 153   5                                              AdrOut1=0;
 154   5                                              AdrOut2=1;
 155   5                                              SBUF=Uart4TBuf[--Uart4TNum];//将串口4发送缓存中的一个字节
 156   5                                              break;                                          //由子串口4发送到下位机
 157   5                                      }
 158   4                                      goto T_NopInstruction;  //若子串口4没有数据发送则准备发送空指令
 159   4                              }                                                               //而只能够发送一条空指令用于时序配合
 160   3      
 161   3                              default:{
 162   4                                      UartPointer=0;                  //下一次发送中断准备向串口0发送数据
 163   4      T_NopInstruction:
 164   4                                      AdrOut0=1;                              //选通目串口准备发送空指令或者其他指令
 165   4                                      AdrOut1=0;
 166   4                                      AdrOut2=1;
 167   4                                      if(bInstructFlag){              //判断是否需要发送其他指令?
 168   5                                              bInstructFlag=0;        //清除指令发送标志
 169   5                                              SBUF=InstructBuf;       //将需要发送的指令发送到串口扩展IC
 170   5                                              break;
 171   5                                      }
 172   4                                      else if(Uart0TNum|Uart1TNum|Uart2TNum|Uart3TNum|Uart4TNum){
 173   5                                              SBUF=0; //所有子串口的数据是否都已全部发送

⌨️ 快捷键说明

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