Menú
Foros
Nuevos mensajes
Buscar en foros
Novedades
Nuevos mensajes
Nuevos recursos
Última actividad
Recursos
Últimas revisiones
Buscar recursos
Acceder
Registrarse
Novedades
Buscar
Buscar
Buscar sólo en títulos
De:
Nuevos mensajes
Buscar en foros
Menú
Acceder
Registrarse
Install the app
Instalar
Foros
Diseño digital
Microcontroladores y sistemas embebidos
No funciona DECFSZ 16F628a
JavaScript está desactivado. Para una mejor experiencia, por favor, activa JavaScript en el navegador antes de continuar.
Estás usando un navegador obsoleto. No se pueden mostrar este u otros sitios web correctamente.
Se debe actualizar o usar un
navegador alternativo
.
Responder al tema
Mensaje
[QUOTE="JuanGa94, post: 1271103, member: 227073"] Hola, me llamo la atencion tu inconveniente y me propuse probarlo. 1ero: Cuidado con los nombres cuando llamas a la subrutina Transmitir. Pusiste Trasnsmitir. 2do: Como no tengo el codigo completo, rellene y modifique el que subiste para poder trabajarlo. Inicialmente no use el WDT y esas definiciones de variables me parecieron raras asi que las cambie. 3ero: Reemplaze tus retardos por uno solo de 1seg para poder verlo. 4to: Use un cristal de 4MHz 5to: Supuse que RA1,RB1,RB2 y RB3 son salidas(me gustaria si podes subir el diagrama electrico del RS485 por curiosidad) 6to: A la instrucción RRF le faltaba un parámetro, igualmente no afectaba en nada(RRF DATOTX,1) 7to: Por las dudas inicio la subrutina y pongo en cero el CARRY, no cambia mucho... Haciendo esto, envia los 8 bits y queda B1 y A1 en 1. Lo debuggee y anda, lo simule en PROTEUS y anda y lo arme con unos LEDs y anda....se ven las transiciones. Dejo de andar cuando le habilite el WDT, ya en la simulación me cortaba el programa, no se si es realmente necesario para tu trabajo... Fijate si te sirve de algo... [CODE] list P=PIC16F628A #include"P16F628A.inc" ;__CONFIG _CP_OFF & _PWRTE_OFF & _WDT_ON & _XT_OSC &_LVP_OFF ;Lo voy a hacer cona la interfaz del MPLAB, CON EL wdt DESHABILITADO ;la palabra de configuracion es 3F61 ;INT_VAR UDATA_SHR ;TOTALBIT RES 1; EQU 0x16 ;No se que es esto??? DATOTX EQU 020H TOTALBIT EQU 021H ;REGISTROS PARA EL RETARDO CONT3 EQU 022H CONT2 EQU 023H CONT1 EQU 024H ORG 0 ;DESHABILITO LOS COMPARADORES DEL PUERTOA CLRF PORTA MOVLW 007H MOVWF CMCON ;PASO AL BANCO 1 PARA DEFINIR LAS E/S EN LOS TRIS BSF STATUS,RP0 MOVLW 0FDH MOVWF TRISA MOVLW 0F1H MOVWF TRISB BCF STATUS,RP0 ;PASO AL BANCO 0 MOVLW 0AAH ;Dato a transmitir es AA CALL TRANSMITIR FIN GOTO FIN;BUCLE INFINITO FINAL TRANSMITIR ;Rutina de Transmisión MOVWF DATOTX ; Cargo el valor que viene en W para transmitir ;CLRWDT BSF PORTB,2 ; Habilitar transmisión RS485 DE=1 RE=1 BCF PORTB,1 ; Bajo el nivel para indicar inicio de transmisión MOVLW .8 ; Para leer los 8 bits MOVWF TOTALBIT BCF STATUS,C;pongo en 0 el carry antes POR LAS DUDAS INITX ;CALL DEMORA50 ; Espero 2 ciclos para ;CALL DEMORA50 ; indicar bit de inicio CALL RETARDO1SEG CICLOTX BSF PORTB,3 ; transmitir un UNO(LED) ;CALL DEMORA250 ; Llamar al retardo entre bits CALL RETARDO1SEG BCF PORTB,3 ; transmitir un CERO(LED) ;CALL DEMORA250 ; Llamar al retardo entre bits CALL RETARDO1SEG RRF DATOTX,1 ; Rotar a la derecha el byte (en CARRY esta el primer bit) BTFSC STATUS,C ; Carry es cero? GOTO ESUNO ; No,es un uno ESCERO BCF PORTB,1 ; transmitir un CERO(DATO) ;CLRWDT GOTO SIGBIT ESUNO BSF PORTB,1 ; transmitir un UNO(DATO) ;CLRWDT GOTO SIGBIT SIGBIT DECFSZ TOTALBIT,1 GOTO CICLOTX ; Faltan bits de transmitir BSF PORTB,1 ; transmitir un UNO: linea en espera BCF PORTB,2 ; Deshabilitar transmisión RS485, poner "en escucha" ;CLRWDT BCF PORTB,3 ; Apagar led testigo de Tx BSF PORTA,1 ; Encender relé RETURN RETARDO1SEG MOVLW .10 MOVWF CONT3 TRES MOVLW .200 MOVWF CONT2 DOS MOVLW .165 MOVWF CONT1 UNO DECFSZ CONT1,1 GOTO UNO DECFSZ CONT2,1 GOTO DOS DECFSZ CONT3,1 GOTO TRES RETURN END[/CODE] [/QUOTE]
Verificación
Responder
Foros
Diseño digital
Microcontroladores y sistemas embebidos
No funciona DECFSZ 16F628a
Arriba