TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: joseydoris 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
-
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
-
Hola tomasguido,estoy con otras cosa ,pero si eres tan amable y me lo puedes enviar,te lo agraceria
-
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