SMS gecontroleerd met behulp van PIC16F873A

J

jeremy GOH

Guest
Hi guys,
ik ben momenteel met een PIC16F873A als MCU en Siemens TC35 GSM-modem voor de uitvoering van een SMS-gecontroleerde project.Kan ik een verzoek voor broncode plz?Zou waarderen ur helpen, want
ik ben al testen met de bestaande ASM code die
ik heb verkregen uit een fren die niet echt werkt.

De codes zijn als volgt:
include "P16F873a.inc"
lijst p = 16F873a, r = dec
errorlevel -302
__Config _XT_OSC & _WDT_OFF & _BODEN_OFF & _LVP_OFF & _PWRTE_ON

cblock 0x20
w_temp
p_temp
s_temp
msec
sec
min
counter
input
r0
r1
r2
fault_count
vlag
bitcnt
toevoegen
Winkel1
PIN1
PIN2
pin3
pin4
Datal
data1
data2
data3
data4
data5
data6
data7
data8
data9
data10
data11
data12
data13
data14
data15
data16
data17
data18
data19
data20
endc

XD EQU D'123 '; kristal divider (123)
org 0x2100
de "1234"
org 0x00
goto startorg 0x04; void interrupt (void)
ISR
BCF INTCON, GIE
movwf w_temp
swapf STATUS, W
movwf s_temp
movfw PCLATH
movwf p_temp
btfsc INTCON, T0IF
goto _interrupt
goto INTX

_interrupt
BCF INTCON, T0IF
incf msec, F
movf msec, W
sublw XD
btfss STATUS, Z
Goto INTX
clrf msec
incf sec, F
gesprek verhogen
movf sec, W
sublw 0x3c
btfss STATUS, Z
Goto INTX
clrf sec
incf min, F
movf min, W
sublw 0x3c
btfss STATUS, Z
Goto INTX
clrf min
Goto INTX

INTX
movlw D'4 '
movwf TMR0
movfw p_temp
movwf PCLATH
swapf s_temp, W
movwf STATUS
swapf w_temp, F
swapf w_temp, W
BSF INTCON, GIE
retfie

toenemen
incf counter, F
movlw D'5 '
xorwf counter, w
btfsc STATUS, Z
clrf counter
terug_initialize
BSF STATUS, RP0
movlw B'00000100 '
; TOCS = OSC, PSA = TMR0
movwf OPTION_REG
BCF STATUS, RP0
movlw 0xa0
movwf INTCON
terug

;------------------------------------------------- --------------------------------

start
BSF STATUS, RP0
movlw H'06 '
movwf ADCON1
movlw B'00000000 '
movwf TRISA
movlw B'11110000 '
movwf TRISB
movlw B'10000000 '
movwf TRISC
MOVLW B'00000101 '
MOVWF OPTION_REG
oproep empty_reg
movlw D'10 '
oproep vertraging
oproep RS232
oproep _initialize
oproep at_cmgf
goto belangrijkste

empty_reg
movlw 0x20
movwf FSR
empty_reg1
movlw H'7F '
xorwf FSR, W
btfsc STATUS, Z
terug
clrf INDF
incf FSR, F
goto empty_reg1

; SET BAUD RATE Om te communiceren met pc
; BOOT BAUD RATE = 9600, geen pariteit, 1 stopbit

RS232 BSF STATUS, RP0
movlw 0x19
movwf SPBRG
movlw b'00100100 '
movwf TXSTA
BCF STATUS, RP0
movlw b'10000000 '
movwf RCSTA

clrf Datal
wikkelen decfsz Datal, F

START_UP
goto vestigen

movf RCREG, W
movf RCREG, W
movf RCREG, W

terug

; RECEIVE KARAKTER VAN RS232 EN WINKEL IN W
; Deze routine NIET TERUG TOT EEN AARD IS RECEIVED

