單片機的MODEM通訊
Setdata:
MOV DPTR,#LSR
MOVX A,@DPTR
JNB ACC.5,Setdata
MOV A,DataNumber;DataNumber記錄發(fā) ;送字符的個數
MOV DPTR,#AtCommand ;AtCommand定義AT命令參數的起始地址
MOVC A,@A+DPTR
MOV DPTR,#THR ;發(fā)送保持寄存器
MOVX @DPTR,A
INC DataNumber
MOV A,DataNumber
CJNE A,#0BH,Setdata ;發(fā)送11個字符
AtCommand:DB “A”,“T”,“S”,“0”,“=”,“2”,“S”,“8”, “=”,“5”,0DH本文引用地址:http://cafeforensic.com/article/171883.htm
(9) MODEM狀態(tài)寄存器(MODEM status register)
豹MSR.0~3=1時,表示自上一次單片機讀MSR寄存器之后,分別反映MODEM控制邏輯的四個輸入信號的狀態(tài)發(fā)生了變化。
豹MSR.0=1時,清除發(fā)送信號(CTS)已經發(fā)生了變化。
豹MSR.1=1時,數據設備就緒信號(DSR)已經發(fā)生了變化。
豹MSR.2=1時,振鈴信號(RI)已經發(fā)生了變化。
豹MSR.3=1時,載波信號(DCD)已經發(fā)生了變化。
豹MSR.4~7四位分別反映MODEM控制邏輯的四個輸入信號的當前狀態(tài)。
豹MSR.4=1時,清除發(fā)送信號(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通訊系統(tǒng)。其中的檢錯寄存器、MODEM狀態(tài)寄存器等應用限于篇幅沒有完全涉及到。有興趣的朋友可以試一試,那么你就會對MODEM通訊有一個比較深刻的認識。
評論