Autor Tema: cambiar configuracion de contador  (Leído 4041 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado ciztema

  • PIC10
  • *
  • Mensajes: 13
cambiar configuracion de contador
« en: 12 de Mayo de 2005, 02:38:00 »
de antemano gracias por ser tan pacientes y dar unas manos , tal ves esto que voy a proponer sea una estupides para la mayoria de aqui , pero como creo la mayoria en sus primeros pasos , trato de comprender un poco el idioma y la mejor manera ademas de leer mucho es hacer un poco de osada experiencia .
Bueno , llendo al grano mi dilema es que tengo un contador que arme , es el de pablin , el contador simple , y arme el programador con el cual programe el pic , el contador funciona bien , pero para el uso que necesito darle , tendria que modificar el tema que cuando mantengo precionado el boton de contar , comienza a sumar rapidamente y lo que tendria que modificar seria, o hacer que este tiempo sea mayor o en todo caso eliminar esta funcion , ya que el accionamiento del red swich tiene una pasada lenta y en algunos casos me suma dos o tres digitos de una ves. Estoy leyendo mucho sobre asembler y me doy algunos golpes , como con que poder editar(modificar y que ? ) del  archivo .asm original y poder pasarlo a .hex o cuales serian los pasos a seguir para anular o modicar esta funcion , ej. que linea tocar y demas , perdon de nuevo por mi poco conocimiento , pero le estoy poniendo garra al tema y se que con ayuda , tiempo y dedicacion podre hacerlo. tratare a continuacion poner el .asm original y les agredeceria como hacer para pasarlo correctamente a hex .Como programador uso el de pablin y el icprog 1.05a muchas gracias..
;Contador de 4 digitos.

indo    equ     00h                             ;registro de indireccion
pc      equ     02h                              ;contador de programa
status  equ     03h                            ;registro de estado
fsr     equ     04h                               ;registro de seleccion
ptoa    equ     05h                            ;puerto a
ptob    equ     06h                            ;puerto b
rota    equ     0fh                              ;variable para desplazamiento de display
trisa   equ     85h                              ;configuracion puerto a
trisb   equ     86h                              ;configuracion puerto b
dig1    equ     10h                             ;acumulador miles
dig2    equ     11h                             ;acumulador centenas
dig3    equ     12h                             ;acumulador decenas
dig4    equ     13h                             ;acumulador unidades
loops   equ     1dh                           ;variables usadas en retardos
loops2  equ     1eh
z       equ     02h                            ;flag de cero
ram     equ     05h                        ;bit de seleccion de pagina de memoria
c       equ     00h                         ;flag de acarreo
w       equ     00h                        ;bit de destino a variable de trabajo

reset   org     00
        goto    inicio
        org     05h

retardo                                        ;subrutina de retardo
        movwf   loops                      ;la variable de trabajo contiene la cant.
top2    movlw   d"110"                  ;de ms a demorar
        movwf   loops2
top     nop
        nop
        nop
        nop
        nop
        nop
        decfsz  loops2                        ;controla si termina 1mS
        goto    top
        decfsz  loops                           ;controla si termina el retardo completo
        goto    top2
        retlw   0

s1000                                           ;rutina de incremento x 1000
        clrf    dig2                              ;pone a cero las centenas
        incf    dig1                           ;incrementa el contador de miles  
        movf    dig1, w                      ;carga en work el conteo de los miles  
        xorlw   0ah                           ;si work era 10, entonces quedara en cero
        btfsc   status, z                    ;si es cero, el flag z queda alto
        clrf    dig1                             ;inicializa los miles  
        return
s100                                          ;rutina de incremento x 100
        clrf    dig3                           ;pone a cero las decenas
        incf    dig2                             ;incrementa el contador de centenas
        movf    dig2, w                        ;carga en work el conteo de las centenas
        xorlw   0ah                           ;si work era 10, entonces quedara en cero
        btfsc   status, z                    ;si es cero, el flag z queda alto
        call    s1000                          ;incrementa los miles  
        return

s10                                              ;rutina de incremento x 10
        clrf    dig4                          ;pone a cero las unidades
        incf    dig3                       ;incrementa el contador de decenas
        movf    dig3, w                  ;carga en work el conteo de las decenas
        xorlw   0ah                      ;si work era 10, entonces quedara en cero
        btfsc   status, z                  ;si es cero, el flag z queda alto
        call    s100                            ;incrementa las centenas
        return

subir                                          ;rutina de incremento
        incf    dig4                         ;incrementa el contador de unidades
        movf    dig4, w                   ;carga en work el conteo de las unidades
        xorlw   0ah                      ;si work era 10, entonces quedara en cero
        btfsc   status, z                ;si es cero, el flag z queda alto
        call    s10                       ;incrementa las decenas
        movlw   d"250"                   ;retardo de 100ms
        call    retardo        
        return

tabla                                       ;genera los numeros sobre el display
        addwf   pc                      ;agrega al cont. programa el valor de work
        retlw   b"00111111"     ;genera el 0
        retlw   b"00011000"     ;genera el 1
        retlw   b"01110110"     ;genera el 2
        retlw   b"01111100"     ;genera el 3
        retlw   b"01011001"     ;genera el 4
        retlw   b"01101101"     ;genera el 5
        retlw   b"01101111"     ;genera el 6
        retlw   b"00111000"     ;genera el 7
        retlw   b"01111111"     ;genera el 8
        retlw   b"01111101"     ;genera el 9

inicio                                              ;programa principal
        bsf     status, ram                   ;selecciona el banco de memoria alto
        movlw   b"00010000"               ;configura el puerto a
        movwf   trisa                          ;bit 4 entrada, demas bits salidas.
        movlw   00h                            ;configura el puerto b
        movwf   trisb                               ;como salidas
        bcf     status, ram                 ;selecciona el banco de memoria bajo
        clrf    dig1                             ;inicializa acumuladores
        clrf    dig2
        clrf    dig3
        clrf    dig4
        movlw   00                         ;envia ceros a los transistores para apagar
        movwf   ptoa                        ;todos los displays

empe    btfss   ptoa, 4                 ;chequea el pulsador
        call    subir                        ;llama la rutina de incremento
        movlw   08h                        ;iniciar un 1 en el registro de rotacion
        movwf   rota            
        movlw   dig1                          ;con el registro selector (fsr) se apunta
        movwf   fsr                       ;al primer dato que se va a mostrar
disp    movlw   00h                       ;colocar en cero el dato del display
        movwf   ptob                         ;para apagarlos
        movf    rota, w                    ;pasa rotacion del 1 a la variable work
        movwf   ptoa                      ;enciende el transistor (display)
        movf    indo, w                     ;lee el dato del registro apuntado por fsr
        call    tabla                    ;genera el digito de 7 segmentos
        movwf   ptob                        ;envia el digito al puerto b
        movlw   03h                         ;retardo de 3ms para visualizacion
        call    retardo
        btfsc   rota, 0                 ;controla si terminaron las cuatro rotaciones
        goto    empe                    ;si termino, vuelve desde el comienzo
        bcf     status, c                ;carry en cero para no afectar las rotaciones
        rrf     rota                     ;desplaza el 1 que enciende los displays
        incf    fsr                      ;incrementa el puntero. Apunta el proximo
        goto    disp                        ;digito a mostrar

        end

Desconectado ciztema

  • PIC10
  • *
  • Mensajes: 13
RE: cambiar configuracion de contador
« Respuesta #1 en: 12 de Mayo de 2005, 03:24:00 »
de nuevo este novato , jeje otro detalle o problema que me surgio es que este contador trabajaria en en una maquina que tiene unos solenoides y me paso que al activarce estos el contador se resetea , tal ves hay alguna modificacion que se le pueda hacer para que sea mas estable a "ruidos" el circuito con toda la informacion esta en esta direccion http://www.pablin.com.ar/electron/circuito/mc/contador/index.htm
desde ya nuevamente muchas gracias por su tiempo y a sus ordenes
lei por el foro el tema de una R de 4,7k entre pata 4 y vcc , pero este circuito ya tiene una de 1 k que trabaja con el reset .

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: cambiar configuracion de contador
« Respuesta #2 en: 12 de Mayo de 2005, 11:34:00 »
Buenas.

Te pongo en rojo lo que tienes que añadir al programa

Codigo:
clrf salto
empe btfsc salto,0
goto salta
btfss ptoa, 4 ;chequea el pulsador
call subir ;llama la rutina de incremento
salta bsf salto,0
btfsc ptoa,4
bcf salto,0

movlw 08h ;iniciar un 1 en el registro de rotacion
movwf rota
movlw dig1 ;con el registro selector (fsr) se apunta
movwf fsr ;al primer dato que se va a mostrar
disp movlw 00h ;colocar en cero el dato del display
movwf ptob ;para apagarlos
movf rota, w ;pasa rotacion del 1 a la variable work
movwf ptoa ;enciende el transistor (display)
movf indo, w ;lee el dato del registro apuntado por fsr
call tabla ;genera el digito de 7 segmentos
movwf ptob ;envia el digito al puerto b
movlw 03h ;retardo de 3ms para visualizacion
call retardo
btfsc rota, 0 ;controla si terminaron las cuatro rotaciones
goto empe ;si termino, vuelve desde el comienzo
bcf status, c ;carry en cero para no afectar las rotaciones
rrf rota ;desplaza el 1 que enciende los displays
incf fsr ;incrementa el puntero. Apunta el proximo
goto disp ;digito a mostrar


Con esta modificación el programa incrementa cuando pulsas el botón por primera vez y activa el primer bit de un registro "salto" que debes definir al principio del programa. Este bit sirve para que , mientras esté activado, no se incremente la cuenta. El bit se desactiva cuando levantas el dedo del pulsador.

Si tienes alguna duda no dudes en preguntarRebotado

Desconectado ciztema

  • PIC10
  • *
  • Mensajes: 13
RE: cambiar configuracion de contador
« Respuesta #3 en: 12 de Mayo de 2005, 20:31:00 »
muchas gracias antoniof , muy amable y voy a ponerlo en practica de inmediato ,a uno le causa mucha alegria que exista este tipo de foro y esta clase de gente ...
y por otro lado , si alguien sabe algo con respesto a la estabilidad o reformas para hacerlo mas estable por ruidos les agradeceria , saludos Ciztema.

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: cambiar configuracion de contador
« Respuesta #4 en: 13 de Mayo de 2005, 15:50:00 »
Bueno. En cuanto al ruido, debes colocar un condensador de 100 nF los más cerca posible de las patillas de alimentación del PIC. Con esto disminuyes la sensibilidad a los ruidos. También te aconsejo que pongas otro entre la patilla de reset y masa. No he visto el PIC que utilizas. Si utilizas algún PIC que tenga el BROWN OUT RESET, desactivalo en la palabra de configuración, porque éste hará que el PIC se resetee cuando caiga un poco la tensión.
Con estas tres cosillas yo he llegado a apagar la fuente de alimentación de un PIC y, cuando la vuelvo a encender al cabo de una par de segundos, el PIC sigue la ejecución del programa por donde iva sin resetearse.
Suerte.RebotadoRebotadoRebotado

Desconectado ciztema

  • PIC10
  • *
  • Mensajes: 13
RE: cambiar configuracion de contador
« Respuesta #5 en: 15 de Mayo de 2005, 02:58:00 »
nuevamente muchisimas gracias por los datos , los voy a poner en practica y por otrra parte , con respecto a la modificacion en el asm que me pasaste , tengo dudas de como proceder ya que nunca lleve a la practica el "programar en asm", si programe el micro pero con un hex ya listo , mi duda seria primero con que programa poder abrir el asm original y poder editarlo y terminado esto , con cual otro poder pasarlo a hex para grabarlo , perdon por ser tan novato o pregunton , pero de verdad me interesa y con la practica voy a ir comprendiendo mas , tengo varios programas que baje , como mpasmwin , mplab,icprog,proteus,niple, pero no llegue todavia a manejarlos o mejor dicho saber darle el uso adecuado , trate de usar para pasar de asm a hex el mpasmwin , pero me tira un archivo con otro formato como resultado , tal ves o seguro hago algo mal , bueno , desde ya muchas gracias antoniof por el tiempo brindado . Un abrazo, ciztema
ahh , perdon , con respeto al micro este es un pic16f84a.

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: cambiar configuracion de contador
« Respuesta #6 en: 15 de Mayo de 2005, 07:00:00 »
Vale.
Con el programa mplab puedes editar, y recompilar el archivo directamente, ya que éste llama al subprograma mpasmwin automáticamente. Para que te funcione bien, primero debes crear un proyecto nuevo: menu project --> New...
Le das un nombre y un directorio. En el directorio te recomiendo que uses rutas pequeñas por ejemplo c:PICcontador. Después pinchas OK. En menu --> configure --> select device, debes elegir tu PIC que en este caso es el 16F84A y le das a OK. En el menu --> file --> open buscas tu archivo asm, el que vas a editar. Es mejor, para no perder los archivos, tener ya una copia del archjivo asm en el directorio donde hemos creado el proyecto (c:PICcontador). Una vez abierto puedes editar las líneas que te mandé. cuando lo tengas listo y guardadas las modificaciones, hay que incluir este archivo en el proyecto. Para ello menu --> project --> add files to project, y seleccionas el archivo .asm. Una vez hecho esto, sólo tines que pulsar Ctrl+F10 y te compila el archivo. Si todo ha ido correcto, te saldrá el mensaje success. Si no, pues ha revisar los posibles fallos de sintesis. Cuando termine de compilar, tendrás un archivo con extensión .hex en el directorio del projecto que podrás utilizar para cargar de nuevo el programa en el PIC con ayuda del ICProg o cualquier otro programa que tengas para grabar los PICs.

Con esto termino mi mini tutorial de MPLab.

Desconectado ciztema

  • PIC10
  • *
  • Mensajes: 13
RE: cambiar configuracion de contador
« Respuesta #7 en: 17 de Mayo de 2005, 00:10:00 »
Bueno Antoniof , ya no hay palabras , estoy llevando cada paso que me indica a la practica y jeje , ya lo estoy transformando en un super contador jej , ademas estoy aprendiendo como loco con las indicaciones , desde ya antoniof desde mi humilde conocimiento , estoy totalmente a sus ordenes , un abrazo desde buenos aires argentina , ciztema , (jose luis) graciasRebotado

Desconectado ciztema

  • PIC10
  • *
  • Mensajes: 13
RE: cambiar configuracion de contador
« Respuesta #8 en: 17 de Mayo de 2005, 01:44:00 »
antoniof , ahi te voy con mis ables quemados , te doy el archivo como lo edite , y luego el error que me da , con respeto a algun simbolo  no definido ...
;Contador de 4 digitos.

indo    equ     00h             ;registro de indireccion
pc      equ     02h             ;contador de programa
status  equ     03h             ;registro de estado
fsr     equ     04h             ;registro de seleccion
ptoa    equ     05h             ;puerto a
ptob    equ     06h             ;puerto b
rota    equ     0fh             ;variable para desplazamiento de display
trisa   equ     85h             ;configuracion puerto a
trisb   equ     86h             ;configuracion puerto b
dig1    equ     10h             ;acumulador miles
dig2    equ     11h             ;acumulador centenas
dig3    equ     12h             ;acumulador decenas
dig4    equ     13h             ;acumulador unidades
loops   equ     1dh             ;variables usadas en retardos
loops2  equ     1eh
z       equ     02h             ;flag de cero
ram     equ     05h             ;bit de seleccion de pagina de memoria
c       equ     00h             ;flag de acarreo
w       equ     00h             ;bit de destino a variable de trabajo

reset   org     00
        goto    inicio
        org     05h

retardo                         ;subrutina de retardo
        movwf   loops           ;la variable de trabajo contiene la cant.
top2    movlw   d"110"          ;de ms a demorar
        movwf   loops2
top     nop
        nop
        nop
        nop
        nop
        nop
        decfsz  loops2          ;controla si termina 1mS
        goto    top
        decfsz  loops           ;controla si termina el retardo completo
        goto    top2
        retlw   0

s1000                           ;rutina de incremento x 1000
        clrf    dig2            ;pone a cero las centenas
        incf    dig1            ;incrementa el contador de miles  
        movf    dig1, w         ;carga en work el conteo de los miles  
        xorlw   0ah             ;si work era 10, entonces quedara en cero
        btfsc   status, z       ;si es cero, el flag z queda alto
        clrf    dig1            ;inicializa los miles  
        return
s100                            ;rutina de incremento x 100
        clrf    dig3            ;pone a cero las decenas
        incf    dig2            ;incrementa el contador de centenas
        movf    dig2, w         ;carga en work el conteo de las centenas
        xorlw   0ah             ;si work era 10, entonces quedara en cero
        btfsc   status, z       ;si es cero, el flag z queda alto
        call    s1000           ;incrementa los miles  
        return

s10                             ;rutina de incremento x 10
        clrf    dig4            ;pone a cero las unidades
        incf    dig3            ;incrementa el contador de decenas
        movf    dig3, w         ;carga en work el conteo de las decenas
        xorlw   0ah             ;si work era 10, entonces quedara en cero
        btfsc   status, z       ;si es cero, el flag z queda alto
        call    s100            ;incrementa las centenas
        return

subir                           ;rutina de incremento
        incf    dig4            ;incrementa el contador de unidades
        movf    dig4, w         ;carga en work el conteo de las unidades
        xorlw   0ah             ;si work era 10, entonces quedara en cero
        btfsc   status, z       ;si es cero, el flag z queda alto
        call    s10             ;incrementa las decenas
        movlw   d"250"          ;retardo de 100ms
        call    retardo
        return

tabla                           ;genera los numeros sobre el display
        addwf   pc              ;agrega al cont. programa el valor de work
        retlw   b"00111111"     ;genera el 0
        retlw   b"00011000"     ;genera el 1
        retlw   b"01110110"     ;genera el 2
        retlw   b"01111100"     ;genera el 3
        retlw   b"01011001"     ;genera el 4
        retlw   b"01101101"     ;genera el 5
        retlw   b"01101111"     ;genera el 6
        retlw   b"00111000"     ;genera el 7
        retlw   b"01111111"     ;genera el 8
        retlw   b"01111101"     ;genera el 9

inicio                          ;programa principal
        bsf     status, ram     ;selecciona el banco de memoria alto
        movlw   b"00010000"     ;configura el puerto a
        movwf   trisa           ;bit 4 entrada, demas bits salidas.
        movlw   00h             ;configura el puerto b
        movwf   trisb           ;como salidas
        bcf     status, ram     ;selecciona el banco de memoria bajo
        clrf    dig1            ;inicializa acumuladores
        clrf    dig2
        clrf    dig3
        clrf    dig4
        movlw   00              ;envia ceros a los transistores para apagar
        movwf   ptoa            ;todos los displays
        clrf    salto
empe    
        btfsc   salto, 0
        goto    salta
        btfss   ptoa, 4         ;chequea el pulsador
        call    subir           ;llama la rutina de incremento
salta  
        bsf     salto, 0
        btfsc   ptoa, 4
        bcf     salto, 0
        movlw   08h             ;iniciar un 1 en el registro de rotacion
        movwf   rota            
        movlw   dig1            ;con el registro selector (fsr) se apunta
        movwf   fsr             ;al primer dato que se va a mostrar
disp    movlw   00h             ;colocar en cero el dato del display
        movwf   ptob            ;para apagarlos
        movf    rota, w         ;pasa rotacion del 1 a la variable work
        movwf   ptoa            ;enciende el transistor (display)
        movf    indo, w         ;lee el dato del registro apuntado por fsr
        call    tabla           ;genera el digito de 7 segmentos
        movwf   ptob            ;envia el digito al puerto b
        movlw   03h             ;retardo de 3ms para visualizacion
        call    retardo
        btfsc   rota, 0         ;controla si terminaron las cuatro rotaciones
        goto    empe            ;si termino, vuelve desde el comienzo
        bcf     status, c       ;carry en cero para no afectar las rotaciones
        rrf     rota            ;desplaza el 1 que enciende los displays
        incf    fsr             ;incrementa el puntero. Apunta el proximo
        goto    disp            ;digito a mostrar

        end

y el error es el siguiente:

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:Archivos de programaMPLAB IDEMCHIP_Toolsmpasmwin.exe" /q /p16F84 "contadoreditado.asm" /l"contadoreditado.lst" /e"contadoreditado.err" /o"contadoreditado.o"
Message[305] C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 37 : Using default destination of 1 (file).
Message[305] C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 39 : Using default destination of 1 (file).
Message[305] C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 45 : Using default destination of 1 (file).
Message[305] C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 53 : Using default destination of 1 (file).
Message[305] C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 62 : Using default destination of 1 (file).
Message[305] C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 70 : Using default destination of 1 (file).
Message[305] C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 80 : Using default destination of 1 (file).
Message[302] C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 95 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 97 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[113]   C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 105 : Symbol not previously defined (salto)
Error[113]   C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 107 : Symbol not previously defined (salto)
Error[113]   C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 112 : Symbol not previously defined (salto)
Error[113]   C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 114 : Symbol not previously defined (salto)
Message[305] C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 131 : Using default destination of 1 (file).
Message[305] C:WINDOWSESCRITORIONUEVA CARPETACONTADOREDITADO.ASM 132 : Using default destination of 1 (file).
Halting build on first failure as requested.
BUILD FAILED: Tue May 17 03:36:56 2005

Desconectado ciztema

  • PIC10
  • *
  • Mensajes: 13
RE: cambiar configuracion de contador
« Respuesta #9 en: 17 de Mayo de 2005, 01:50:00 »
perdon por ser su pesadilla , pero por las dudas dejo un correo si es necesario el envio de algun archivo o por las dudas , no se si el pegar los archivos por ahi confunde un poco ciztema@arnet.com.arciztema@arnet.com.ar

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: cambiar configuracion de contador
« Respuesta #10 en: 17 de Mayo de 2005, 04:50:00 »
Buenas.

No te preocupes. Aqui estamos para estas cosas. Prefiero comentarte las cosas en el foro par que si a alguien le surge la misma duda, que tenga este post de referencia.

El error surge porque no has definido el registro "salto". Para poder utilizar los registros tales como ptoa, ptob, etc.., hay que asociar dicho nombre con una dirección de memoria. Así al principio del programa, se relaciona un nombre con una dirección de memoria y no hay que recordar que dirección de memoria tenía un registro u otro, sino que símplemente recordamos el nombre que le asignamos. Por ejemplo el purto A del PIC tiene la dirección 05h, y lo relacionamos con el nombre ptoa de la siguiente forma:

ptoa equ 05h

Así cuando escribamos "ptoa", el compilador sustituye este nombre por su valor.

En nuestro programa, vamos a asociar el nombra salto con cualquier dirección de memoria libre, por ejemplo la 20h. Te escribo en rojo la modificación:

Codigo:
indo equ 00h ;registro de indireccion
pc equ 02h ;contador de programa
status equ 03h ;registro de estado
fsr equ 04h ;registro de seleccion
ptoa equ 05h ;puerto a
ptob equ 06h ;puerto b
rota equ 0fh ;variable para desplazamiento de display
trisa equ 85h ;configuracion puerto a
trisb equ 86h ;configuracion puerto b
dig1 equ 10h ;acumulador miles
dig2 equ 11h ;acumulador centenas
dig3 equ 12h ;acumulador decenas
dig4 equ 13h ;acumulador unidades
loops equ 1dh ;variables usadas en retardos
loops2 equ 1eh
salto equ 20h
z equ 02h ;flag de cero
ram equ 05h ;bit de seleccion de pagina de memoria
c equ 00h ;flag de acarreo
w equ 00h ;bit de destino a variable de trabajo


El resto de mensajes son debidos a que cuando hay una orden "incf" o "decf", por defecto el compilador asigna este incremento al registro con el que se está trabajando. Por ejemplo, si yo escribo "incf contador", estoy incrementadno el valor del contador y el resultado lo guardo en el propio registro contador. Esta instrucción, se puede escribir de la siguiente forma: "incf contador,1". El resultado es el mismo que antes. Si en vez de poner un 1 ponemos un cero: "incf contador,0", el resultado se guarda en el registro de trabajo "w" y el contenido del registro contador no se modifica. Resumiendo:

incf contador --> Incrementa contador y resultado en contador (aparece mensage al compilar)

incf contador,1 --> Incrementa contador y resultado en contador ( no aparece mensage al compilar)

incf contador,0 --> Incrementa contador y resultado en "w"( no aparece mensage al compilar)

Desconectado ciztema

  • PIC10
  • *
  • Mensajes: 13
RE: cambiar configuracion de contador
« Respuesta #11 en: 19 de Mayo de 2005, 23:29:00 »
de verdad si antoniof que voy aprendiendo y cada ves me gusta mass , de nuevo muchas gracias y como siempre de inmediato lo voy a hacer practica , un abrazo y por ahora te dejo tranquilo hasta queme salga algun nudo jej , te mando un gran abrazo desde argentina....jose luis (ciztema)Sonrisa


 

anything