Ontvang clrf counter
clrf vlag
clrf input
BSF RCSTA, CREN
Receive1
movf counter, W
addlw D'255 '- D'2' 1
btfsc STATUS, C
goto bye
btfss PIR1, RCIF
goto Receive1
BCF RCSTA, CREN
movf RCREG, W
movwf input
terug

bye movf RCREG, W
movwf input
BSF vlag, 0
retlw ''

; VERZENDEN AARD IN W via RS232 en wacht tot EINDPRODUKT VERZENDENDE

stuur BCF INTCON, GIE
movwf TXREG

TransWt BSF STATUS, RP0
WtHere btfss TXSTA, TRMT
goto WtHere
BSF INTCON, GIE
terug

;------------------------------------------------- -------------------------------

vertraging
movwf r0
delay1 movlw D'133 '
movwf r1
delay2 movlw D'250 "
movwf r2
delay3 decfsz r2, F
goto delay3
decfsz r1, F
goto delay2
decfsz r0, F
goto vertraging
terug

;------------------------------------------------- ------------------------------

; Schrijft data naar EEPROM ROUTINETESTS aangepast voor PIC16F87X HULPMIDDELEN
; VOLGENS INFORMATIEBLAD DS30292A Page 43
; Deze routine wordt aangegaan met W HOLDING
; De EEPROM BYTE adres waar GEGEVENS
; Zal worden opgeslagen.De gegevens die moeten worden OPGESLAGEN
; Wordt gehouden in winkel1

SETPRM
BCF STATUS, RP0
movwf EEADR
BCF STATUS, RP1
movf winkel1, W
BSF STATUS, RP1
movwf EEDATA
BSF STATUS, RP0
BCF EECON1, EEPGD
BSF EECON1, Wren

MANUAL movlw H'55 '
movwf EECON2
movlw H'AA '
movwf EECON2
BSF EECON1, WR

CHKWRT
btfss PIR2, EEIF
goto CHKWRT
BCF PIR2, EEIF

terug

;..............

; Data te lezen van EEPROM ROUTINETESTS aangepast voor PIC16F87X HULPMIDDELEN
; VOLGENS INFORMATIEBLAD DS30292A Page 43
; Deze routine wordt aangegaan met W HOLDING
; De EEPROM BYTE ADRES TE LEZEN
PRMGET
movwf EEADR
BSF STATUS, RP0
BCF EECON1, EEPGD
BSF EECON1, RD
BCF STATUS, RP0
movf EEDATA, W
BCF STATUS, RP1
terug

;------------------------------------------------- -----------------------------

; Alfabetten aan GSM-modem

A_ movlw "A"
uitnodiging sturen
terug

B_ movlw 'B'
uitnodiging sturen
terug

C_ movlw 'C'
uitnodiging sturen
terug

D_ movlw 'D'
uitnodiging sturen
terug

E_ movlw "E"
uitnodiging sturen
terug

F_ movlw 'F'
uitnodiging sturen
terug

G_ movlw 'G'
uitnodiging sturen
terug

H_ movlw 'H'
uitnodiging sturen
terug

I_ movlw 'ik'
uitnodiging sturen
terug

J_ movlw 'J'
uitnodiging sturen
terug

K_ movlw 'K'
uitnodiging sturen
terug

L_ movlw "L"
uitnodiging sturen
terug

M_ movlw 'M'
uitnodiging sturen
terug

N_ movlw 'N'
uitnodiging sturen
terug

O_ movlw 'O'
uitnodiging sturen
terug

P_ movlw 'P'
uitnodiging sturen
terug

Q_ movlw 'Q'
uitnodiging sturen
terug

R_ movlw "R"
uitnodiging sturen
terug

S_ movlw 'S'
uitnodiging sturen
terug

T_ movlw 'T'
uitnodiging sturen
terug

U_ movlw 'U'
uitnodiging sturen
terug

V_ movlw 'V'
uitnodiging sturen
terug

