Hola, mi problemita es que no podemos enviar datos con la pc mediante un pic a una mauina que se cominica en forma sincronica es decir clock mas datos segun lo visto pos nosotros envia 9 byte 1 de sincronismo y luego los datos el tema es como montar los datos con el clock , que el clock entra en una pata de pic16f84 .
los datos estan cargados en bin pero en un futura seran enviados pos la PC mediante rs232. Algo estamos haciendo mal , les paso el codigo en asm para ver si alguien encuentra algo mal hay instrc. que estan anuladas debido a las modific. pero se pueden dar cuenta de la idea.
Saludos Hernan
ESTADO equ 0x03
PORTA equ 0x05
PORTB equ 0x06
BUFFER equ 0x10
BITS equ 0x11
BYTE1 equ 0x12
BYTE2 equ 0x13
BYTE3 equ 0x14
BYTE4 equ 0x23
BYTE5 equ 0x24
BYTE6 equ 0x25
BYTE7 equ 0x32
BYTE8 equ 0x33
TIEMPO1 equ 0x15
TIEMPO2 equ 0x16
BYTE1R equ 0x17
BYTE2R equ 0x18
BYTE3R equ 0x19
BYTE4R equ 0x20
BYTE5R equ 0x21
BYTE6R equ 0x22
BYTE7R equ 0x30
BYTE8R equ 0x31
UNI equ 0x27 ;Usados para pasar a decimal
DEC equ 0x28
CEN equ 0x29
BUFFER2 equ 0x1A
#define CARRY ESTADO, 0
#define RP0 ESTADO, 5
#define TXM PORTB, 0 ;Salida a maquina
#define TXD PORTA, 0 ;Salida RS232
#define LED PORTA, 1 ;Led indicador de SYNC OK
#define CLOCK PORTA, 3 ;Entrada de clock
#define DATOS PORTA, 4 ;Entrada de datos
#define PULSA PORTB, 1 ;Entrada de pulsador
#define DATOM PORTB, 0 ;Entrada de pulsador
#define CERO ESTADO, 2 ;Comparador de BYTES
clrf PORTA
bsf RP0
movlw b"00011000"
movwf PORTA
; clrf PORTB
movlw b"01111110"
movwf PORTB
bcf RP0
; clrf PORTB
; clrf PORTA
bsf TXD ;RS232 en reposo
bsf TXM
CICLO
; bsf DATOM
movlw b"00000000"
call TXMAQ
; call ENVIAR
movlw b"11111011"
call TXMAQ
; call ENVIAR
movlw b"11111111"
call TXMAQ
; call ENVIAR
movlw b"11011111"
call TXMAQ
; call ENVIAR
movlw b"11111111"
call TXMAQ
; call ENVIAR
movlw b"11111111"
call TXMAQ
; call ENVIAR
movlw b"11111011"
call TXMAQ
; call ENVIAR
movlw b"10000001"
call TXMAQ
; call ENVIAR
movlw b"00000011"
call TXMAQ
; call ENVIAR
bsf LED
GOTO CICLO
ENVIAR
movwf BUFFER ;Envia un byte por RS232
movlw d"8"
movwf BITS
bcf TXD
call BIT
rrf BUFFER, 1
btfss CARRY
bcf TXD
btfsc CARRY
bsf TXD
call BIT
decfsz BITS, 1
goto $ -7
bsf TXD
call BIT
call DEL20
return
TXMAQ
movwf BUFFER2 ;Envia un byte por RS232
movlw d"8"
movwf BITS
rrf BUFFER2, 1
btfss CARRY
call MANDA0
btfsc CARRY
call MANDA1
decfsz BITS, 1
goto $ -6
return
MANDA0
bcf DATOM
; btfsc CLOCK
; goto $ -1
; btfss CLOCK
; goto $ -1
; bsf DATOM
CALL BIT2
; bcf DATOM
return
MANDA1
bsf DATOM
; btfsc CLOCK
; goto $ -1
; btfss CLOCK
; goto $ -1
CALL BIT2
; bcf DATOM
return
DEL20 movlw d"20" ;Demora de 20 ms
movwf TIEMPO2
FALTA2 movlw d"110"
movwf TIEMPO1
FALTA1 nop
nop
clrwdt
nop
nop
nop
decfsz TIEMPO1, 1
goto FALTA1
decfsz TIEMPO2, 1
goto FALTA2
return
BIT movlw d"166" ;Demora de 1 bit a 1200bps
movwf TIEMPO1
clrwdt
nop
decfsz TIEMPO1, 1
goto $ -3
return
BIT2
movlw d"166" ;Demora de 1 bit a 1024bps
movwf TIEMPO1
clrwdt
nop
decfsz TIEMPO1, 1
goto $ -3
return
end