新手入门
- 积分
- 16
- 金钱
- 16
- 注册时间
- 2017-10-20
- 在线时间
- 2 小时
|
发表于 2017-10-20 22:18:09
|
显示全部楼层
当波特率非常高的时候,这些教科书都是不管用的,只有自己搞个FIFO的一级缓冲,不过用C语言似乎不好写的,看看哪位帮我翻译下:
中断部分:
ORG 23H
JBC RI, iUART_RX
JBC TI, iUART_TX
RETI
iUART_RX:
XCH A, SRxIn
ORL A, #0E0H ; 32字节的FIFO 在地址 0xE0 .. 0xFF
XCH A, R0
MOV @R0,SBUF
XCH A, R0
INC A
XCH A, SRxIn
RETI
....
主程序
MOV A, SRxOut
XRL A, SRxIn
ANL A, #1FH
JNZ UART_RX
....
UART_RX:
MOV R0, SRxOut
LOOP:
ORL AR0, #0E0H
MOV A,@R0
处理
INC R0
MOV A, R0
XRL A, SRxIn
ANL A, #1FH
JNZ LOOP
MOV SRxOut, R0
...
我曾用这个程序段搞定了 460800bps 的通讯,还是多个任务并行的,系统不会丢掉任何一个报文 |
|