INCLUDE "modedefs.bas"
DEFINE OSC 10 '10MHz crystal
' Set receive register to receiver enabled
DEFINE HSER_RCSTA 90h
' Set transmit register to transmitter enabled
DEFINE HSER_TXSTA 20h
' Set baud rate
DEFINE HSER_BAUD 9600
' Set SPBRG directly (normally set by HSER_BAUD)
DEFINE HSER_SPBRG 15
Clear
customer var byte
string var byte [32]'Text Data
pdu VAR BYTE [8] 'pdu data
tmp VAR BYTE [8] 'temporary array
b1 VAR BYTE [4]
x var byte [2]
finalpdu var byte [54]
recvnum var byte [12]
telnum var byte [12]
string1 var byte [8]
ch var byte
OPTION_REG = 0
TRISB = $0F
on Interrupt Goto myint ' Define interrupt handler
INTCON = $90 ' Enable INTE interrupt
loop:
Goto loop ' Infinite Loop
'''''''''''''' Interrupt handler'''''''''''''''''''''''
myint:
Disable ' No interrupts past this point
for x=0 to 9
LookUp X,["0011000B81"],b1
finalpdu(x)=b1
next x
; Taking in Recepient Number
telnum[1]=9
telnum[0]=4
telnum[3]=7
telnum[2]=7
telnum[5]=6
telnum[4]=0
telnum[7]=6
telnum[6]=9
telnum[9]=3
telnum[8]=1
telnum[11]=7
telnum[10]=$F
For X=0 TO 11
LookUp telnum(x),["0123456789"],b1
recvnum(x)=b1
Next X
recvnum(10)="F"
for x=10 to 21
finalpdu(x)=recvnum[x-10]
next x
for x=22 to 29
LookUp (X-22),["0000AA20"],b1
finalpdu(x)=b1
next x
;;;;;;;;;;;;;;;;;;;;;;Message;;;;;;;;;;;;;;;;;;;;; ;
;Taking in Customer
;;;;;;;;;;; Should be deleted ;;;;;;;;;;;;;;;;;;;;;
for x=0 to 16
lookup x,["aaaaaaaaaaaaaaaaa"],b1
customer(x)=b1
next x
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;
for x=0 to 16
lookup2 x,[customer],b1
string(x)=b1
next x
;Taking in String2
For X=0 TO 14
LookUp2 X,[",Reported Fault"],b1
string(x+17)=b1
Next X
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;
;HSerout [str string\32,13,10]
HSerout ["AT+CMGF=0",13,10] 'Set to PDU Mode
HSerout ["AT+CMGS=42",13,10] 'Set to PDU length
hserout [str finalpdu\30]
for x=0 to 7
string1(x)=string(x)
next x
Gosub txt2pdu
for x=0 to 7
string1(x)=string(x+8)
next x
;GoSub txt2pdu
for x=0 to 7
string1(x)=string(x+16)
next x
GoSub txt2pdu
for x=0 to 7
string1(x)=string(x+24)
next x
GoSub txt2pdu
HSerout [26]
INTCON.1 = 0 ' Clear interrupt flag
Resume ' Return to main program
Enable
;-----CONVERSION ROUTINES-------
;---TXT2PDU--(sms encoding)-----
TXT2PDU:
for x=1 to 7
tmp(x) = string1(x) << (8-x)
next x
ch(0)=string1(0)
pdu(0)=tmp(1) + ch(0)
for x=1 to 6
ch(x)=string1(x) >> x
pdu(x)=tmp(x+1) + ch(x)
next x
for x=0 to 6
hserout [hex2 pdu(x)]
next x
RETURN
Bookmarks