Autor Tema: ayuda con blocker 16f84a  (Leído 1697 veces)

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

Desconectado pacocable

  • PIC10
  • *
  • Mensajes: 13
ayuda con blocker 16f84a
« en: 30 de Mayo de 2009, 15:42:56 »
esete codigo a traves del t21 con winexplorer is leo los datos de la cam pero al ponerla en el deco dice: tarjeta no valida. el programa no es mio Ah, no se si se puede postear esto en el foro, sino por favor borrenlo y dsiculpne:
debe trabajar a 38400 baudios segundos
; Programa Blocker_16F84A_p1.asm
;
; Programa en pruebas

LIST P=16F84A, F=INHX8M
include "P16F84A.inc"

; Vector de Reset
ORG 0x0000

; Configura PORTA, todo salidas
MOVLW 0x00
TRIS PORTA
; r0x2A = 0x55
MOVLW 0x55
MOVWF 0x2A
;-----------------------------------
Label_0001
; r0x2A = r0x2A - 1
; Si r0x2A NO= 0, salta a Label_0001
DECFSZ 0x2A, f
GOTO Label_0001
; LEE EL ATR DE 20 Bytes
; r0x28 = 0x14
MOVLW 0x013
MOVWF 0x28
;-----------------------------------
Label_0ATR
; Lee byte a 9600 Baudios y lo deja en r0x12
CALL Label_0002
; r0x28 = r0x28 - 1
; Si r0x28 NO= 0, salta a Label_0ATR
DECFSZ 0x28, f
GOTO Label_0ATR
;-----------------------------------
; ***** INICIO BUCLE PRINCIPAL DEL PROGRAMA *****
Label_0007
; Lee byte a 38400 Baudios
CALL Label_2002
; Salta a Label_0007 (lee otro Byte)
GOTO Label_0007
; ***** FIN BUCLE PRINCIPAL DEL PROGRAMA *****


; ************************************************** ********
; * LEE BYTE DE LA TARJETA A 9600 Baudios
; Y ENVIA AL DECO *
; * Parametros de salida: *
; * r0x12 = Byte leido *
; ************************************************** ********
Label_0002
; Si RB0 = 0, salta a Label_0033 (Bit de Inicio detectado)
BTFSS PORTB, 00
GOTO Label_0033
; Si NO Bit de inicio, salta a Label_0002
GOTO Label_0002
;==================================
; Lee Byte de la Tarjeta
Label_0033
; Hace una pausa 0.6 bit
CALL Label_0034
; Configura PORTB, RB7 = Salida, RB0 = Entrada
MOVLW 0x7F
TRIS PORTB
; r0x12 = 0; RB7 = 0
CLRF 0x12
BCF PORTB, 07
; Hace pausa para 1 bit
CALL Label_0035 ;Hace una pausa 12 Ciclos de Reloj
NOP
NOP
; r0x14 = 8; Carry = 0
MOVLW 0x08
MOVWF 0x14
BCF STATUS, C
;==================================
Label_0038
; Rota a der. r0x12
RRF 0x12, f
; Si RB0 = 0, salta a Label_0036
BTFSS PORTB, 00
GOTO Label_0036
; Bit 7 de r0x12 = 1; RB7 = 1
BSF 0x12, 07
BSF PORTB, 07
; Salta a Label_0037
GOTO Label_0037
;==================================
Label_0036
; RB7 = 0
BCF PORTB, 07
;==================================
Label_0037
; Hace pausa para 1 bit
CALL Label_0035
NOP
NOP
; r0x14 = r0x14 - 1
; Si r0x14 NO= 0, salta a Label_0038
DECFSZ 0x14, f
GOTO Label_0038
NOP
NOP
; (Finaliza el ultimo bit)
; Si RB0 = 0, RB7 = 0
BTFSS PORTB, 00
BCF PORTB, 07
; Si RB0 = 1, RB7 = 1
BTFSC PORTB, 00
BSF PORTB, 07
; Hace bit de stop
CALL Label_0035
NOP
NOP
NOP
NOP
NOP
NOP
; RB7 = 1
BSF PORTB, 07
; Configura PORTB, RB7 = Entrada, RB0 = Entrada
MOVLW 0xFF
TRIS PORTB
; Hace pausa y RETORNA
GOTO Label_0035


; ************************************************** ******
; * LEE BYTE DEL DECO O TARJETA 38400 Baudios Y LO ENVIA *
; * Parametros de salida: *
; * r0x12 = Byte leido *
; ************************************************** ******
Label_2002
; Si RB7 = 0, salta a Label_0032 (Bit de Inicio detectado en Deco)
BTFSS PORTB, 07
GOTO Label_2032
; Si RB0 = 0, salta a Label_0033 (Bit de Inicio detectado en Tarjeta)
BTFSS PORTB, 00
GOTO Label_2033
; Si no salta a Label_0002
GOTO Label_2002
; *** Lee Byte de la Tarjeta a 38400 Baudios

Label_2033
; Hace una pausa
CALL Label_2034
; r0x12 = 0
CLRF 0x12
; Configura PORTB, RB7 = Salida, RB0 = Entrada
MOVLW 0x7F
TRIS PORTB
; RB7 = 0 (Pone bit de inicio)
BCF PORTB, 07
; Hace pausa para 1 bit
CALL Label_2035
NOP
NOP
; r0x14 = 9; Carry = 0
MOVLW 0x09
MOVWF 0x14
BCF STATUS, C

Label_2038
; Rota a der. r0x12
RRF 0x12, f
; Si RB0 = 0, salta a Label_2036
BTFSS PORTB, 00
GOTO Label_2036
; Bit 7 de r0x12 = 1; RB7 = 1
BSF 0x12, 07
BSF PORTB, 07
; Salta a Label_2037
GOTO Label_2037

Label_2036
; RB7 = 0
BCF PORTB, 07
NOP
NOP

Label_2037
; Hace pausa para 1 bit
CALL Label_2035
; r0x14 = r0x14 - 1
; Si r0x14 NO= 0, salta a Label_2038
DECFSZ 0x14, f
GOTO Label_2038
NOP
NOP
; Si RB0 = 0, RB7 = 0
BTFSS PORTB, 00
BCF PORTB, 07
; Si RB0 = 1, RB7 = 1
BTFSC PORTB, 00
BSF PORTB, 07
; Hace 2 bit de stop
NOP
CALL Label_2035
NOP
CALL Label_2035
NOP
CALL Label_2035
NOP
; RB7 = 1
BSF PORTB, 07
; Configura PORTB, RB7 = Entrada, RB0 = Entrada
MOVLW 0xFF
TRIS PORTB
; Hace pausa y RETORNA
GOTO Label_2035

; *** Lee Byte del Deco a 38400 Baudios
Label_2032
; Hace una pausa
CALL Label_2034
; r0x12 =0
CLRF 0x12
; Configura PORTB, RB7 = Entrada, RB0 = Salida
MOVLW 0xFE
TRIS PORTB
; RB0 = 0 (Pone bit de inicio)
BCF PORTB, 00
; Hace pausa para 1 bit
CALL Label_2035
NOP
NOP
; r0x14 = 9; Carry = 0
MOVLW 0x09
MOVWF 0x14
BCF STATUS, C

Label_203B
; Rota a der. r0x12
RRF 0x12, f
; Si RB7 = 0, salta a Label_2039
BTFSS PORTB, 07
GOTO Label_2039
; Bit 7 de r0x12 = 1; RB0 = 1
BSF 0x12, 07
BSF PORTB, 00
; salta a Label_203A
GOTO Label_203A

Label_2039
; RB0 = 0
BCF PORTB, 00
NOP
NOP

Label_203A
; Hace pausa para 1 bit
CALL Label_2035
; r0x14 = r0x14 - 1
; Si r0x14 NO= 0, salta a Label_003B
DECFSZ 0x14, f
GOTO Label_203B
NOP
NOP
; Si RB7 = 0, RB0 = 0
BTFSS PORTB, 07
BCF PORTB, 00
; Si RB7 = 1, RB0 =1
BTFSC PORTB, 07
BSF PORTB, 00
; Hace 2 bit de stop
NOP
CALL Label_2035
NOP
CALL Label_2035
NOP
CALL Label_2035
NOP
; RB0 = 1
BSF PORTB, 00
; Configura PORTB, RB7 = Entrada, RB0 = Entrada
MOVLW 0xFF
TRIS PORTB
; Hace pausa y RETORNA
GOTO Label_2035


; ************************************************** *
; RUTINAS DE RETARDO
;
; ************************************************** *
; *** Hace una pausa de 7 Ciclos de Reloj ***
; ************************************************** *
Label_2034
NOP
NOP
NOP
NOP
NOP
RETURN
; ************************************************** *
; *** Hace una pausa 12 Ciclos de Reloj ***
; ************************************************** *
Label_2035
MOVLW 0x02 ; 1 ciclo de reloj
; ************************************************** ***
; *** Hace una pausa de (W * 3) + 5 Ciclos de Reloj ***
; ************************************************** ***
Label_203C
MOVWF 0x15 ; 1 ciclo de reloj

Label_203D
DECFSZ 0x15, f
GOTO Label_203D ; 3 * W ciclos de reloj
NOP ; 1 ciclo de reloj
NOP ; 1 ciclo de reloj
RETURN ; 2 ciclos de reloj

; ************************************************** *
; *** Hace una pausa 50 Ciclos de Reloj ***
; ************************************************** *
Label_0034
MOVLW 0x0E
NOP
GOTO Label_003C ; 4 ciclos de reloj
; ************************************************** *
; *** Hace una pausa 82 Ciclos de Reloj ***
; ************************************************** *
Label_0035
MOVLW 0x1A ; 1 ciclo de reloj
; ************************************************** ***
; *** Hace una pausa de (W * 3) + 3 Ciclos de Reloj ***
; ************************************************** ***
Label_003C
MOVWF 0x15 ; 1 ciclo de reloj

Label_003D
DECFSZ 0x15, f
GOTO Label_003D ; 3 * W ciclos de reloj
RETURN ; 2 ciclos de reloj


;
; Posicion de memoria 0x2007 (bits de configuracion)
;
ORG 0x2007
DATA 0x1A



END
; AQUI TERMINA EL COGIDO DEL PROGRAMA

Desconectado pacocable

  • PIC10
  • *
  • Mensajes: 13
Re: ayuda con blocker 16f84a
« Respuesta #1 en: 02 de Junio de 2009, 12:25:50 »
El problema lo tengo porque no envia los bytes leidos de la cam a traves del rb7, ¿Alguien me puede ayudar?


 

anything