Comunicación serial entre 2 pics

Hola, necesito ayuda con un programa en asembler para comunicar 2 pics entre si, debe de ser serial.
Gracias.

1 Respuesta

Respuesta
1
Usa el siguiente código en ambos PIC's, obviamente solo son las rutinas de comunicación, el proceso de los datos transmitidos entre uno y otro, corre por tu cuenta... Saludos...
;Programa que realiza la comunicacion RS232 entre
;una PC y un PIC16F84.
;Alfredo Segura. Febrero de 2004
Title "rs232"
List p=16f84
__Config h'3ff1'
;Registros del PIC
Op equ 0x01
Edo equ 0x03
Pa equ 0x05
Pb equ 0x06
Int equ 0x0B
;Registros del porgrama
Conta equ 0x10
R12 equ 0x11
R18 equ 0x12
R16 equ 0x13
loop equ 0x14
Loop2 equ 0x15
Trans equ 0x16
Recep equ 0x17
Entra equ 0x18
org 0
goto Inicio
org 4
call Recibe
Bcf Int, 1
Retfie
Inicio bsf Edo, 5
Movlw h'f0'
Movwf Pa
Movlw h'0f'
Movwf Pb
Movlw h'80'
Movwf Op
Bcf Edo, 5
Movlw h'90'
movwf Int
Bsf Pb, 1
Movlw h'00'
Movwf entra
Movlw h'00'
Movwf Pa
Swapf Pb, 0
Andlw h'0f'
Xorwf entra, 0
Btfsc Edo, 2
goto Leer
Salir swapf Pb, 0
Andlw h'0f'
Xorwf entra, 0
Btfsc Edo, 2
goto Leer
Swapf Pb, 0
Andlw h'0f'
Movwf entra
Addlw d'48'
call Enviar
movf recep,0
call Enviar
goto Leer
;===============================================================
;Subrutina Recibir, que recibe datos por el puerto RS232
Recibe clrwdt
clrf recep
bcf r18,0
call Delayme
call Delay1
Rcvr movlw h'08'
Movwf conta
Rnext bsf Edo, 0
Btfss Pb, 0
Bcf Edo, 0
Rrf recep, 1
call Delay1
decfsz conta,1
goto Rnext
Bsf r18, 0
Movf recep, 0
Movwf Pa
Swapf Pb, 0
Andlw h'0f'
Movwf entra
Addlw d'48'
call Enviar
movf recep,0
call Enviar
retlw 0
;===================================================================
Leer retlw 0
;===================================================================
;Subrutina enviar, emite datos por el puerto RS232
Enviar clrwdt
Movwf trans
Xmrt movlw h'08'
Movwf conta
Bcf Pb, 1
call Delay1
Xnext bcf Pb, 1
Bcf Edo, 0
Rrf trans, 1
Btfsc Edo, 0
Bsf Pb, 1
call Delay1
decfsz conta,1
goto Xnext
bsf Pb,1
call Delay1
retlw 0
;=====================================================================
;Subrutina delay1 de retardo de 833 us
Delay1 movlw d'166'
Movwf r12
Redo nop
No
Decfsz r12, 1
goto Redo
retlw 0
;=====================================================================
;Subrutina delayme de medio bit de duracion 416 us
Delayme movlw d'82'
Movwf r16
Redo2 nop
No
Decfsz r16, 1
goto Redo2
retlw 0
;=====================================================================
end

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas