Problemas con rutinas de salto btfss
| #1 Problemas con rutinas de salto btfss |
| #2 |
|
Meta
|
Enseña el código fuente a ver.
|
|||||||||||
|
|
||||||||||||
| #3 |
|
pepechip
Colaborador
|
Hace poco tube un problema similar al tuyo.
Yo tenia un programa corriendo con el 16f84 perfectamente, y al pasarlo al 12f629 no me leia 2 entradas. El problema lo tenia que esos 2 pines bienen configurados internamente como comparadores, y hay que especificarle al micro mediante una instruccion que actuen como entradas. Puede que sea tu caso. Verifica que el pin que utilizas de entrada no tenga una doble funcion. |
|||||||||||
|
|
||||||||||||
| #4 |
|
ortega
|
gracias meta y pepechip aqui les voy a dejar el codigo para que me digan entonces cualquier pregunta me avisan
list p=16F877 include P16F877.inc __config 0x3F18 cblock 0x20 NUM TECLA endc NUM.7 equ b'11011000' ; 7 NUM.8 equ b'00000000' ; 8 NUM.9 equ b'00010000' ; 9 NUM.4 equ b'00011001' ; 4 NUM.5 equ b'00010010' ; 5 NUM.6 equ b'00000010' ; 6 NUM.1 equ b'11011001' ; 1 NUM.2 equ b'01000100' ; 2 NUM.3 equ b'01010000' ; 3 LET.A equ b'00001000' ; A NUM.0 equ b'10000000' ; 0 LET.b equ b'00000011' ; b NAC1 EQU 20H NAC2 EQU 21H NAC3 EQU 22H NAC4 EQU 23H NAC5 EQU 24H NAC6 EQU 25H QP1 EQU 26H QP2 EQU 27H QP3 EQU 28H QP4 EQU 29H QP5 EQU 30H QP6 EQU 31H loops EQU 32H loops2 EQU 33H org 0x00 goto INICIO org 0x04 retfie org 0x05 ; ETAPA DE MULTIPLEXADO MULTIPLEX DIGITON1 movf NAC1,W movwf TRISC BSF PORTC,4 CALL RETARDO BCF PORTC,4 DIGITON2 movf NAC2,W movwf TRISC BSF PORTC,5 CALL RETARDO BCF PORTC,5 DIGITON3 movf NAC3,W movwf TRISC BSF PORTC,6 CALL RETARDO BCF PORTC,6 DIGITON4 movf NAC4,W movwf TRISC BSF PORTC,7 CALL RETARDO BCF PORTC,7 DIGITON5 movf NAC5,W movwf TRISC BSF PORTD,4 CALL RETARDO BCF PORTD,4 DIGITON6 movf NAC6,W movwf TRISC BSF PORTD,5 CALL RETARDO BCF PORTD,5 DIGITOQ1 movf QP1,W movwf TRISD BSF PORTD,6 CALL RETARDO BCF PORTD,6 DIGITOQ2 movf QP2,W movwf TRISD BSF PORTD,7 CALL RETARDO BCF PORTD,7 DIGITOQ3 movf QP3,W movwf TRISD BSF PORTA,0 CALL RETARDO BCF PORTA,0 DIGITOQ4 movf QP4,W movwf TRISD BSF PORTA,1 CALL RETARDO BCF PORTA,1 DIGITOQ5 movf QP5,W movwf TRISD BSF PORTA,2 CALL RETARDO BCF PORTA,2 DIGITOQ6 movf QP6,W movwf TRISD BSF PORTA,3 CALL RETARDO BCF PORTA,3 RETURN RETARDO movlw 02h movwf loops top2 movlw d'110' movwf loops2 top nop nop nop nop nop nop decfsz loops2 goto top decfsz loops goto top2 retlw 0 INICIO bsf STATUS,RP0 movlw 0xF0 movwf TRISB movlw b'00000000' movwf TRISC movlw b'00000000' movwf TRISD movlw b'100000' movwf TRISA movlw b'111' movwf TRISE bcf STATUS,RP0 bcf OPTION_REG,NOT_RBPU CLRF TRISD CLRF TRISC PRINCIPAL BTFSS PORTA, 5 call CLRNAC BTFSS PORTE, 2 call CLRQP BTFSS PORTE, 1 call QUINIELA BTFSS PORTE, 0 call NACIONAL CALL MULTIPLEX GOTO PRINCIPAL CLRNAC clrf NAC1 clrf NAC2 clrf NAC3 clrf NAC4 clrf NAC5 clrf NAC6 RETURN CLRQP clrf QP1 clrf QP2 clrf QP3 clrf QP4 clrf QP5 clrf QP6 RETURN NACIONAL call TECLADO movwf NAC1 call TECLADO movwf NAC2 call TECLADO movwf NAC3 call TECLADO movwf NAC4 call TECLADO movwf NAC5 call TECLADO movwf NAC6 RETURN QUINIELA call TECLADO movwf QP1 call TECLADO movwf QP2 call TECLADO movwf QP3 call TECLADO movwf QP4 call TECLADO movwf QP5 call TECLADO movwf QP6 RETURN ;************************************************** ;** Rutina que escanea un teclado matricial 3x4 ** ;** recorriendo un 0 por cada una de sus filas y ** ;** leyendo el estado de cada columna, si la co- ** ;** lumna se encuentra con un estado logico alto ** ;** no se presiono ninguna tecla, si se encuen- ** ;** tra en bajo (0) entonces se detecta la tecla ** ;** presionda ** ;************************************************** TECLADO clrf TECLA movlw b'00001110' movwf PORTB CHECA_COL btfss PORTB,4 goto ANTIRREBOTES incf TECLA,f btfss PORTB,5 goto ANTIRREBOTES incf TECLA,f btfss PORTB,6 goto ANTIRREBOTES incf TECLA,f ; Si no se detecto ninguna pulsacion se realiza una comparacion ; entre la variable TECLA y el numero "12", si TECLA es menor que ; 12 el "0" en las filas del puerto B se recorre hacia la izquierda ; hacia la siguiente fila, si TECLA es igual a "12" la rutina del ; TECLADO vuelve a comenzar movlw d'12' subwf TECLA,w btfsc STATUS,Z goto TECLADO bsf STATUS,C rlf PORTB,f goto CHECA_COL ;********************************************************* ;** Rutina que elimina los rebotes y ademas decodifica ** ;** la tecla pulsada y regresa el valor binario necesa- ** ;** para desplegar los numeros de 0 a b en un display ** ;** de 7 segmentos conectado al puerto A ** ;********************************************************* ANTIRREBOTES B1 btfsc PORTB,4 goto B1 B2 btfsc PORTB,5 goto B2 B3 btfsc PORTB,6 goto B3 B4 btfsc PORTB,7 goto B4 movf TECLA,w return DECOD_TECLA addwf PCL,f retlw b'0111' ;NUM.7 retlw b'1000' ;NUM.8 retlw b'1001' ;NUM.9 retlw b'0100' ;NUM.4 retlw b'0101' ;NUM.5 retlw b'0110' ;NUM.6 retlw b'0001' ;NUM.1 retlw b'0010' ;NUM.2 retlw b'0011' ;NUM.3 retlw b'1010' ;LET.A retlw b'0000' ;NUM.0 retlw b'1011' ;LET.b END |
|||||||||||
|
|
||||||||||||
| #5 |
|
El nombre
|
Igual es debido a que no has configurado las entradas del puerto A como digitales. por defecto son entradas analógicas asi que tienes que configurar :
Cuando configuras las entradas pon .... movlw b'00000110' movwf ADCON1 .... a ver como te va |
|||||||||||
|
|
||||||||||||
| #6 |
|
pepechip
Colaborador
|
yo no tengo esperiencia con ese pic, pero he visto que PORTE,1 y PORTE,2 son entradas analogicas, puede que tengas que configurar estos pines, o bien utilizar otros distintos.
|
|||||||||||
|
|
||||||||||||
| #7 |
|
El nombre
|
El puerto E es entrada digital por defecto.
|
|||||||||||
|
|
||||||||||||
| #8 |
|
ortega
|
gracias por tu respuesta el nombre pero ahora solo me trabaja RE0 pero los otros 3 siguen igual con esa configuracion me puce a investigar y me pone todos lo puertos como e/s digitales pero ahora nos e por que no me trabaja buenoooo sigoo tratando gracias por su repuesta me han ayudado muchoo.........
|
|||||||||||
|
|
||||||||||||
| #9 |
|
El nombre
|
Mira (después de respirar profundamente y intentrar mantener la cordura)
Lo priemero es que me indiques donde trabaja en entradas digital después de un reset o al inicio. Lo segundo es que te bajes el tutorial que hay en el foro respecto el 16f876 que es identico en funcionamiento pero sin el puerto D y E Lo tercero es (si tienes el datasheet original que revises la pag 128 (bit 3-0) me acabo de dar cuenta que es lo mismo en el manual que hay Si haces haces lo que te digo puedes ahorrarte tiempo. Ahora bien, si no lo haces informa como lo has solucionado. Te agradeceré cualquier forma de solucionar el problema. Saludos (Vuelvo a respirar profundamente) |
|||||||||||
|
|
||||||||||||
| #10 |
|
ortega
|
gracias por sus respuestas, ya lo resolvi, lo que hice fue que cambie los puertos que hiba a usar utilice los bit mas significativos de port D para la combinacion de los botones y los que estaba usando como entrada que eras el port E y el bit mas significativo del port A los puce como salida para la etapa de miltipexar los diaplay... ahora solo me quedan unos cuantos ajustes
* en la etapa para multiplexar los display, para que siempre me este multiplezando y no se note un parpadeooo * y el otro ajuste es que hay un display que me esta tirando datos a lo loco expesificamente donde dice NAC2........ el nombre ::> ya te puedes tomarte la pastilla y respirar profundamente jejejejjejejje mentira, te agradesco mucho tu ayuda me ha servido de mucho, claro tambien a todo que de una u otra forma aportaron para yo llegar hasta donde estoy.............. |
|||||||||||
|
|
||||||||||||
|
| Otros temas de interés | |
|---|---|
| Data Cable Nokia RS-232: Forum | |
| problemas con la disquetera | |
| Contador - Creciente/Decreciente (up/down) | |
| Problemas de comunicación de Nokia 1100b | |
| Problemas con mi nokia 3595 | |
| Foros de Electronica |
| ||
Cuestiones Elementales de Electrónica ||
Fuentes de alimentacion ||
Circuitos de radio ||
Diseño de circuitos en general || || Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión || || Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos || |
Site Map
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad

