Это скачано не помню с какого форума.Может отсюда
http://www.microchip.su/showthread.php?t=1130. Автор утверждает что это работает на скорости 57600.Я не проверял.
;************************************************* *****************************
; *
; Filename: Siemens soft enable *
; Date: 19.06.2006 *
; File Version: 1.1 *
; *
; Author: by Garmash Gennadiy *
; *
; *
;************************************************* *****************************
; disable CHARGE
BCF charge
MOVLW .12
CALL DELAY ;~3 SEC
; ENABLE CHARGE
BSF charge
; PAUSE
BCF INTCON,GIE
;DISABLE USART
;use software usart
BCF RCSTA,SPEN
MOVLW .40
CALL DELAY ; ~10 SEC
; SEND “0x05,0x02,0x07,0x06,0x0C”
MOVLW 0x05
MOVWF BUTE_RS232
CALL SEND_BUTE ;символ в BUTE_RS232
MOVLW 0x02
MOVWF BUTE_RS232
CALL SEND_BUTE ;символ в BUTE_RS232
MOVLW 0x07
MOVWF BUTE_RS232
CALL SEND_BUTE ;символ в BUTE_RS232
MOVLW 0x06
MOVWF BUTE_RS232
CALL SEND_BUTE ;символ в BUTE_RS232
MOVLW 0x0C
MOVWF BUTE_RS232
CALL SEND_BUTE ;символ в BUTE_RS232
; PAUSE 10 SEC
MOVLW .60
CALL DELAY ;~10 SEC
BSF INTCON,GIE
;ENABLE USART
BSF RCSTA,SPEN
; SEND AT
MOVLW 'A'
CALL SEND_TXT
MOVLW 'T'
CALL SEND_TXT
MOVLW 0DH
CALL SEND_TXT
MOVLW 0AH
CALL SEND_TXT
; WAIT "OK"
MOVLW .1
CALL DELAY ;~0.25 SEC
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
;************************************************* *********************
; ПОДПРОГРАММЫ *
;************************************************* *********************
;************************************************* ********
;================================================= ==============================================
;передача символа по протоколу RS232, скорость 57600, data = 8, nonparity,
; 1 stopbit, 4 Мгц, символ в BUTE_RS232
;================================================= ==============================================
SEND_BUTE ;символ в BUTE_RS232
bCf INTCON,GIE ;DISABLE interrupts.
CLRWDT ; СБРОС СТОРОЖЕВОГО ТАЙМЕРА
BSF _TxD
call delay_17mks
call delay_17mks
bcf _TxD ; стартовый бит
call delay_17mks
NOP
NOP
bsf _TxD
btfss BUTE_RS232,0
bcf _TxD
call delay_17mks ;BIT 0
bsf _TxD
btfss BUTE_RS232,1
bcf _TxD
call delay_17mks ;BIT 1
bsf _TxD
btfss BUTE_RS232,2
bcf _TxD
call delay_17mks ;BIT 2
NOP
bsf _TxD
btfss BUTE_RS232,3
bcf _TxD
call delay_17mks ;BIT 3
bsf _TxD
btfss BUTE_RS232,4
bcf _TxD
call delay_17mks ;BIT 4
bsf _TxD
btfss BUTE_RS232,5
bcf _TxD
call delay_17mks ;BIT 5
NOP
bsf _TxD
btfss BUTE_RS232,6
bcf _TxD
call delay_17mks ;BIT 6
bsf _TxD
btfss BUTE_RS232,7
bcf _TxD
call delay_17mks ;BIT 7
bsf _TxD ; стоповый бит
call delay_17mks
bsf INTCON,GIE ;enable interrupts.
return
;=========================================
delay_17mks
MOVLW .3
MOVWF DELAY_COUNTER_1
delay_17mks_CIKLE
decfsz DELAY_COUNTER_1,F
goto delay_17mks_CIKLE
return