📄 uart.lst
字号:
184 1
185 1 if(tx0.iPut != tx0.iGet) { //发送到MCU com2
186 2 LOC_BYTE(UART2BASE) = XBYTE[tx0.iBase + tx0.iGet];
187 2 if(++tx0.iGet == tx0.iLen){
188 3 tx0.iGet = 0;
189 3 }
190 2 }
191 1
192 1 if(tx1.iPut != tx1.iGet) { //发送到镜头 com1
193 2 LOC_BYTE(UART1BASE) = XBYTE[tx1.iBase + tx1.iGet];
194 2 if(++tx1.iGet == tx1.iLen){
195 3 tx1.iGet = 0;
196 3 }
197 2 }
198 1
199 1 if(tx3.iPut != tx3.iGet) { //发送到编解码 com4
200 2 LOC_BYTE(UART4BASE) = XBYTE[tx3.iBase + tx3.iGet];
201 2 if(++tx3.iGet == tx3.iLen){
202 3 tx3.iGet = 0;
203 3 }
204 2 }
205 1
206 1 if(tx4.iPut != tx4.iGet) { //W78E516B serial(not use)
207 2 SBUF = XBYTE[tx4.iBase + tx4.iGet];
208 2 if(++tx4.iGet == tx4.iLen){
209 3 tx4.iGet = 0;
210 3 }
211 2 }
212 1 /*
213 1 //TL16554已经改为中断接收
214 1 UART_IIR = LOC_BYTE(UART2BASE+UARTIIR_OFFSET);
215 1 if ((UART_IIR & 0x04)) { //从MCU接收
216 1 XBYTE[rx0.iBase + rx0.iPut] = LOC_BYTE(UART2BASE);
217 1 if(++rx0.iPut == rx0.iLen ){
218 1 rx0.iPut = 0;
219 1 }
220 1 }
221 1
222 1 UART_IIR = LOC_BYTE(UART3BASE+UARTIIR_OFFSET);
223 1 if ((UART_IIR & 0x04)) { //从遥控器接收
224 1 XBYTE[rx2.iBase + rx2.iPut] = LOC_BYTE(UART3BASE);
225 1 if(++rx2.iPut == rx2.iLen ){
226 1 rx2.iPut = 0;
227 1 }
228 1 telecontrol_tmr_cnt = 0;
229 1 }
230 1 */
231 1 }// end of Timer0()
232
233 void External0(void) interrupt 0
234 {
235 1 /*if(g711data< 0x7000) {
236 1 XBYTE[g711data+ext0cnt] = LOC_BYTE(G711_ADDR);
237 1 XBYTE[g711data+ext0cnt] = LOC_BYTE(G711_ADDR);
238 1 XBYTE[g711data+ext0cnt++] = LOC_BYTE(0x9f01);
239 1 }
240 1 if(ext0cnt==255)
241 1 g711data += 0x100;
C51 COMPILER V6.00i UART 10/22/2004 10:43:05 PAGE 5
242 1 _nop_();
243 1 */
244 1 ext0cnt= LOC_BYTE(G711_ADDR);
245 1 ext0cnt= LOC_BYTE(0x9f01);
246 1 LOC_BYTE(G711_ADDR)= ext0cnt;
247 1 }
248
249 void External1(void) interrupt 2
250 {
251 1 uint8 ReadIntID,LSRtmp,i;
252 1
253 1 //UART1(NULL)
254 1 if((LOC_BYTE(CPLDINTR_ADDR) & 0x01) ){
255 2 ReadIntID = LOC_BYTE(UART1BASE+UARTIIR_OFFSET);
256 2 switch ((ReadIntID & 0x0f) ) {
257 3 case 0x06: //LSR
258 3 LSRtmp = LOC_BYTE(UART1BASE+UARTLSR_OFFSET);
259 3 break;
260 3 case 0x04: //RBR
261 3 i = LOC_BYTE(UART1BASE); //TRIGGER LEVEL = 1 CHARACTOR
262 3 break;
263 3 case 0x0c: //time_out
264 3 i = LOC_BYTE(UART1BASE);
265 3 break;
266 3 case 0x02: //THRE
267 3 i = LOC_BYTE(UART1BASE+UARTIIR_OFFSET);
268 3 //LOC_BYTE(UART1BASE) = 0x55; //Can send 1-16 charactor once.
269 3 break;
270 3 default: break;
271 3 }
272 2 }
273 1
274 1 //UART2(连接MCU)
275 1 if((LOC_BYTE(CPLDINTR_ADDR) & 0x02) ){
276 2 ReadIntID = LOC_BYTE(UART2BASE+UARTIIR_OFFSET);
277 2 switch ((ReadIntID & 0x0f) ) {
278 3 case 0x06: //LSR
279 3 LSRtmp = LOC_BYTE(UART2BASE+UARTLSR_OFFSET);
280 3 break;
281 3 case 0x04: //RBR
282 3 XBYTE[rx0.iBase + rx0.iPut] = LOC_BYTE(UART2BASE); //TRIGGER LEVEL = 1 CHARACTOR
283 3 if(++rx0.iPut == rx0.iLen ){
284 4 rx0.iPut = 0;
285 4 }
286 3 break;
287 3 case 0x0c: //time_out
288 3 i = LOC_BYTE(UART2BASE);
289 3 break;
290 3 case 0x02: //THRE
291 3 i = LOC_BYTE(UART2BASE+UARTIIR_OFFSET);
292 3 //LOC_BYTE(UART2BASE) = 0x55; //Can send 1-16 charactor once.
293 3 break;
294 3 default: break;
295 3 }
296 2 }
297 1
298 1 //UART3(连接遥控器)
299 1 if((LOC_BYTE(CPLDINTR_ADDR) & 0x04) ){
300 2 ReadIntID = LOC_BYTE(UART3BASE+UARTIIR_OFFSET);
301 2 switch ((ReadIntID & 0x0f) ) {
302 3 case 0x06: //LSR
303 3 LSRtmp = LOC_BYTE(UART3BASE+UARTLSR_OFFSET);
C51 COMPILER V6.00i UART 10/22/2004 10:43:05 PAGE 6
304 3 break;
305 3 case 0x04: //RBR
306 3 XBYTE[rx2.iBase + rx2.iPut] = LOC_BYTE(UART3BASE); //TRIGGER LEVEL = 1 CHARACTOR
307 3 if(++rx2.iPut >= rx2.iLen ){
308 4 rx2.iPut = 0;
309 4 }
310 3 break;
311 3 case 0x0c: //time_out
312 3 i = LOC_BYTE(UART3BASE);
313 3 break;
314 3 case 0x02: //THRE
315 3 i = LOC_BYTE(UART3BASE+UARTIIR_OFFSET);
316 3 //LOC_BYTE(UART3BASE) = 0x55; //Can send 1-16 charactor once.
317 3 break;
318 3 default: break;
319 3 }
320 2 }
321 1
322 1 //UART4(Codec)
323 1 if((LOC_BYTE(CPLDINTR_ADDR) & 0x08) ){
324 2 ReadIntID = LOC_BYTE(UART4BASE+UARTIIR_OFFSET);
325 2 switch ((ReadIntID & 0x0f) ) {
326 3 case 0x06: //LSR
327 3 LSRtmp = LOC_BYTE(UART4BASE+UARTLSR_OFFSET);
328 3 break;
329 3 case 0x04: //RBR
330 3 i = LOC_BYTE(UART4BASE);
331 3 break;
332 3 case 0x0c: //time_out
333 3 i = LOC_BYTE(UART4BASE);
334 3 break;
335 3 case 0x02: //THRE
336 3 i = LOC_BYTE(UART4BASE+UARTIIR_OFFSET);
337 3 //LOC_BYTE(UART4BASE) = 0x55; //Can send 1-16 charactor once.
338 3 break;
339 3 default: break;
340 3 }
341 2 }
342 1 } // end of External1()
343
344 #if 0
uint8 SetBaudRate(uint16 uart_addr, uint8 Rate )
{
uint8 tmp;
LOC_BYTE(uart_addr + UARTMCR_OFFSET) = EXTINTDIS; //DISABLE EXTINT
tmp = LOC_BYTE(uart_addr + UARTLCR_OFFSET);
LOC_BYTE(uart_addr + UARTLCR_OFFSET) = tmp | LCRDLAB; //LCRDLAB=1 Access DLL and DLM.
LOC_BYTE(uart_addr + UARTDLL_OFFSET) = RATE9600;
LOC_BYTE(uart_addr + UARTDLM_OFFSET) = 0;
LOC_BYTE(uart_addr + UARTLCR_OFFSET) &= 0x7f; //LCR7=0 to Access Receiver Buffer
LOC_BYTE(uart_addr + UARTMCR_OFFSET) = EXTINTENABLE; //ENABLE EXTINT
}
#endif
358
359
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1576 ----
CONSTANT SIZE = 119 ----
XDATA SIZE = 64 13
C51 COMPILER V6.00i UART 10/22/2004 10:43:05 PAGE 7
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -