Haz una pregunta
  Foros de Electrónica » Temas de Interés » Software de Simulación y Diseño Electrónico
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

20/10/2010 #1


Errores de programa de mplab
Hola, estoy teniendo varios error al compilar un codigo

El codigo es:


INCLUDE "p16F84.inc"



PROCESSOR 16F84
LIST r = dec, F = INHX8M, MM = ON, T = ON, ST = OFF
RADIX HEX

__IDLOCS H'0000'
ERRORLEVEL 0, -302, -306


CBLOCK h'20' ;Comienzo del banco 0 de memoria RAM en el PIC
;Aca van las variables
CONT3
CONT4
CONT

ENDC ;Final de definiciones de variables de RAM


#DEFINE BITZ STATUS, Z ;Bit de cero
#DEFINE BITC STATUS, C ;Bit de carry
RP0 equ 5
RB0 equ 0
RB1 equ 1
RB2 equ 2
RB3 equ 3
RB4 equ 4
RB5 equ 5
RB6 equ 6
RB7 equ 7
RA0 equ 0
RA1 equ 1
RA2 equ 2
RA3 equ 3
RA4 equ 4


ORG 2100h ;secuencias guardadas en memoria
DE 0,B'00000000',B'10000001',B'01000010',B'00100100', B'00011000'
DE 0,B'00000000',B'00011000',B'00000000',B'00111100', B'00000000',B'01111110',B'00000000',B'11111111'

ORG 0CH
CUENTA RES 2 ;guardo dos lugares de memoria que seran usados para el delay
ACUM EQU 0EH ;creo un acumulador extra que luego sera usado

ORG 00h
GOTO INICIO

INICIO: ;ESCRIBIR EL CÓDIGO DEL PROGRAMA ACÁ
BSF STATUS,RP0
MOVLW B'11111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
BCF STATUS,RP0
BCF INTCON,7
MOVLW 5
MOVWF CONT3
MOVLW 0EH
MOVWF CONT4
MOVLW 8
MOVWF CONT
CLRF PORTB

;miro que switch fue oprimido
VERIFICO:
BTFSC PORTA,0
GOTO SECU1
BTFSC PORTA,1
GOTO SECU2
BTFSC PORTA,2
GOTO SECU3
BTFSC PORTA,3
GOTO SECU4
GOTO VERIFICO


SECU1
CLRF PORTB
BSF PORTB,RB0
CALL RETARDO
BCF PORTB,RB0
BSF PORTB,RB1
CALL RETARDO
BCF PORTB,RB1
BSF PORTB,RB2
CALL RETARDO
BCF PORTB,RB2
BSF PORTB,RB3
CALL RETARDO
BCF PORTB,RB3
BSF PORTB,RB4
CALL RETARDO
BCF PORTB,RB4
BSF PORTB,RB5
CALL RETARDO
BCF PORTB,RB5
BSF PORTB,RB6
CALL RETARDO
BCF PORTB,RB6
BSF PORTB,RB7
CALL RETARDO
BCF PORTB,RB7
GOTO VERIFICO

SECU2
CLRF PORTB
MOVLW 0x01
MOVWF PORTB
CALL RETARDO
MOVLW 0x03
MOVWF PORTB
CALL RETARDO
MOVLW 0x07
MOVWF PORTB
CALL RETARDO
MOVLW 0x0F
MOVWF PORTB
CALL RETARDO
MOVLW 0x1F
MOVWF PORTB
CALL RETARDO
MOVLW 0x3F
MOVWF PORTB
CALL RETARDO
MOVLW 0x7F
MOVWF PORTB
CALL RETARDO
MOVLW 0xFF
MOVWF PORTB
CALL RETARDO
CLRF PORTB
CALL RETARDO
MOVLW 0xFF
MOVWF PORTB
CALL RETARDO
CLRF PORTB
CALL RETARDO
MOVLW 0xFF
MOVWF PORTB
CALL RETARDO
CLRF PORTB
GOTO VERIFICO



SECU3
BCF STATUS, RP0
MOVF CONT3,0
MOVWF EEADR
BSF STATUS, RP0
BSF EECON1, RD
BCF STATUS, RP0
MOVF EEDATA, W
MOVWF PORTB
CALL RETARDO
DECFSZ CONT3,1
GOTO SECU3
MOVLW 5
MOVWF CONT3
GOTO VERIFICO ;

