微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机的MODEM通讯

单片机的MODEM通讯

时间:03-14 来源:互联网 点击:

(8) 线路状态寄存器(line status register)
豹LSR.0:当接收移位寄存器接收到的字节完全移到接收缓冲寄存器时,该位置1。如果读该寄存器,那么这一位被清零。
豹LSR.1:出现超越错时,这一位被置1。读该寄存器,这一位被清零。
豹LSR.2:出现奇偶校验错时,这一位被置1。读该寄存器,这一位被清零。
豹LSR.3:出现停止位不完整、丢失、空号时,这一位被置1。读该寄存器,这一位被清零。
豹LSR.4:当接收寄存器检测到空号状态已持续一个完整帧传输时间时,这一位被置1。读该寄存器,这一位被清零。
豹LSR.5:当发送的字节从发送保持寄存器移到发送移位寄存器时,该位置1。
豹LSR.6:当发送保持寄存器和发送移位寄存器都没用字节时,该位置1。
豹LSR.7:当奇偶校验错、帧格式错、空号错有一个出现时,该位置1。


Setdata:
MOV DPTR,#LSR
MOVX A,@DPTR
JNB ACC.5,Setdata
MOV A,DataNumber;DataNumber记录发 ;送字符的个数
MOV DPTR,#AtCommand ;AtCommand定义AT命令参数的起始地址
MOVC A,@A+DPTR
MOV DPTR,#THR ;发送保持寄存器
MOVX @DPTR,A
INC DataNumber
MOV A,DataNumber
CJNE A,#0BH,Setdata ;发送11个字符
AtCommand:DB “A”,“T”,“S”,“0”,“=”,“2”,“S”,“8”, “=”,“5”,0DH

(9) MODEM状态寄存器(MODEM status register)
豹MSR.0~3=1时,表示自上一次单片机读MSR寄存器之后,分别反映MODEM控制逻辑的四个输入信号的状态发生了变化。
豹MSR.0=1时,清除发送信号(CTS)已经发生了变化。
豹MSR.1=1时,数据设备就绪信号(DSR)已经发生了变化。
豹MSR.2=1时,振铃信号(RI)已经发生了变化。
豹MSR.3=1时,载波信号(DCD)已经发生了变化。
豹MSR.4~7四位分别反映MODEM控制逻辑的四个输入信号的当前状态。
豹MSR.4=1时,清除发送信号(CTS)有效。
豹MSR.5=1时,数据设备就绪信号(DSR)有效。
豹MSR.6=1时,振铃信号(RI)有效。
豹MSR.7=1时,载波信号(DCD)有效。

(10) 临时数据寄存器(scratchpag register)

可以存储用户信息。

有了上面知识的准备后就可以轻松地写出单片机的MODEM通讯程序。现在可把零散的东西组织起来了。

GM16C550芯片初始化模块
Init_16C550:
豹MOV DPTR,#LCR ;除数锁定允许
豹MOV A,#80H
豹MOVX @DPTR, A
豹MOV DPTR,#LSB ;波特率为9600baud
豹MOV A,#0CH
豹MOVX @DPTR, A
豹INC DPTR
豹CLR A
豹MOVX @DPTR, A
豹MOV DPTR,#LCR;通讯传输长度为8位,停止 ;位为1,偶校验
豹MOV A,#1BH
豹MOVX @DPTR, A
豹MOV DPTR,#MCR;异步串口芯片的DTR。RTS ;引脚送出逻辑低电平
豹MOV A,#03H
豹MOVX @DPTR,A
豹MOV DPTR,#IER
豹MOV A,#01H
豹MOVX @DPTR,A

采用中断的方式接数据
Interrupt2:
豹PUSH ACC
豹PUSH DPH
豹PUSH DPL
豹PUSH PSW
豹MOV DPTR,#RHR ;接受数据
豹MOVX A,@DPTR
豹……………………
豹POP PSW
豹POP DPL
豹POP DPH
豹POP ACC
豹RETI

至此,完成了一个小型的单片机MODEM通讯系统。其中的检错寄存器、MODEM状态寄存器等应用限于篇幅没有完全涉及到。有兴趣的朋友可以试一试,那么你就会对MODEM通讯有一个比较深刻的认识。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top