SMS kontrolleres ved hjelp PIC16F873A

J

Jeremy goh

Guest
Hei folkens,
jeg er for øyeblikket en PIC16F873A som MCU og Siemens TC35 GSM-modem for å gjennomføre en SMS kontrollerte prosjektet.Kan jeg be om for kildekoden plz?Vil sette pris ur hjelp fordi
jeg har
testet med de eksisterende ASM kode som
jeg har fått fra en fren som egentlig ikke fungerer.

Kodene er som følger:
include "P16F873a.inc"
listen 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
skriving
r0
R1
R2
fault_count
flagg
bitcnt
legge til
Butikk1
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 '; krystall Skillelinje (123)
org 0x2100
de "1234"
org 0x00
goto startorg 0x04; void avbruddsordrelinje (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
samtale øke
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

økning
incf counter, F
movlw D'5 '
xorwf counter, w
btfsc STATUS, Z
clrf counter
tilbake_initialize
bsf status, RP0
movlw B'00000100 '
; TOCS = OSC, PSA = TMR0
movwf OPTION_REG
BCF status RP0
movlw 0xa0
movwf INTCON
tilbake

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

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
samtale empty_reg
movlw D'10 '
samtale forsinkelse
samtale RS232
samtale _initialize
samtale at_cmgf
goto hovedinnhold

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

; SET baudhastighet å kommunisere med PC
; BOOT baudhastighet = 9600, NO paritet, 1 stoppbit

RS232 bsf status, RP0
movlw 0x19
movwf SPBRG
movlw b'00100100 '
movwf TXSTA
BCF status RP0
movlw b'10000000 '
movwf RCSTA

clrf dataL
bosette decfsz dataL, F

START_UP
goto bosette

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

tilbake

; RECEIVE tegn fra RS232 OG STORE PÅ W
; DETTE rutinen ikke vender tilbake til en CHARACTER mottas

Motta clrf counter
clrf flagg
clrf skriving
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 skriving
tilbake

bye movf RCREG, W
movwf skriving
bsf flagg, 0
retlw ''

; SEND karakter i W VIA RS232 og vente til FERDIG SENDEGRENSE

send BCF INTCON, GIE
movwf TXREG

TransWt bsf status, RP0
WtHere btfss TXSTA, TRMT
goto WtHere
bsf INTCON, GIE
tilbake

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

utsettelse
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 forsinkelse
tilbake

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

; Skrive data til EEPROM rutine ENDRES FOR PIC16F87X ENHETER
; IFØLGE DATABLAD DS30292A Page 43
; DETTE rutine oppgis MED W EIERANDEL
; THE EEPROM BYTE postadressen som har data
; Skal lagres.Dataene som lagres
; Holdes i butikk1

SETPRM
BCF status RP0
movwf EEADR
BCF status RP1
movf butikk1, W
bsf status, RP1
movwf EEDATA
bsf status, RP0
BCF EECON1, EEPGD
bsf EECON1, gjerdesmutt

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

CHKWRT
btfss PIR2, EEIF
goto CHKWRT
BCF PIR2, EEIF

tilbake

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

; LEST data fra EEPROM rutine ENDRES FOR PIC16F87X ENHETER
; IFØLGE DATABLAD DS30292A Page 43
; DETTE rutine oppgis MED W EIERANDEL
; THE EEPROM BYTE adresse for å bli lest
PRMGET
movwf EEADR
bsf status, RP0
BCF EECON1, EEPGD
bsf EECON1, RD
BCF status RP0
movf EEDATA, W
BCF status RP1
tilbake

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

; Alfabeter til GSM-modem

A_ movlw 'A'
samtale sende
tilbake

B_ movlw 'B'
samtale sende
tilbake

C_ movlw 'C'
samtale sende
tilbake

D_ movlw D
samtale sende
tilbake

E_ movlw 'E'
samtale sende
tilbake

F_ movlw "F"
samtale sende
tilbake

G_ movlw "G"
samtale sende
tilbake

H_ movlw 'H'
samtale sende
tilbake

I_ movlw 'I'
samtale sende
tilbake

J_ movlw 'J'
samtale sende
tilbake

K_ movlw 'K'
samtale sende
tilbake

L_ movlw 'L'
samtale sende
tilbake

M_ movlw 'M'
samtale sende
tilbake

N_ movlw 'N'
samtale sende
tilbake

O_ movlw "O"
samtale sende
tilbake

P_ movlw "P"
samtale sende
tilbake

Q_ movlw 'Q'
samtale sende
tilbake

R_ movlw 'R'
samtale sende
tilbake

S_ movlw 'S'
samtale sende
tilbake

T_ movlw 'T'
samtale sende
tilbake

U_ movlw 'U'
samtale sende
tilbake

V_ movlw "V"
samtale sende
tilbake

W_ movlw "W"
samtale sende
tilbake

X_ movlw "X"
samtale sende
tilbake

Y_ movlw 'Y'
samtale sende
tilbake

Z_ movlw "Z"
samtale sende
tilbake

c0 movlw'0 '
samtale sende
tilbake

c1 movlw'1 '
samtale sende
tilbake

c2 movlw'2 '
samtale sende
tilbake

C3 movlw'3 '
samtale sende
tilbake

c4 movlw'4 '
samtale sende
tilbake

C5 movlw "5."
samtale sende
tilbake

C6 movlw'6 '
samtale sende
tilbake

C7 movlw'7 '
samtale sende
tilbake

c8 movlw'8 '
samtale sende
tilbake

C9 movlw'9 '
samtale sende
tilbake

komma
movlw ','
samtale sende
tilbake

pluss
movlw ' '
samtale sende
tilbake

lik
movlw '='
samtale sende
tilbake

INV
movlw ' "'
samtale sende
tilbake

neste
movlw ''
samtale sende
tilbake

angir
movlw D'13 '
samtale sende
tilbake

arrow
movlw H'1A '
samtale sende
tilbake

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

at_cmgf
samtale A_
samtale T_
samtale pluss
samtale C_
samtale M_
samtale G_
samtale F_
ring lik
samtale c1
ring angir
tilbake

at_cmgr
samtale A_
samtale T_
samtale pluss
samtale C_
samtale M_
samtale G_
samtale R_
ring lik
samtale c1
ring angir
tilbake

at_cmgd
samtale A_
samtale T_
samtale pluss
samtale C_
samtale M_
samtale G_
samtale D_
ring lik
samtale c1
ring angir
movlw D'5 '
samtale forsinkelse
samtale A_
samtale T_
samtale pluss
samtale C_
samtale M_
samtale G_
samtale D_
ring lik
samtale c2
ring angir
movlw D'5 '
samtale forsinkelse
samtale A_
samtale T_
samtale pluss
samtale C_
samtale M_
samtale G_
samtale D_
ring lik
samtale C3
ring angir
movlw D'5 '
samtale forsinkelse
samtale A_
samtale T_
samtale pluss
samtale C_
samtale M_
samtale G_
samtale D_
ring lik
samtale c4
ring angir
movlw D'5 '
samtale forsinkelse
samtale A_
samtale T_
samtale pluss
samtale C_
samtale M_
samtale G_
samtale D_
ring lik
samtale C5
ring angir
movlw D'5 '
samtale forsinkelse
tilbake

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
tilbake

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

read_msg
movlw D'0 '
samtale PRMGET
movwf pin1
movlw D'1 '
samtale PRMGET
movwf PIN2
movlw D'2 '
samtale PRMGET
movwf pin3
movlw D'3 '
samtale PRMGET
movwf pin4
samtale clr_data
clrf flagg
movlw data1
movwf FSR fortsetter
samtale at_cmgr
read_msg1
samtale Motta
btfsc flagg, 0
tilbake
movlw "P"
xorwf skriving, W
btfss STATUS, Z
goto read_msg1
movf skriving, W
movwf INDF
incf FSR fortsetter, F
read_msg2
samtale Motta
btfsc flagg, 0
tilbake
movf skriving, W
movwf INDF
incf FSR fortsetter, F
goto read_msg2

check_msg
BCF flagg, 1
movlw "P"
xorwf data1, W
btfss STATUS, Z
tilbake
movlw 'I'
xorwf data2, W
btfss STATUS, Z
tilbake
movlw 'N'
xorwf data3, W
btfss STATUS, Z
tilbake
movf pin1, W
xorwf data4, W
btfss STATUS, Z
tilbake
movf PIN2, W
xorwf data5, W
btfss STATUS, Z
tilbake
movf pin3, W
xorwf data6, W
btfss STATUS, Z
tilbake
movf pin4, W
xorwf data7, W
btfss STATUS, Z
tilbake
movlw'1 '
xorwf data9, W
btfsc STATUS, Z
samtale on_relay1
movlw'0 '
xorwf data9, W
btfsc STATUS, Z
samtale off_relay1
movlw'1 '
xorwf data10, W
btfsc STATUS, Z
samtale on_relay2
movlw'0 '
xorwf data10, W
btfsc STATUS, Z
samtale off_relay2
tilbake

on_relay1
bsf Porta, 0
BCF Porta, 2
clrf fault_count
tilbake

off_relay1
BCF Porta, 0
BCF Porta, 2
clrf fault_count
tilbake

on_relay2
bsf Porta, 1
BCF Porta, 2
clrf fault_count
tilbake

off_relay2
BCF Porta, 1
BCF Porta, 2
clrf fault_count
tilbake

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

wait_msg
clrf bitcnt
clrf flagg
samtale clr_data
movlw data1
movwf FSR fortsetter
wait_msg3
samtale Motta
movlw ' '
xorwf skriving, W
btfss STATUS, Z
goto wait_msg3
goto wait_msg4
wait_msg1
samtale Motta
movlw D'5 '
xorwf bitcnt, W
btfsc STATUS, Z
goto wait_msg2
btfsc flagg, 0
goto wait_msg
wait_msg4
movf skriving, W
movwf INDF
incf FSR fortsetter, F
incf bitcnt, F
goto wait_msg1
wait_msg2
BCF flagg, 1
movlw ' '
xorwf data1, W
btfss STATUS, Z
tilbake
movlw 'C'
xorwf data2, W
btfss STATUS, Z
tilbake
movlw 'M'
xorwf data3, W
btfss STATUS, Z
tilbake
movlw 'T'
xorwf data4, W
btfss STATUS, Z
tilbake
movlw 'I'
xorwf data5, W
btfss STATUS, Z
tilbake
bsf flagg, 1
tilbake

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

check_change_pass
BCF flagg, 1
movlw "P"
xorwf data1, W
btfss STATUS, Z
tilbake
movlw 'I'
xorwf data2, W
btfss STATUS, Z
tilbake
movlw 'C'
xorwf data3, W
btfss STATUS, Z
tilbake
movf pin1, W
xorwf data4, W
btfss STATUS, Z
tilbake
movf PIN2, W
xorwf data5, W
btfss STATUS, Z
tilbake
movf pin3, W
xorwf data6, W
btfss STATUS, Z
tilbake
movf pin4, W
xorwf data7, W
btfss STATUS, Z
tilbake
movf data9, W
movwf butikk1
movlw D'0 '
samtale SETPRM
movf data10, W
movwf butikk1
movlw D'1 '
samtale SETPRM
movf data11, W
movwf butikk1
movlw D'2 '
samtale SETPRM
movf data12, W
movwf butikk1
movlw D'3 '
samtale SETPRM
clrf fault_count
BCF Porta, 2
tilbake

hovedsaklig
movf fault_count, W
addlw D'255 '- D'3 " 1
btfsc STATUS, C
bsf Porta, 2
samtale wait_msg
btfss flagg, 1
goto hovedinnhold
incf fault_count, F
samtale read_msg
samtale check_msg
samtale check_change_pass
change_pin
samtale at_cmgd
goto hovedinnhold

slutt

 

Welcome to EDABoard.com

Sponsor

Back
Top