SECU4
BCF STATUS, RP0
MOVF CONT4,0
MOVWF EEADR
BSF STATUS, RP0
BSF EECON1, RD
BCF STATUS, RP0
MOVF EEDATA, W
MOVWF PORTB
CALL RETARDO
DECF CONT4,1
DECFSZ CONT,1
GOTO SECU4
MOVLW 0EH
MOVWF CONT4
MOVLW 8
MOVWF CONT
GOTO VERIFICO

RETARDO
CLRF CUENTA
CLRF CUENTA+1
RETARDO1
DECFSZ CUENTA,1
GOTO RETARDO1
DECFSZ CUENTA+1,1
GOTO RETARDO1
RETURN

END


Y lo errores que me tira el compilador son:


Executing: "D:\Archivos de programa\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84 "tp9.asm" /l"tp9.lst" /e"tp9.err"
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA: Found directive in column 1. (ORG)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA: Found directive in column 1. (DE)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\: Found directive in column 1. (DE)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Found directive in column 1. (ORG)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA: Found directive in column 1. (ORG)
Error[118] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA: Overwriting previous address contents (000C)
Error[118] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Overwriting previous address contents (000C)
Error[118] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA: Overwriting previous address contents (000D)
Error[118] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA: Overwriting previous address contents (000D)
Halting build on first failure as requested.

Obviamente me interesa resolver los errores primero, antes que las advertenecias

Muchas gracias

Saludos!
20/10/2010 #2

Avatar de ByAxel

Respuesta: Errores de programa de mplab ayuda!!
Escoge bien el tipo de PIC en "Select Device";
La directiva PROCESSOR se pone arriba de todo;
luego el INCLUDE;
LIST, RADIX, __IDLOCS H' no son nada necesarios...;
RP0 equ 5 y todos esos bits pon con todo el nombre del registro (RP0 equ STATUS,5 y así para todos);
los warning aparecen por que esas directivas deben ir luego de uno o más TAB.
20/10/2010 #3


Respuesta: Errores de programa de mplab ayuda!!
ByAxel dijo: Ver Mensaje
Escoge bien el tipo de PIC en "Select Device";
La directiva PROCESSOR se pone arriba de todo;
luego el INCLUDE;
LIST, RADIX, __IDLOCS H' no son nada necesarios...;
RP0 equ 5 y todos esos bits pon con todo el nombre del registro (RP0 equ STATUS,5 y así para todos);
los warning aparecen por que esas directivas deben ir luego de uno o más TAB.
hola axel, gracias por responder! ante todo,
el device lo tenia bien elegido, despues corregio el tema de la directiva PROCESSOR que lo puse arribar de todo,
y con respecto a los bits, vos me decis ponerlo de esta forma:

#DEFINE BITZ STATUS, Z ;Bit de cero
#DEFINE BITC STATUS, C ;Bit de carry
RP0 equ STATUS,5
RB0 equ STATUS,0
RB1 equ STATUS,1
RB2 equ STATUS,2
RB3 equ STATUS,3
RB4 equ STATUS,4
RB5 equ STATUS,5
RB6 equ STATUS,6
RB7 equ STATUS,7
RA0 equ STATUS,0
RA1 equ STATUS,1
RA2 equ STATUS,2
RA3 equ STATUS,3
RA4 equ STATUS,4


o como? no entendi bien....
20/10/2010 #4

Avatar de ByAxel

Respuesta: Errores de programa de mplab ayuda!!
Algo así...
Supongo que usas RB0 para referirte al PORTB,0; el compilador no sabe de donde es si solo pones RB0 equ 0, por eso hay que decirle explicitamente a donde pertenece la nueva definición... lo mismo para todos.

RP0 equ STATUS,5
RB0 equ PORTB,0
RB1 equ PORTB,1
...
RA0 equ PORTA,0
...
20/10/2010 #5


Respuesta: Errores de programa de mplab ayuda!!
ByAxel dijo: Ver Mensaje
Algo así...
Supongo que usas RB0 para referirte al PORTB,0; el compilador no sabe de donde es si solo pones RB0 equ 0, por eso hay que decirle explicitamente a donde pertenece la nueva definición... lo mismo para todos.

RP0 equ STATUS,5
RB0 equ PORTB,0
RB1 equ PORTB,1
...
RA0 equ PORTA,0
...
gracias axel! ya lo voy agarrando la mano, lo compile otra vez y me tiro mas errores jaja, pero ahi vamos!
te paso lo corregido:

PROCESSOR 16F84
INCLUDE "p16F84.inc"


ERRORLEVEL 0, -302, -306


CBLOCK h'20' ;Comienzo del banco 0 de memoria RAM en el PIC
;Aca van las variables
CONT3
CONT4
CONT

ENDC ;Final de definiciones de variables de RAM


#DEFINE BITZ STATUS, Z ;Bit de cero
#DEFINE BITC STATUS, C ;Bit de carry
RP0 equ STATUS, 5
RB0 equ PORTB, 0
RB1 equ PORTB, 1
RB2 equ PORTB, 2
RB3 equ PORTB, 3
RB4 equ PORTB, 4
RB5 equ PORTB, 5
RB6 equ PORTB, 6
RB7 equ PORTB, 7
RA0 equ PORTA, 0
RA1 equ PORTA, 1
RA2 equ PORTA, 2
RA3 equ PORTA, 3
RA4 equ PORTA, 4


ORG 2100h ;secuencias guardadas en memoria
DE 0,B'00000000',B'10000001',B'01000010',B'00100100', B'00011000'
DE 0,B'00000000',B'00011000',B'00000000',B'00111100', B'00000000',B'01111110',B'00000000',B'11111111'

ORG 0CH
CUENTA RES 2 ;guardo dos lugares de memoria que seran usados para el delay
ACUM EQU 0EH ;creo un acumulador extra que luego sera usado

ORG 00h
GOTO INICIO

INICIO: ;ESCRIBIR EL CÓDIGO DEL PROGRAMA ACÁ
BSF STATUS,RP0 ;entramos al banco 1
MOVLW B'11111' ;movemos 11111 al registro de trabajo
MOVWF TRISA ;configuramos el puerto A como entrada
MOVLW B'00000000' ;movemos 00000000 al registro de trabajo
MOVWF TRISB ;configuramos el puerto B como salidas
BCF STATUS,RP0 ;salimos del banco 1
BCF INTCON,7 ;deshabilito las interrupciones globales
MOVLW 5
MOVWF CONT3 ;CONT3=5, esto es para la secuencia 3 guardada en memoria
MOVLW 0EH
MOVWF CONT4 ;CONT4=0E, esto es para la secuencia 4 guardada en memoria
MOVLW 8
MOVWF CONT ;CONT=8, contador usado en la secuencia 4
CLRF PORTB ;limpio el puerto B

;miro que switch fue oprimido
VERIFICO:
BTFSC PORTA,0 ;miro si el bit 0 del puerto A esta en 1
GOTO SECU1 ;si esta en 1 salto a SECU1
BTFSC PORTA,1 ;miro si el bit 1 del puerto A esta en 1
GOTO SECU2 ;si esta en 1 salto a SECU2
BTFSC PORTA,2 ;miro si el bit 2 del puerto A esta en 1
GOTO SECU3 ;si esta en 1 salto a SECU3
BTFSC PORTA,3 ;miro si el bit 3 del puerto A esta en 1
GOTO SECU4 ;si esta en 1 salto a SECU4
GOTO VERIFICO ;vuelvo a verificar


SECU1
CLRF PORTB
BSF PORTB,RB0
CALL RETARDO
BCF PORTB,RB0
BSF PORTB,RB1
CALL RETARDO
BCF PORTB,RB1
BSF PORTB,RB2
CALL RETARDO
BCF PORTB,RB2
BSF PORTB,RB3
CALL RETARDO
BCF PORTB,RB3
BSF PORTB,RB4
CALL RETARDO
BCF PORTB,RB4
BSF PORTB,RB5
CALL RETARDO
BCF PORTB,RB5
BSF PORTB,RB6
CALL RETARDO
BCF PORTB,RB6
BSF PORTB,RB7
CALL RETARDO
BCF PORTB,RB7
GOTO VERIFICO

SECU2
CLRF PORTB
MOVLW 0x01
MOVWF PORTB
CALL RETARDO
MOVLW 0x03
MOVWF PORTB
CALL RETARDO
MOVLW 0x07
MOVWF PORTB
CALL RETARDO
MOVLW 0x0F
MOVWF PORTB
CALL RETARDO
MOVLW 0x1F
MOVWF PORTB
CALL RETARDO
MOVLW 0x3F
MOVWF PORTB
CALL RETARDO
MOVLW 0x7F
MOVWF PORTB
CALL RETARDO
MOVLW 0xFF
MOVWF PORTB
CALL RETARDO
CLRF PORTB
CALL RETARDO
MOVLW 0xFF
MOVWF PORTB
CALL RETARDO
CLRF PORTB
CALL RETARDO
MOVLW 0xFF
MOVWF PORTB
CALL RETARDO
GOTO VERIFICO



SECU3
BCF STATUS, RP0
MOVF CONT3,0
MOVWF EEADR
BSF STATUS, RP0
BSF EECON1, RD
BCF STATUS, RP0
MOVF EEDATA, W
MOVWF PORTB
CALL RETARDO
DECFSZ CONT3,1
GOTO SECU3
MOVLW 5
MOVWF CONT3
GOTO VERIFICO

SECU4
BCF STATUS, RP0
MOVF CONT4,0
MOVWF EEADR
BSF EECON1, RD
BCF STATUS, RP0
MOVF EEDATA, W
MOVWF PORTB
CALL RETARDO
DECF CONT4,1
DECFSZ CONT,1
GOTO SECU4
MOVLW 0EH
MOVWF CONT4
MOVLW 8
MOVWF CONT
GOTO VERIFICO

RETARDO
CLRF CUENTA
CLRF CUENTA+1
RETARDO1
DECFSZ CUENTA,1
GOTO RETARDO1
DECFSZ CUENTA+1,1
GOTO RETARDO1
RETURN

END ;Fin del programa


y te paso los nuevos errores:

