Primero Hola a la comunidad y a quien se de un tiempito para ayudarme!
Bueno estoy haciendo un proyecto para la universidad, de un Contador con PIC16F84A, el problema es que soy super principiante en esto...conocimientos bajisimos en lo que es programacion en assembler. Hoy me baje un tutorial de como usar el MPLAB ya que estamos usando un programador PICSTART Plus de Microchip.
Usando el MPLAB V7.30 segui todos los pasos .... luego apreto f10 para ver si tengo errores y me salen unos warning y unos errores.
Y el problema es que nose como repararlos y tengo solo dos dias para hacerlo!..(Hoy es domingo, y el martes tengo que presentarlo)
Este es el programa:
Esta es la foto del circuito el cual ya tengo armado
http://3.bp.blogspot.com/_cg7SpBv9sAw/Swt00GutcbI/AAAAAAAAAV8/qTEuQOzh1vU/s1600/Contador+con+pic.JPG
Y la lista de componentes:
--1 Pic 16F84A.
--3 Pulsadores.
--2 Capacitores Cerámicos de 22pF.
--2 Capacitores Cerámicos de 100nF.
--4 Resistencias de 330R Ohmios 1/2 Watt.
--1 Resistencia de 100R Ohmios 1/2 Watt.
--1 Led. --1 Display de Cátodo Común.
--1 Cristal de Cuarzo de 4MHz.
El codigo .hex, .asm y .bas
http://www.mediafire.com/?onemdt1zm35
Gracias de antemano!
NOTA: Disculpen si este tema no corresponde a este sub-foro
Bueno estoy haciendo un proyecto para la universidad, de un Contador con PIC16F84A, el problema es que soy super principiante en esto...conocimientos bajisimos en lo que es programacion en assembler. Hoy me baje un tutorial de como usar el MPLAB ya que estamos usando un programador PICSTART Plus de Microchip.
Usando el MPLAB V7.30 segui todos los pasos .... luego apreto f10 para ver si tengo errores y me salen unos warning y unos errores.
Código:
Make: The target "C:\Documents and Settings\Administrador\Escritorio\jose\joselucez.o" is out of date.
Executing: "C:\Archivos de programa\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F84A "joselucez.asm" /l"joselucez.lst" /e"joselucez.err"
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 95 : Found label after column 1. (R0L)
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 96 : Found label after column 1. (R0H)
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 97 : Found label after column 1. (R1L)
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 98 : Found label after column 1. (R1H)
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 99 : Found label after column 1. (R2L)
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 100 : Found label after column 1. (R2H)
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 101 : Found label after column 1. (R3L)
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 102 : Found label after column 1. (R3H)
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 103 : Found label after column 1. (R4L)
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 104 : Found label after column 1. (R4H)
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 105 : Found label after column 1. (R5L)
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 106 : Found label after column 1. (R5H)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 108 : Overwriting previous address contents (0000)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 108 : Overwriting previous address contents (0000)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 112 : Overwriting previous address contents (0004)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 112 : Overwriting previous address contents (0004)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 116 : Overwriting previous address contents (0005)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 116 : Overwriting previous address contents (0005)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 117 : Overwriting previous address contents (0006)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 117 : Overwriting previous address contents (0006)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 118 : Overwriting previous address contents (0007)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 118 : Overwriting previous address contents (0007)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 120 : Overwriting previous address contents (0008)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 120 : Overwriting previous address contents (0008)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 121 : Overwriting previous address contents (0009)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 121 : Overwriting previous address contents (0009)
Warning[207] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 124 : Found label after column 1. (digito)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 126 : Overwriting previous address contents (000A)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 126 : Overwriting previous address contents (000A)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 127 : Overwriting previous address contents (000B)
Error[118] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 127 : Overwriting previous address contents (000B)
Error[173] C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM 310 : Source file path exceeds 62 characters (C:\DOCUMENTS AND SETTINGS\ADMINISTRADOR\ESCRITORIO\JOSE\JOSELUCEZ.ASM)
Halting build on first failure as requested.
BUILD FAILED: Mon Mar 22 03:32:19 2010
Y el problema es que nose como repararlos y tengo solo dos dias para hacerlo!..(Hoy es domingo, y el martes tengo que presentarlo)
Este es el programa:
Código:
;**********************************************************************
; This file is a basic code template for assembly code generation *
; on the PICmicro PIC16F84A. This file contains the basic code *
; building blocks to build upon. *
; *
; If interrupts are not used all code presented between the ORG *
; 0x004 directive and the label main can be removed. In addition *
; the variable assignments for 'w_temp' and 'status_temp' can *
; be removed. *
; *
; Refer to the MPASM User's Guide for additional information on *
; features of the assembler (Document DS33014). *
; *
; Refer to the respective PICmicro data sheet for additional *
; information on the instruction set. *
; *
; Template file assembled with MPLAB V4.00.00 and MPASM V2.20.12. *
; *
;**********************************************************************
; *
; Filename: xxx.asm *
; Date: *
; File Version: *
; *
; Author: *
; Company: *
; *
; *
;**********************************************************************
; *
; Files required: *
; *
; *
; *
;**********************************************************************
; *
; Notes: *
; *
; *
; *
; *
;**********************************************************************
list p=16F84A ; list directive to define processor
#include <p16F84A.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _RC_OSC
; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
;***** VARIABLE DEFINITIONS
w_temp EQU 0x0C ; variable used for context saving
status_temp EQU 0x0D ; variable used for context saving
;**********************************************************************
ORG 0x000 ; processor reset vector
goto main ; go to beginning of program
ORG 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
; isr code can go here or be located as a call subroutine elsewhere
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
main
; remaining code goes here
; Begin
R0L EQU 0xC
R0H EQU 0xD
R1L EQU 0xE
R1H EQU 0xF
R2L EQU 0x10
R2H EQU 0x11
R3L EQU 0x12
R3H EQU 0x13
R4L EQU 0x14
R4H EQU 0x15
R5L EQU 0x16
R5H EQU 0x17
ORG 0x0000
BCF PCLATH,3
BCF PCLATH,4
GOTO L0002
ORG 0x0004
RETFIE
L0002:
; 1: AllDigital
; 2: TRISA = %11111111
BSF STATUS,RP0
MOVLW 0xFF
MOVWF 0x05
; 3: TRISB = %00000000
CLRF 0x06
BCF STATUS,RP0
; 4: Dim digito As Byte
; The address of 'digito' is 0x18
digito EQU 0x18
; 5: PORTB = 63
MOVLW 0x3F
MOVWF 0x06
; 6: digito = 0
CLRF 0x18
; 7: loop:
L0001:
; 8: If PORTA.0 = 1 Then
BTFSS 0x05,0
GOTO L0003
; 9: WaitMs 100
MOVLW 0x64
MOVWF R0L
CLRF R0H
CALL W001
; 10: If digito = 10 Then
MOVF 0x18,W
SUBLW 0x0A
BTFSS STATUS,Z
GOTO L0004
; 11: digito = 0
CLRF 0x18
; 12: Endif
L0004: MOVLW 0x1F
ANDWF STATUS,F
; 13: If digito <= 10 Then
MOVF 0x18,W
SUBLW 0x0A
BTFSS STATUS,C
GOTO L0005
; 14: WaitMs 100
MOVLW 0x64
MOVWF R0L
CLRF R0H
CALL W001
; 15: digito = digito + 1
MOVF 0x18,W
ADDLW 0x01
MOVWF 0x18
; 16: PORTB = LookUp(0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x03f), digito
MOVF 0x18,W
SUBLW 0x0A
BTFSS STATUS,C
GOTO L0006
CALL L0007
MOVWF 0x06
GOTO L0006
L0007:
MOVLW 0x00
MOVWF PCLATH
MOVF 0x18,W
ADDWF PCL,F
RETLW 0x3F
RETLW 0x06
RETLW 0x5B
RETLW 0x4F
RETLW 0x66
RETLW 0x6D
RETLW 0x7D
RETLW 0x07
RETLW 0x7F
RETLW 0x6F
RETLW 0x3F
L0006:
; 17: Endif
L0005: MOVLW 0x1F
ANDWF STATUS,F
; 18: Endif
L0003: MOVLW 0x1F
ANDWF STATUS,F
; 19:
; 20: If PORTA.1 = 1 Then
BTFSS 0x05,1
GOTO L0008
; 21: WaitMs 100
MOVLW 0x64
MOVWF R0L
CLRF R0H
CALL W001
; 22: If digito = 0 Then
MOVF 0x18,W
SUBLW 0x00
BTFSS STATUS,Z
GOTO L0009
; 23: digito = 10
MOVLW 0x0A
MOVWF 0x18
; 24: Endif
L0009: MOVLW 0x1F
ANDWF STATUS,F
; 25: If digito >= 0 Then
MOVLW 0x00
SUBWF 0x18,W
BTFSS STATUS,C
GOTO L0010
; 26: WaitMs 100
MOVLW 0x64
MOVWF R0L
CLRF R0H
CALL W001
; 27: digito = digito - 1
MOVLW 0x01
SUBWF 0x18,W
MOVWF 0x18
; 28: PORTB = LookUp(0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f), digito
MOVF 0x18,W
SUBLW 0x09
BTFSS STATUS,C
GOTO L0011
CALL L0012
MOVWF 0x06
GOTO L0011
L0012:
MOVLW 0x00
MOVWF PCLATH
MOVF 0x18,W
ADDWF PCL,F
RETLW 0x3F
RETLW 0x06
RETLW 0x5B
RETLW 0x4F
RETLW 0x66
RETLW 0x6D
RETLW 0x7D
RETLW 0x07
RETLW 0x7F
RETLW 0x6F
L0011:
; 29: Endif
L0010: MOVLW 0x1F
ANDWF STATUS,F
; 30: Endif
L0008: MOVLW 0x1F
ANDWF STATUS,F
; 31: Goto loop
GOTO L0001
; End of program
L0013: GOTO L0013
; Waitms Routine
W001: MOVF R0L,F
BTFSC STATUS,Z
GOTO W002
CALL W003
DECF R0L,F
NOP
NOP
NOP
NOP
NOP
GOTO W001
W002: MOVF R0H,F
BTFSC STATUS,Z
RETURN
CALL W003
DECF R0H,F
DECF R0L,F
GOTO W001
W003: MOVLW 0x0C
MOVWF R2H
W004: DECFSZ R2H,F
GOTO W004
NOP
NOP
MOVLW 0x12
MOVWF R1L
W005: DECFSZ R1L,F
GOTO W006
CALL W007
CALL W007
NOP
NOP
RETURN
W006: CALL W007
GOTO W005
W007: MOVLW 0x0D
MOVWF R2L
W008: DECFSZ R2L,F
GOTO W008
NOP
RETURN
; End of listing
END ; directive 'end of program'
Esta es la foto del circuito el cual ya tengo armado
http://3.bp.blogspot.com/_cg7SpBv9sAw/Swt00GutcbI/AAAAAAAAAV8/qTEuQOzh1vU/s1600/Contador+con+pic.JPG
Y la lista de componentes:
--1 Pic 16F84A.
--3 Pulsadores.
--2 Capacitores Cerámicos de 22pF.
--2 Capacitores Cerámicos de 100nF.
--4 Resistencias de 330R Ohmios 1/2 Watt.
--1 Resistencia de 100R Ohmios 1/2 Watt.
--1 Led. --1 Display de Cátodo Común.
--1 Cristal de Cuarzo de 4MHz.
El codigo .hex, .asm y .bas
http://www.mediafire.com/?onemdt1zm35
Gracias de antemano!
NOTA: Disculpen si este tema no corresponde a este sub-foro
Última edición: