hace 17 años
Esta es la rutina del PIC, ami no me funciono, pruebenlan y me cuentan
LIST P=16F877
;************************************************************
; Definicion de Registros
;************************************************************
LIST P=16F877
PC EQU 0x02
TIMER0 EQU 0x01
STATUS EQU 0x03
TRISA EQU 0x85
PORTA EQU 0x05
TRISB EQU 0x86
PORTB EQU 0x06
INTCON EQU 0x0B
OPT_REG EQU 0x81
DIST EQU 0x10
RET EQU 0x11
DEL EQU 0x12
ASCII EQU 0x13
R0E EQU 0x14
NUEVO1 EQU 0x15
NUEVO2 EQU 0x16
NUEVO3 EQU 0x17
ROT EQU 0x18
ANILLO EQU 0x19
CINCO EQU 0x1A
ONCE EQU 0x1B
VER1 EQU 0x1C
VER2 EQU 0x1D
OTR EQU 0X1E
ORG 00
GOTO EMPZ
ORG 04
MUESTRA MOVF TIMER0,0
MOVWF DIST
SUBLW .020
BTFSS STATUS,0
INCF DIST,1
MOVF DIST,0
SUBLW .030
BTFSS STATUS,0
INCF DIST,1
MOVF DIST,0
SUBLW .090
BTFSS STATUS,0
INCF DIST,1
BTFSC INTCON,2
BSF PORTB,0
PRINCIP MOVLW 0xC0 ;PASAR A LA
CALL CONTROL ;OTRA LINEA
MOVLW " "
CALL DATO
MOVLW " "
CALL DATO
MOVF DIST,0
MOVWF VER1
BCD CLRF NUEVO1 ;EMPIEZA LA CONVERSION
CLRF NUEVO2 ;A BCD
CLRF NUEVO3
CLRF ROT
MOVLW 0x07
MOVWF ANILLO
MOVLW 0x05
MOVWF CINCO
MOVLW 0x0B
MOVWF ONCE
INICIO BTFSC VER2,1
GOTO UNO
CERO BCF STATUS,0
GOTO ADE
UNO BSF STATUS,0
ADE RLF VER1,1
RLF VER2,1
INCF ROT,1
MOVLW 0x03
SUBWF ROT,0
BTFSS STATUS,0
GOTO INICIO
MOVLW 0x04
SUBWF ROT,0
BTFSC STATUS,0
GOTO EEE
MOVF VER1,0
ANDWF ANILLO,0
MOVWF NUEVO1
VERIFY MOVF CINCO,0
SUBWF NUEVO2,0
BTFSC STATUS,0
GOTO ARREGL2
RLF NUEVO3,1
ANTES MOVF CINCO,0
SUBWF NUEVO1,0
BTFSC STATUS,0
GOTO ARREGL1
BTFSC NUEVO1,3
GOTO XYZ
BCF STATUS,0
GOTO MOVER
XYZ BSF STATUS,0
MOVER RLF NUEVO2,1
RLF NUEVO1,1
GOTO INICIO
ARREGL2 MOVF ONCE,0
ADDWF NUEVO2,1
RLF NUEVO3,1
BSF NUEVO3,0
BCF NUEVO2,3
BCF NUEVO2,4
GOTO ANTES
ARREGL1 MOVF ONCE,0
ADDWF NUEVO1,1
RLF NUEVO2,1
BSF NUEVO2,0
RLF NUEVO1,1
BCF NUEVO1,4
BCF NUEVO1,5
GOTO INICIO
EEE BTFSC VER1,0
GOTO ONE
ZERO BCF NUEVO1,0
GOTO OOO
ONE BSF NUEVO1,0
OOO MOVLW 0x0A
SUBWF ROT,0
BTFSS STATUS,0
GOTO VERIFY ;FIN DE LA CONVERSION A BCD
MOVLW 0x30 ;ESCRIBE EL DATO EN BDC
ADDWF NUEVO3,0 ;EN EL LCD
CALL DATO
MOVLW 0x30
ADDWF NUEVO2,0
CALL DATO
MOVLW 0x30
ADDWF NUEVO1,0
CALL DATO
MOVLW " "
CALL DATO
MOVLW "C"
CALL DATO
MOVLW "M"
CALL DATO
GOTO LISTO
CONTROL BCF PORTB,2 ;rs del lcd
GOTO DATO2
DATO BSF PORTB,2 ;rs del lcd
DATO2 BSF PORTB,3 ;enable del lcd
MOVWF R0E
SWAPF R0E,0
MOVWF PORTA
CALL RETARDO
BCF PORTB,3
CALL RETARDO
BSF PORTB,3
MOVF R0E,0
MOVWF PORTA
CALL RETARDO
BCF PORTB,3
CALL RETARDO
RETLW 0x00
TABLA ADDWF PC,1
RETLW "D"
RETLW "I"
RETLW "S"
RETLW "T"
RETLW "A"
RETLW "N"
RETLW "C"
RETLW "I"
RETLW "A"
RETLW ":"
RETLW 0x00
EMPZ CLRF PORTA
CLRF PORTB
BSF STATUS,5
MOVLW 0x00
MOVWF TRISA
MOVLW 0x81
MOVWF TRISB
MOVLW 0x84
MOVWF OPT_REG
BCF STATUS,5
MOVLW 0x02 ;DISPLAY A 4 BITS
CALL CONTROL
MOVLW 0x28 ;DOS LINEAS, 4 BITS
CALL CONTROL
MOVLW 0x0E ;ACTIVA DISPLAY
CALL CONTROL
MOVLW 0x06 ;MENSAJE FIJO
CALL CONTROL
MOVLW 0x01
CALL CONTROL
MOVLW 0x00
MOVWF ASCII
CICLO MOVF ASCII,0
CAMBIA CALL TABLA
CALL DATO
INCF ASCII,1
MOVLW 0x0A
XORWF ASCII,0
BTFSS STATUS,2
GOTO CICLO
LISTO CLRF TIMER0
MOVLW 0xA8
MOVWF INTCON
PULSOS BSF PORTB,1
NOP
CALL DELAY
BCF PORTB,1
CALL DELAY
GOTO PULSOS
DELAY ;retlw 0
MOVLW 0x01
MOVWF RET
QUIT NOP
NOP
DECFSZ RET,1
GOTO QUIT
RETURN
RETARDO ;retlw 0
MOVLW 0xFF
MOVWF DEL
DEC DECFSZ DEL,1
GOTO DEC
RETURN
END
;*******
¿Realmente quieres cerrar esta reparación?
Sí
No
¿Realmente quieres reabrir esta reparación?
Sí
No
¿Realmente quieres borrar este post?
Sí
No