rror[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA: Illegal character (,)
Error[115] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA: Duplicate label ("RP0" or redefining symbol that cannot be redefined)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA Illegal character (,)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA: Illegal character (,)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Illegal character (,)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Illegal character (,)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Illegal character (,)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Illegal character (,)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Illegal character (,)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA Illegal character (,)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Illegal character (,)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Illegal character (,)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Illegal character (,)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Illegal character (,)
Error[108] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA Illegal character (,)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Found directive in column 1. (ORG)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Found directive in column 1. (DE)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Found directive in column 1. (DE)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Found directive in column 1. (ORG)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Found directive in column 1. (ORG)
Error[118] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Overwriting previous address contents (000C)
Error[118] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Overwriting previous address contents (000C)
Error[118] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Overwriting previous address contents (000D)
Error[118] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Overwriting previous address contents (000D)


corregi lo de los puertos pero me salieron esos nuevos errores, de la (,) que nose que estara mal escrito.

El tema de los tabs, de las advertencias, los puse pero como ves me sigue la advertencia, pero igual eso poco me interesa
20/10/2010 #6

Avatar de ByAxel

Respuesta: Errores de programa de mplab ayuda!!
Perdón, se suponía que RB0 lo usabas para referirte al PORTB,0 pero dentro del código los usas como bit, por lo que como lo hacías estaba bien.

Tal como te dije era para usarlo de esta forma...
BCF RB4
pero luego lo haces como...
BCF PORTB,RB4 >>> Aquí el error ya que RB4 está declarado como PORTB,RB4... no se si me entiendes...
20/10/2010 #7


Respuesta: Errores de programa de mplab ayuda!!
axel, ahi puse nuevamente como tenia antes, de esta forma lo corregi:

;************************************************* *********************
;* DEFINICIÓN DE ETIQUETAS *
;************************************************* *********************
#DEFINE BITZ STATUS, Z ;Bit de cero
#DEFINE BITC STATUS, C ;Bit de carry
RP0 equ 5
RB0 equ 0
RB1 equ 1
RB2 equ 2
RB3 equ 3
RB4 equ 4
RB5 equ 5
RB6 equ 6
RB7 equ 7
RA0 equ 0
RA1 equ 1
RA2 equ 2
RA3 equ 3
RA4 equ 4


el resto del codigo lo deje como estaba, y me saltaron estos errores:

Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Found directive in column 1. (ORG)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Found directive in column 1. (DE)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Found directive in column 1. (DE)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Found directive in column 1. (ORG)
Warning[205] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Found directive in column 1. (ORG)
Error[118] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Overwriting previous address contents (000C)
Error[118] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Overwriting previous address contents (000C)
Error[118] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Overwriting previous address contents (000D)
Error[118] D:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\PRUEBA : Overwriting previous address contents (000D)


La verdad que no te entiendo el error que me decis, disculpa que no te llegue a entender, como tendria que hacer entonces?
20/10/2010 #8

Avatar de ByAxel

Respuesta: Errores de programa de mplab ayuda!!
...........
El error de "Overwriting previous address contents" es porque la RAM del PIC16F84 inicia en la dirección 0x0C y no en 0x20.
...........
No estas usando bien el direccionamiento el la memoria... todo lo que son variables van en CBLOCK 0x0C.

Código:
CBLOCK 0x0C	;Comienzo del banco 0 de memoria RAM en el PIC
;Aca van las variables
	CONT3
	CONT4
	CONT	
	CUENTA
	ACUM
	ENDC	 ;Final de definiciones de variables de RAM
..........
Los warning "Found opcode in column 1" son porque las instrucciones deben de ir luego de uno o mas TAB.
Ya compila pero con un muchos warning que es por lo de los TAB para las instrucciones...

saludos
20/10/2010 #9


Respuesta: Errores de programa de mplab ayuda!!
Axel, ya defini esas variables que me dijiste:

PROCESSOR 16F84
INCLUDE "p16F84.inc"


ERRORLEVEL 0, -302, -306


CBLOCK h'20' ;Comienzo del banco 0 de memoria RAM en el PIC
;Aca van las variables
CONT3
CONT4
CONT

ENDC ;Final de definiciones de variables de RAM


#DEFINE BITZ STATUS, Z ;Bit de cero
#DEFINE BITC STATUS, C ;Bit de carry
RP0 equ STATUS, 5
RB0 equ PORTB, 0
RB1 equ PORTB, 1
RB2 equ PORTB, 2
RB3 equ PORTB, 3
RB4 equ PORTB, 4
RB5 equ PORTB, 5
RB6 equ PORTB, 6
RB7 equ PORTB, 7
RA0 equ PORTA, 0
RA1 equ PORTA, 1
RA2 equ PORTA, 2
RA3 equ PORTA, 3
RA4 equ PORTA, 4


ORG 2100h ;secuencias guardadas en memoria
DE 0,B'00000000',B'10000001',B'01000010',B'00100100', B'00011000'
DE 0,B'00000000',B'00011000',B'00000000',B'00111100', B'00000000',B'01111110',B'00000000',B'11111111'

ORG 0CH
CUENTA RES 2 ;guardo dos lugares de memoria que seran usados para el delay
ACUM EQU 0EH ;creo un acumulador extra que luego sera usado

ORG 00h
GOTO INICIO

INICIO: ;ESCRIBIR EL CÓDIGO DEL PROGRAMA ACÁ
BSF STATUS,RP0 ;entramos al banco 1
MOVLW B'11111' ;movemos 11111 al registro de trabajo
MOVWF TRISA ;configuramos el puerto A como entrada
MOVLW B'00000000' ;movemos 00000000 al registro de trabajo
MOVWF TRISB ;configuramos el puerto B como salidas
BCF STATUS,RP0 ;salimos del banco 1
BCF INTCON,7 ;deshabilito las interrupciones globales
MOVLW 5
MOVWF CONT3 ;CONT3=5, esto es para la secuencia 3 guardada en memoria
MOVLW 0EH
MOVWF CONT4 ;CONT4=0E, esto es para la secuencia 4 guardada en memoria
MOVLW 8
MOVWF CONT ;CONT=8, contador usado en la secuencia 4
CLRF PORTB ;limpio el puerto B

;miro que switch fue oprimido
VERIFICO:
BTFSC PORTA,0 ;miro si el bit 0 del puerto A esta en 1
GOTO SECU1 ;si esta en 1 salto a SECU1
BTFSC PORTA,1 ;miro si el bit 1 del puerto A esta en 1
GOTO SECU2 ;si esta en 1 salto a SECU2
BTFSC PORTA,2 ;miro si el bit 2 del puerto A esta en 1
GOTO SECU3 ;si esta en 1 salto a SECU3
BTFSC PORTA,3 ;miro si el bit 3 del puerto A esta en 1
GOTO SECU4 ;si esta en 1 salto a SECU4
GOTO VERIFICO ;vuelvo a verificar


SECU1
CLRF PORTB
BSF PORTB,RB0
CALL RETARDO
BCF PORTB,RB0
BSF PORTB,RB1
CALL RETARDO
BCF PORTB,RB1
BSF PORTB,RB2
CALL RETARDO
BCF PORTB,RB2
BSF PORTB,RB3
CALL RETARDO
BCF PORTB,RB3
BSF PORTB,RB4
CALL RETARDO
BCF PORTB,RB4
BSF PORTB,RB5
CALL RETARDO
BCF PORTB,RB5
BSF PORTB,RB6
CALL RETARDO
BCF PORTB,RB6
BSF PORTB,RB7
CALL RETARDO
BCF PORTB,RB7
GOTO VERIFICO

SECU2
CLRF PORTB
MOVLW 0x01
MOVWF PORTB
CALL RETARDO
MOVLW 0x03
MOVWF PORTB
CALL RETARDO
MOVLW 0x07
MOVWF PORTB
CALL RETARDO
MOVLW 0x0F
MOVWF PORTB
CALL RETARDO
MOVLW 0x1F
MOVWF PORTB
CALL RETARDO
MOVLW 0x3F
MOVWF PORTB
CALL RETARDO
MOVLW 0x7F
MOVWF PORTB
CALL RETARDO
MOVLW 0xFF
MOVWF PORTB
CALL RETARDO
CLRF PORTB
CALL RETARDO
MOVLW 0xFF
MOVWF PORTB
CALL RETARDO
CLRF PORTB
CALL RETARDO
MOVLW 0xFF
MOVWF PORTB
CALL RETARDO
GOTO VERIFICO



SECU3
BCF STATUS, RP0
MOVF CONT3,0
MOVWF EEADR
BSF STATUS, RP0
BSF EECON1, RD
BCF STATUS, RP0
MOVF EEDATA, W
MOVWF PORTB
CALL RETARDO
DECFSZ CONT3,1
GOTO SECU3
MOVLW 5
MOVWF CONT3
GOTO VERIFICO

SECU4
BCF STATUS, RP0
MOVF CONT4,0
MOVWF EEADR
BSF EECON1, RD
BCF STATUS, RP0
MOVF EEDATA, W
MOVWF PORTB
CALL RETARDO
DECF CONT4,1
DECFSZ CONT,1
GOTO SECU4
MOVLW 0EH
MOVWF CONT4
MOVLW 8
MOVWF CONT
GOTO VERIFICO

RETARDO
CLRF CUENTA
CLRF CUENTA+1
RETARDO1
DECFSZ CUENTA,1
GOTO RETARDO1
DECFSZ CUENTA+1,1
GOTO RETARDO1
RETURN

END ;Fin del programa


disculpa que te moleste tanto con esto!
20/10/2010 #10

Avatar de ByAxel

Respuesta: Errores de programa de mplab ayuda!!
Borra
.
ORG 0CH
CUENTA RES 2 ;guardo dos lugares de memoria que seran usados para el delay
ACUM EQU 0EH ;creo un acumulador extra que luego sera usado
.
no se para que está si las variables ya las tienes definidas mas arriba...
20/10/2010 #11


Respuesta: Errores de programa de mplab ayuda!!
Gracias axel!!! me aparecio el mejor mensaje del mundo: BUILD SUCCEEDED!!!!

y fue gracias a tu ayuda!

Disculpa por el tiempo que te quite, y muchas gracias por ayudarme con el codigo, te lo agradezco.

Saludos!
20/10/2010 #12

Avatar de ByAxel

Respuesta: Errores de programa de mplab ayuda!!
No hay problema, suerte...
14/01/2011 #13


ByAxel dijo: Ver Mensaje
No hay problema, suerte...
Hola axel, nose si te llegara el msj, porque todavia no puedo enviar mensajes privados.

Queria saber si me podias ayudar con un codigo.

Te paso el post donde comente mi problema.

Problema Circuito Termostato (PIC y lm35)


Saludos!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Software de Simulación y Diseño Electrónico

Todo lo relacionado con estos programas.

Cerrar
Foros de Electrónica » Temas de Interés » Software de Simulación y Diseño Electrónico

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.