W_ movlw 'W'
uitnodiging sturen
terug

X_ movlw 'X'
uitnodiging sturen
terug

Y_ movlw 'Y'
uitnodiging sturen
terug

Z_ movlw 'Z'
uitnodiging sturen
terug

C0 movlw'0 '
uitnodiging sturen
terug

c1 movlw'1 '
uitnodiging sturen
terug

c2 movlw'2 '
uitnodiging sturen
terug

c3 movlw'3 '
uitnodiging sturen
terug

c4 movlw'4 '
uitnodiging sturen
terug

c5 movlw'5 '
uitnodiging sturen
terug

C6 movlw'6 '
uitnodiging sturen
terug

C7 movlw'7 '
uitnodiging sturen
terug

C8 movlw'8 '
uitnodiging sturen
terug

c9 movlw'9 '
uitnodiging sturen
terug

komma
movlw ','
uitnodiging sturen
terug

plus
movlw ' '
uitnodiging sturen
terug

gelijk
movlw '='
uitnodiging sturen
terug

inv
movlw ' "'
uitnodiging sturen
terug

volgende
movlw ''
uitnodiging sturen
terug

voer
movlw D'13 '
uitnodiging sturen
terug

arrow
movlw H'1A '
uitnodiging sturen
terug

;------------------------------------------------- ------------------------------------

at_cmgf
oproep A_
oproep T_
oproep plus
oproep C_
oproep m_
oproep G_
oproep F_
oproep gelijk
oproep c1
gesprek voeren
terug

at_cmgr
oproep A_
oproep T_
oproep plus
oproep C_
oproep m_
oproep G_
oproep R_
oproep gelijk
oproep c1
gesprek voeren
terug

at_cmgd
oproep A_
oproep T_
oproep plus
oproep C_
oproep m_
oproep G_
oproep D_
oproep gelijk
oproep c1
gesprek voeren
movlw D'5 '
oproep vertraging
oproep A_
oproep T_
oproep plus
oproep C_
oproep m_
oproep G_
oproep D_
oproep gelijk
oproep c2
gesprek voeren
movlw D'5 '
oproep vertraging
oproep A_
oproep T_
oproep plus
oproep C_
oproep m_
oproep G_
oproep D_
oproep gelijk
oproep c3
gesprek voeren
movlw D'5 '
oproep vertraging
oproep A_
oproep T_
oproep plus
oproep C_
oproep m_
oproep G_
oproep D_
oproep gelijk
oproep c4
gesprek voeren
movlw D'5 '
oproep vertraging
oproep A_
oproep T_
oproep plus
oproep C_
oproep m_
oproep G_
oproep D_
oproep gelijk
oproep c5
gesprek voeren
movlw D'5 '
oproep vertraging
terug

clr_data
clrf data1
clrf data2
clrf data3
clrf data4
clrf data5
clrf data6
clrf data7
clrf data8
clrf data9
clrf data10
clrf data11
clrf data12
clrf data13
clrf data14
clrf data15
clrf data16
clrf data17
clrf data18
clrf data19
clrf data20
terug

;------------------------------------------------- ------------------------

read_msg
movlw D'0 '
oproep PRMGET
movwf PIN1
movlw D'1 '
oproep PRMGET
movwf PIN2
movlw D'2 '
oproep PRMGET
movwf pin3
movlw D'3 '
oproep PRMGET
movwf pin4
oproep clr_data
clrf vlag
movlw data1
movwf FSR
oproep at_cmgr
read_msg1
oproep ontvangen
btfsc vlag, 0
terug
movlw 'P'
xorwf input, W
btfss STATUS, Z
goto read_msg1
movf input, W
movwf INDF
incf FSR, F
read_msg2
oproep ontvangen
btfsc vlag, 0
terug
movf input, W
movwf INDF
incf FSR, F
goto read_msg2

