📄 sp2539 demo.lst
字号:
99 3 bUart1RFlag=1; //置子串口1收到数据标志,便于主程序查询
100 3 }
101 2 else { //子串口0接收到一个字节(输入地址:000)
102 3 Uart0RBuf=SBUF; //缓存子串口0收到的数据,以便接收后续数据
103 3 bUart0RFlag=1; //置子串口0收到数据标志,便于主程序查询
104 3 }
105 2 }
106 1
107 1 else{
108 2 TI=0; //已经产生发送中断,准备解析下一个需要发送的数据
109 2 switch(UartPointer){ //判断即将向哪个子串口发送数据?
110 3 case 0:{ //准备向子串口0发送数据
111 4 UartPointer++; //下一次发送中断准备向子串口1发送数据
112 4 // if((--Uart0CoefBuf)==0){ //由于子串口0的波特率为9600bps,
113 4 // Uart0CoefBuf=Uart0Coef; //所以程序中不用定义和使用这两个变量
114 4 if(Uart0TNum){ //串口0发送缓存区是否有数据需要发送?
115 5 AdrOut0=0; //有数据需要发送,则选通子串口0的地址
116 5 AdrOut1=0;
117 5 AdrOut2=0;
C51 COMPILER V7.20 SP2539_DEMO 03/09/2006 09:30:40 PAGE 3
118 5 SBUF=Uart0Tbuf[--Uart0TNum];//将串口0发送缓存中的一个字节
119 5 break; //由子串口0发送到下位机
120 5 }
121 4 else goto T_NopInstruction; //若子串口0没有数据发送则准备发送空指令
122 4 // }
123 4 // else goto T_NopInstruction;
124 4 }
125 3
126 3 case 1:{ //准备向子串口1发送数据
127 4 UartPointer++; //下一次发送中断准备向串口2发送数据
128 4 if((--Uart1CoefBuf)==0){ //由于子串口1的波特率为4800,需要进行二分
129 5 Uart1CoefBuf=Uart1Coef; //频时序处理,只有时序到达后才可发送数据
130 5 if(Uart1TNum){ //串口1发送缓存区是否有数据需要发送?
131 6 AdrOut0=1; //有数据需要发送,则选通子串口1的地址
132 6 AdrOut1=0;
133 6 AdrOut2=0;
134 6 SBUF=Uart1TBuf[--Uart1TNum];//将串口1发送缓存中的一个字节
135 6 break; //由子串口1发送到下位机
136 6 }
137 5 else goto T_NopInstruction; //若子串口1没有数据发送则准备发送空指令
138 5 }
139 4 else goto T_NopInstruction; //若分频时间没有到则不能向子串口1发送数据
140 4 } //而只能够发送一条空指令用于时序配合
141 3
142 3 case 2:{ //准备向子串口2发送数据
143 4 UartPointer++; //下一次发送中断准备向串口3发送数据
144 4 if((--Uart2CoefBuf)==0){ //由于子串口2的波特率为2400,需要进行四分
145 5 Uart2CoefBuf=Uart2Coef; //频时序处理,只有时序到达后才可发送数据
146 5 if(Uart2TNum){ //串口2发送缓存区是否有数据需要发送?
147 6 AdrOut0=0; //有数据需要发送,则选通子串口2的地址
148 6 AdrOut1=1;
149 6 AdrOut2=0;
150 6 SBUF=Uart2TBuf[--Uart2TNum];//将串口2发送缓存中的一个字节
151 6 break; //由子串口2发送到下位机
152 6 }
153 5 else goto T_NopInstruction; //若子串口2没有数据发送则准备发送空指令
154 5 }
155 4 else goto T_NopInstruction; //若分频时间没有到则不能向子串口2发送数据
156 4 } //而只能够发送一条空指令用于时序配合
157 3
158 3 case 3:{ //准备向子串口3发送数据
159 4 UartPointer++; //下一次发送中断准备向串口4发送数据
160 4 if((--Uart3CoefBuf)==0){ //由于子串口3的波特率为1200,需要进行四分
161 5 Uart3CoefBuf=Uart3Coef; //频时序处理,只有时序到达后才可发送数据
162 5 if(Uart3TNum){ //串口3发送缓存区是否有数据需要发送?
163 6 AdrOut0=1; //有数据需要发送,则选通子串口3的地址
164 6 AdrOut1=1;
165 6 AdrOut2=0;
166 6 SBUF=Uart3TBuf[--Uart3TNum];//将串口3发送缓存中的一个字节
167 6 break; //由子串口3发送到下位机
168 6 }
169 5 else goto T_NopInstruction; //若子串口3没有数据发送则准备发送空指令
170 5 }
171 4 else goto T_NopInstruction; //若分频时间没有到则不能向子串口3发送数据
172 4 } //而只能够发送一条空指令用于时序配合
173 3
174 3 case 4:{ //准备向子串口4发送数据
175 4 UartPointer++; //下一次发送中断准备发送空指令
176 4 if((--Uart4CoefBuf)==0){ //由于子串口4的波特率为600,需要进行四分
177 5 Uart4CoefBuf=Uart4Coef; //频时序处理,只有时序到达后才可发送数据
178 5 if(Uart4TNum){ //串口4发送缓存区是否有数据需要发送?
179 6 AdrOut0=0; //有数据需要发送,则选通子串口2的地址
C51 COMPILER V7.20 SP2539_DEMO 03/09/2006 09:30:40 PAGE 4
180 6 AdrOut1=0;
181 6 AdrOut2=1;
182 6 SBUF=Uart4TBuf[--Uart4TNum];//将串口4发送缓存中的一个字节
183 6 break; //由子串口4发送到下位机
184 6 }
185 5 else goto T_NopInstruction; //若子串口4没有数据发送则准备发送空指令
186 5 }
187 4 else goto T_NopInstruction; //若分频时间没有到则不能向子串口4发送数据
188 4 } //而只能够发送一条空指令用于时序配合
189 3
190 3 default:{
191 4 UartPointer=0; //下一次发送中断准备向串口0发送数据
192 4 T_NopInstruction:
193 4 AdrOut0=1; //选通目串口准备发送空指令或者其他指令
194 4 AdrOut1=0;
195 4 AdrOut2=1;
196 4 if(bInstructFlag){ //判断是否需要发送其他指令?
197 5 bInstructFlag=0; //清除指令发送标志
198 5 SBUF=InstructBuf; //将需要发送的指令发送到串口扩展IC
199 5 break;
200 5 }
201 4 else if(Uart0TNum|Uart1TNum|Uart2TNum|Uart3TNum|Uart4TNum){
202 5 SBUF=0; //判断所有子串口是否都已发送完毕
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -