Autor Tema: gsm con assembler  (Leído 908 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado joseydoris

  • PIC12
  • **
  • Mensajes: 58
gsm con assembler
« en: 14 de Agosto de 2019, 20:50:45 »
Como no se donde habra caido el mensaje anterior (y perdonad por que a veces me lío) lo mando por aquí


Un saludo:He hecho varias cosas manejando  tx y rx del 16f628a.Pero me he puesto con el modulo sim800 y estoy enredado con los comandos AT.¿Tenéis algún ejemplo en assembler para llamar al módulo y que prenda un led?.Con eso podría empezar.Gracias a todos

Desconectado tomasguido

  • PIC10
  • *
  • Mensajes: 13
Re:gsm con assembler
« Respuesta #1 en: 12 de Abril de 2020, 23:26:32 »
Supongo que estarás en otros proyectos ahora, pero usa el modulo usart del pic16f628A, yo lo he hecho para comunicarme con un modulo A7, que son todos muy parecidos, te aviso que he renegado mucho intentando comunicarme por sofware con el modulo A7 y lo logre pero con limitaciones... así que ya te digo usa el modulo usart del pic16f628A, yo tengo el código de mi proyecto si lo quieres te lo pase.... un saludo

Desconectado joseydoris

  • PIC12
  • **
  • Mensajes: 58
Re:gsm con assembler
« Respuesta #2 en: 13 de Abril de 2020, 20:16:18 »
Hola tomasguido,estoy con otras cosa ,pero si eres tan amable y me lo puedes enviar,te lo agraceria

Desconectado tomasguido

  • PIC10
  • *
  • Mensajes: 13
Re:gsm con assembler
« Respuesta #3 en: 16 de Abril de 2020, 19:10:44 »
Hola aquí te dejo un código que tengo funcionando correctamente en el cual se comunica un pic16f628A con un modulo A7 (GSM/GPS):

;uso del modulo usart a 20 MHz con el pic 16f628A, y comunicacion con el modulo A7, funcionando correctamente tanto enviando como recibiendo
#include "p16f628a.inc"

 __CONFIG _FOSC_HS & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF

varA                    EQU 020
varB                    EQU 021
varC                    EQU 022
varD                    EQU 023
varE                    EQU 024
varF                    EQU 025
   
   ORG 0
      
configuro_pic:
        CLRF    PORTA
   CLRF    PORTB
        MOVLW   B'00000111'     ;modulo comparador apagado
   MOVWF   CMCON
        BCF     STATUS, RP1     ;accedo al banco 1
        BSF     STATUS, RP0
   MOVLW   B'00000010'     ;portb.1 y portb.2 es entrada los demas salida
        MOVWF   TRISB
   MOVLW   B'00100100'     ;configuro el registro TXSTA
   MOVWF   TXSTA
   MOVLW   D'10'           ;cargo el registro SPBRG con la variable correpondiete segun la formula para 115200 baudios
   MOVWF   SPBRG
   BCF     STATUS, RP1     ;accedo al banco 0
        BCF     STATUS, RP0
   MOVLW   B'10010000'
        MOVWF   RCSTA
   
arranque:
        BSF     PORTB,0
   CALL    retardo1s
   BCF     PORTB,0
   CALL    retardo1s
   
datos_a_enviar:
        MOVLW     'A'               ; envia caracter A
        CALL      RS232_EnviaDato
        MOVLW     'T'               ; envia caracter T
        CALL      RS232_EnviaDato
        MOVLW     '+'               ; envia caracter +
        CALL      RS232_EnviaDato
        MOVLW     'C'               ; envia caracter C
        CALL      RS232_EnviaDato
        MOVLW     'M'               ; envia caracter M
        CALL      RS232_EnviaDato
        MOVLW     'G'               ; envia caracter G
        CALL      RS232_EnviaDato
        MOVLW     'F'               ; envia caracter F
        CALL      RS232_EnviaDato
        MOVLW     '='               ; envia caracter =
        CALL      RS232_EnviaDato
        MOVLW     '1'               ; envia caracter 1
        CALL      RS232_EnviaDato
        MOVLW     H'0D'               ; nueva linea
        CALL      RS232_EnviaDato
        MOVLW     H'0A'               ; nueva linea
        CALL      RS232_EnviaDato
        CALL      retardo1s
        CALL      retardo1s
        MOVLW     'A'               ; envia caracter A
        CALL      RS232_EnviaDato
        MOVLW     'T'               ; envia caracter T
        CALL      RS232_EnviaDato
        MOVLW     '+'               ; envia caracter +
        CALL      RS232_EnviaDato
        MOVLW     'C'               ; envia caracter C
        CALL      RS232_EnviaDato
        MOVLW     'M'               ; envia caracter M
        CALL      RS232_EnviaDato
        MOVLW     'G'               ; envia caracter G
        CALL      RS232_EnviaDato
        MOVLW     'S'               ; envia caracter S
        CALL      RS232_EnviaDato
        MOVLW     '='               ; envia caracter =
        CALL      RS232_EnviaDato
        MOVLW     '"'               ; envia caracter "
        CALL      RS232_EnviaDato
        MOVLW     '2'   
        CALL      RS232_EnviaDato
        MOVLW     '3'   
        CALL      RS232_EnviaDato
        MOVLW     '6' 
        CALL      RS232_EnviaDato
        MOVLW     '4'   
        CALL      RS232_EnviaDato
        MOVLW     '6'   
        CALL      RS232_EnviaDato
        MOVLW     '2'   
        CALL      RS232_EnviaDato
        MOVLW     '4'   
        CALL      RS232_EnviaDato
        MOVLW     '5'   
        CALL      RS232_EnviaDato
        MOVLW     '6'   
        CALL      RS232_EnviaDato
        MOVLW     '4'
        CALL      RS232_EnviaDato
        MOVLW     '"'                   ; envia caracter "
        CALL      RS232_EnviaDato
        MOVLW     H'0D'                 ; nueva linea
        CALL      RS232_EnviaDato
        MOVLW     H'0A'                 ; nueva linea
        CALL      RS232_EnviaDato
        CALL      retardo1s
        CALL      retardo1s
        MOVLW     'H'               ; envia caracter H
        CALL      RS232_EnviaDato
        MOVLW     'O'               ; envia caracter O
        CALL      RS232_EnviaDato
        MOVLW     'L'               ; envia caracter L
        CALL      RS232_EnviaDato
        MOVLW     'A'               ; envia caracter A
        CALL      RS232_EnviaDato 
        MOVLW     D'26'               ; envia caracter ESC
        CALL      RS232_EnviaDato
        MOVLW     H'0D'               ; nueva linea
        CALL      RS232_EnviaDato
        MOVLW     H'0A'               ; nueva linea
        CALL      RS232_EnviaDato
   
   BSF       PORTB,0   
        CALL      retardo1s
   CALL      retardo1s
   BCF       PORTB,0
   
verifico_datos:
        CALL      espera_dato
   SUBLW     'A'
        BTFSS     STATUS,Z
        GOTO      verifico_datos
   CALL      espera_dato
   SUBLW     'B'
        BTFSS     STATUS,Z
        GOTO      verifico_datos
   CALL      espera_dato
   SUBLW     'C'
        BTFSS     STATUS,Z
        GOTO      verifico_datos
   GOTO      ledverde
   
;---------------envio y recepcion de datos por puerto serial------------   
RS232_EnviaDato:
        MOVWF     TXREG
   BCF       STATUS, RP1     ;accedo al banco 1
        BSF       STATUS, RP0
espero:
        BTFSS     TXSTA,TRMT      ;verifico que ya se envio
   GOTO      espero
   BCF       STATUS, RP1     ;accedo al banco 1
        BCF       STATUS, RP0
   RETURN
   
espera_dato:
        BTFSS     PIR1,RCIF   
        GOTO      espera_dato
si_hay_error:   
   BTFSC     RCSTA,OERR
   CALL      error1
   BTFSC     RCSTA,FERR
   CALL      error2
        MOVF      RCREG,W 
        RETURN

error1:
        BCF       RCSTA,CREN
   BSF       RCSTA,CREN
   RETURN
error2:
        MOVF      RCREG,W
   RETURN
;----------------------------------------------------
   
ledverde:   
   BSF       PORTB,0   
        CALL      retardo1s
   BCF       PORTB,0
   CALL      retardo1s
   GOTO      ledverde
;-------------zona de retardos-------------   
retardo1s:
        MOVLW   D'1'
        MOVWF   varD
bucleext4:   
        MOVLW   D'19'
        MOVWF   varC
bucleext3:
        MOVLW   D'255'
        MOVWF   varB
bucleext2:
        MOVLW   D'255'
        MOVWF   varA
bucleint1:
        NOP
        DECFSZ  varA,F
        GOTO    bucleint1
        DECFSZ  varB,F
        GOTO    bucleext2
        DECFSZ  varC,F     
        GOTO    bucleext3
        DECFSZ  varD,F     
        GOTO    bucleext4
regfina:
        MOVLW   D'200'
        MOVWF   varF
bucleext22:
        MOVLW   D'55'
        MOVWF   varE
bucleint11:
        NOP
        DECFSZ  varE,F
        GOTO    bucleint11
        DECFSZ  varF,F
        GOTO    bucleext22
   RETURN
   END

Este codigo envia instrucciones al modulo A7, para que haga llamas o envie sms y tambien puede identificar sms o llamadas para que el pic realice alguna tarea, asi que bueno tienes que estudiarlo para entenderlo... un Saludo