check_msg
BCF vlag, 1
movlw 'P'
xorwf data1, W
btfss STATUS, Z
terug
movlw 'ik'
xorwf data2, W
btfss STATUS, Z
terug
movlw 'N'
xorwf data3, W
btfss STATUS, Z
terug
movf PIN1, W
xorwf data4, W
btfss STATUS, Z
terug
movf PIN2, W
xorwf data5, W
btfss STATUS, Z
terug
movf pin3, W
xorwf data6, W
btfss STATUS, Z
terug
movf pin4, W
xorwf data7, W
btfss STATUS, Z
terug
movlw'1 '
xorwf data9, W
btfsc STATUS, Z
oproep on_relay1
movlw'0 '
xorwf data9, W
btfsc STATUS, Z
oproep off_relay1
movlw'1 '
xorwf data10, W
btfsc STATUS, Z
oproep on_relay2
movlw'0 '
xorwf data10, W
btfsc STATUS, Z
oproep off_relay2
terug

on_relay1
BSF PORTA, 0
BCF PORTA, 2
clrf fault_count
terug

off_relay1
BCF PORTA, 0
BCF PORTA, 2
clrf fault_count
terug

on_relay2
BSF PORTA, 1
BCF PORTA, 2
clrf fault_count
terug

off_relay2
BCF PORTA, 1
BCF PORTA, 2
clrf fault_count
terug

;------------------------------------------------- -------------------------

wait_msg
clrf bitcnt
clrf vlag
oproep clr_data
movlw data1
movwf FSR
wait_msg3
oproep ontvangen
movlw ' '
xorwf input, W
btfss STATUS, Z
goto wait_msg3
goto wait_msg4
wait_msg1
oproep ontvangen
movlw D'5 '
xorwf bitcnt, W
btfsc STATUS, Z
goto wait_msg2
btfsc vlag, 0
goto wait_msg
wait_msg4
movf input, W
movwf INDF
incf FSR, F
incf bitcnt, F
goto wait_msg1
wait_msg2
BCF vlag, 1
movlw ' '
xorwf data1, W
btfss STATUS, Z
terug
movlw 'C'
xorwf data2, W
btfss STATUS, Z
terug
movlw 'M'
xorwf data3, W
btfss STATUS, Z
terug
movlw 'T'
xorwf data4, W
btfss STATUS, Z
terug
movlw 'ik'
xorwf data5, W
btfss STATUS, Z
terug
BSF vlag, 1
terug

;------------------------------------------------- -----------------------------

check_change_pass
BCF vlag, 1
movlw 'P'
xorwf data1, W
btfss STATUS, Z
terug
movlw 'ik'
xorwf data2, W
btfss STATUS, Z
terug
movlw 'C'
xorwf data3, W
btfss STATUS, Z
terug
movf PIN1, W
xorwf data4, W
btfss STATUS, Z
terug
movf PIN2, W
xorwf data5, W
btfss STATUS, Z
terug
movf pin3, W
xorwf data6, W
btfss STATUS, Z
terug
movf pin4, W
xorwf data7, W
btfss STATUS, Z
terug
movf data9, W
movwf winkel1
movlw D'0 '
oproep SETPRM
movf data10, W
movwf winkel1
movlw D'1 '
oproep SETPRM
movf data11, W
movwf winkel1
movlw D'2 '
oproep SETPRM
movf data12, W
movwf winkel1
movlw D'3 '
oproep SETPRM
clrf fault_count
BCF PORTA, 2
terug

belangrijkste
movf fault_count, W
addlw D'255 '- D'3' 1
btfsc STATUS, C
BSF PORTA, 2
oproep wait_msg
btfss vlag, 1
goto belangrijkste
incf fault_count, F
oproep read_msg
oproep check_msg
oproep check_change_pass
change_pin
oproep at_cmgd
goto belangrijkste

eindigen

 

Welcome to EDABoard.com

Sponsor

Back
Top