elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22
91  Informática / Electrónica / Re: Duda sobre programa PIC en: 18 Abril 2013, 22:57 pm
Gracias por responder ya lo he solucionado, era que en el  MPLAB tenia que configurar el watchdog  en modo reset  esa parte nos la dijo luego el profesor  :¬¬
Gracias por la ayuda 
92  Informática / Electrónica / Duda sobre programa PIC en: 17 Abril 2013, 10:24 am
Hola gracias por leer mi duda, tengo un programa que nos ha dado el profesor y tenemos que explicar como funcionan los distintos reset Hay algo que no entiendo:
Código
  1. ;**********************************************************************************************
  2. ;**********************************************************************************************
  3. ; *
  4. ; Filename: _________.asm *
  5. ; Date: ___________ *
  6. ; File Version: vs0.0 *
  7. ; *
  8. ; Author: Mikel Etxebarria *
  9. ; Company: Ingeniería de Microsistemas Programados S.L. *
  10. ; Grade program: GIEA *
  11. ; Subject: *
  12. ; *
  13. ;**********************************************************************************************
  14. ; *
  15. ; Files Required: P16F886A.INC *
  16. ; *
  17. ;**********************************************************************************************
  18. ; *
  19. ; Descrpción: *
  20. ;El Watch Dog Timer (WDT)
  21. ;
  22. ;
  23. ;El WDT se alimenta a partir de un oscilador interno e independiente de 31KHz (periodo de 32uS). Dispone de un
  24. ;prescaler de 8 bits controlado mediante el OPTION_REG y, otro de 16 bits, que se controla mediante WDTCON. El tiempo
  25. ;total para debordar es de 32uS * OPTION_REG * WDTCON. En el presente ejemplo el prescaler de OPTION_REG es de 128.
  26. ;De esta forma el intervalo de desbordamiento es de 32uS * 128 * WDTCON. Por su parte WDTCON se carga con el valor
  27. ;binario procedente de las entradas RA3:RA0. De esta forma se obtienen desbordamientos a intervalos variables según
  28. ;la siguiente tabla:
  29. ;RA3:RA0 WDTCON TIEMPO RA3:RA0 WDTCON TIEMPO
  30. ;------- ------ ------ ------- ------ ------
  31. ;0000 32 0.13 s 0110 2048 8.45 s
  32. ;0001 64 0.26 s 0111 4096 16.91 s
  33. ;0010 128 0.52 s 1000 8192 33.82 s
  34. ;0011 256 1.05 s 1001 16384 67.65 s
  35. ;0100 512 2.11 s 1010 32768 135.30 s
  36. ;0101 1024 4.22 s 1011 65536 270.60 s
  37. ;*********************************************************************************************
  38. ;***** CONFIGURACIÓN *************************************************************************
  39. List p=16F886 ;Tipo de procesador
  40. include "P16F886.INC" ;Definiciones de registros internos
  41. #define Fosc 4000000 ;Velocidad de trabajo
  42.  
  43. ;Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
  44. ;adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades
  45.  
  46. __config _CONFIG1, _LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF ;Palabra 1 de configuración
  47. __config _CONFIG2, _WRT_OFF&_BOR40V ;Palabra 2 de configuración
  48.  
  49. MSE_Delay_V equ 0x70 ;Variables (3) empleadas por las macros de temporización
  50.  
  51. org 0x00 ;Vector de RESET
  52. goto Inicio
  53. org 0x05
  54.  
  55. include "MSE_Delay.inc" ;Incluir rutinas de temporización
  56.  
  57. ;Rutina habitual de inicialización de los registros internos empleados en el ejemplo
  58. Inicio_Reg clrf PORTB ;Borra los latch de salida
  59. bsf STATUS,RP0
  60. bsf STATUS,RP1 ;Selecciona banco 3
  61. clrf ANSEL ;Puerta A digital
  62. clrf ANSELH ;Puerta B digital
  63. bcf STATUS,RP0 ;Selecciona banco 2
  64. bsf WDTCON,SWDTEN ;Activa por software el WDT
  65. bsf STATUS,RP0
  66. bcf STATUS,RP1 ;Selecciona banco 1
  67. movlw b'11111111'
  68. movwf TRISA ;RA3-RA0 entradas
  69. movlw b'11110110'
  70. movwf TRISB ;RB3 y RB0 salidas
  71. movlw b'00001111'
  72. movwf OPTION_REG ;Preescaler de 128 para el WDT
  73. bcf STATUS,RP0 ;Selecciona banco 0
  74. return ;Fin de la rutina de inicialización
  75.  
  76. ;Determinar el origen del RESET
  77. Inicio btfss STATUS,NOT_TO ;RESET provocado por el WDT ??
  78. goto WDT_RESET ;Si, se realiza el tratamiento oportuno
  79.  
  80. ;RESET provocado por MCLR o conexión de alimentación (Power On Reset).
  81. RESET_POR call Inicio_Reg ;Inicialización habitual de registros
  82.  
  83. ;Flash de 0.2 seg. sobre RB3
  84. bsf PORTB,3 ;Activa RB3
  85. Delay 200 Milis ;Temporiza 0.2 seg.
  86. bcf PORTB,3 ;Desactiva RB3
  87. goto Loop
  88.  
  89. ;RESET provocado por desbordamiento del WDT. Iniciación habitual
  90. WDT_RESET call Inicio_Reg ;Inicialización habitual de registros
  91.  
  92. ;Flash de 0.1 seg. sobre RB0. Reajustar el prescaler del WDT según las entradas RA3:RA0
  93. bsf PORTB,0 ;Activa RB0
  94. Delay 100 Milis ;Temporiza 0.1 seg
  95. bcf PORTB,0 ;Desactiva RB0
  96. rlf PORTA,W ;Lee las entradas RA3:RA0
  97. andlw b'00011110'
  98. iorlw b'00000001'
  99. bsf STATUS,RP1 ;Selecciona banco 2
  100. movwf WDTCON ;Actualiza el prescaler del WDT con el nuevo valor según las entradas
  101. bcf STATUS,RP1 ;Selecciona banco 0
  102.  
  103. ;Este es el cuerpo del programa principal. Es un bucle cerrado en el que el WDT NO se  refresca por lo que
  104. ;tarde o temprano desbordará y provocará un RESET
  105.  
  106. Loop nop
  107. goto Loop
  108.  
  109. end ;Fin del programa fuente
  110.  
  111.  

MSE_Delay.inc   Este es el subprograma de  Delay

 
Código
  1. ;************************************************************************************************************************
  2. ;
  3. ; Autor: Mikel Etxebarria
  4. ; (c) Ingeniería de Microsistemas Programados S.L.
  5. ;
  6. ;  
  7. ;
  8. ;Macro y rutina de temporización que se ajustan en función de la frecuencia de trabajo Fosc. En el programa principal
  9. ;se debe definir:
  10. ;a) La frecuencia de trabajo (en hz) mediante ... "#define Fosc xxxxxxxx"
  11. ;b) Inicio de las variables de temporización " MSE_Delay_V equ 0xXX "
  12. ;
  13. ;El usuario llama a la macro desde su programa principal mediante ... "Delay xxxx Milis"
  14. ;
  15. ;Se obtiene una precisión razonable con valores de temporización desde 1 hasta 2000 mS y a frecuencias Fosc
  16. ;que van desde 1MHz hasta 48MHz
  17.  
  18. #define         Milis * D'1000000'
  19.  
  20. CBLOCK MSE_Delay_V ;Inicio de las variables. Será la primera
  21. MSE_Delay_1 ;direccón libre disponible
  22. MSE_Delay_2
  23. MSE_Delay_3
  24. ENDC
  25.  
  26. Delay macro tiempo_ns ;tiempo_ns expresa en ns el tiempo de temporización deseado
  27.  
  28. ifndef Fosc ;En el programa principal se ha definir la frecuencia de trabajo en Hz
  29. messg "ERROR !! - Establecer la frecuencia de trabajo (p.e. #define Fosc 4000000)"
  30. exitm
  31. endif
  32.  
  33. radix dec ;Operaciones en base decimal
  34. variable ciclo_instruc_ns =  (( 1000000000 ) / (Fosc / 4 )) ;Calcula ciclo de instrucción en función de la frecuencia Fosc
  35. variable ciclos = (tiempo_ns / ciclo_instruc_ns) ;Calcula el nº de ciclos necesarios para la temporización deseada
  36.  
  37.  
  38. movlw upper (ciclos/4)+1
  39. movwf MSE_Delay_1
  40. movlw high (ciclos/4)+1
  41. movwf MSE_Delay_2
  42. movlw low (ciclos/4)
  43. movwf MSE_Delay_3 ;Carga las variables de temporización con el nº de ciclos calculado
  44. call MSE_Delay
  45.  
  46. endm
  47.  
  48. MSE_Delay clrwdt ;Bucles de temporización
  49. decfsz MSE_Delay_3,f
  50. goto MSE_Delay
  51. decfsz MSE_Delay_2,f
  52. goto MSE_Delay
  53. decfsz MSE_Delay_1,f
  54. goto MSE_Delay
  55. return
  56.  
  57.  

Pues la duda que tengo es que lo ejecuto  hace perfectamente la configuración de los puertos  y el delay pero luego entra en el bluce Loop y sale que se desborda el Watchdog, y se ve en el registro Status que el bit 4 ha pasado a 0,hasta hay bien, pero vuelvo a ponerlo en marcha y no vuelve al principio del programa  por lo tanto la parte de "Flash de 0.1 seg. sobre RB0. Reajustar el prescaler del WDT según las entradas RA3:RA0" no se ejecuta nunca porque no sale del bucle loop.
El profesor nos ha dicho que no hay que modificar ni cambiar nada del programa que nos ha dado.

La simulación la he hecho con el  MPLAB Sim y el oscilador a 4MHz.
Gracias por la ayuda.


93  Informática / Electrónica / Re: Dudas para crear temporizador en ensamblador en: 1 Abril 2013, 22:55 pm
Gracias Firos como siempre  me gusta mucho tus respuestas, despúes de las vacaciones me lo miraré con más detenimiento. Si veo que no entiendo algo ya lo diré  ;D Salu2
94  Informática / Electrónica / Re: Dudas para crear temporizador en ensamblador en: 29 Marzo 2013, 00:20 am
Gracias Firos por responder siempre me gustan tus respuestas y aprendo bastante. A ver si lo he entendido, te refieres que se compruebe el estado de la entrada cada cierto tiempo ¿no?
95  Informática / Electrónica / Re: Dudas para crear temporizador en ensamblador en: 22 Marzo 2013, 01:50 am
Bueno por fin lo he conseguido  me ha costado lo suyo pero lo he conseguido  ;D
aqui esta:

Código
  1. ;***** CONFIGURACIÓN ******************************************************
  2. List p=16F886 ;Tipo de procesador
  3. include "P16F886.INC" ;Definiciones de registros internos
  4. ;Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
  5. ;adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades
  6.  
  7. __config _CONFIG1, _LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF ;Palabra 1 de configuración
  8. __config _CONFIG2, _WRT_OFF&_BOR40V
  9.  
  10. ; _MCLRE_ON: Reset externo ACTIVADO.
  11. ; _CP_OFF: Protección del código DESACTIVADO.
  12. ; _WDT_OFF: Watchdog DESACTIVADO.
  13. ; _IntRC_OSC: Oscilador interno de 4MHz.
  14. ;***** DEFINICIÓN DE VARIABLES
  15. ; Definimos las posiciones de memoria de los datos
  16. CONTADOR equ 0x20
  17. AUX equ 0x21
  18. ;**************************************************************************
  19. ; Inicialización del programa:
  20. ; Origen
  21. Org 0x00
  22. goto Inicio ;Vector de reset
  23. org 0x05
  24. ; Configuración de los puertos como entradas y salidas
  25. Inicio clrf PORTB ; Borrado de los biestables de salida
  26. bsf STATUS,RP0 ; Selecciona banco 3 (RP0=RP1=’1’)
  27. bsf STATUS,RP1
  28. clrf ANSEL ; El puerto A de tipo digital
  29. clrf ANSELH ; El puerto B de tipo digital
  30. bcf STATUS,RP1 ; Selecciona banco 1 (RP1=’0’ RP0=’1’)
  31. clrf TRISB ; RB7:RB0 se configuran como salidas
  32. movlw b'00111111'
  33. movwf TRISA ; RA5:RA0 se configuran como entrada
  34. movlw b'00000010' ;movemos el valor de la opción del preescale  al registro W EN ESTE CASO A 8
  35. movwf OPTION_REG ;pasamos el valor de w al registro
  36. bcf STATUS,RP0 ; Se vuelve al banco 0
  37. movlw b'00000111' ;movemos el valor de la opción del preescale  al registro W
  38. movwf INTCON
  39. ; Fin de la inicialización del programa.
  40.  
  41. ;______________________________ACTIVACIÓN INICIAL DE LA SALIDA_________________________________________________________
  42. ESPERAR BTFSS PORTA,0 ;PRIMERA VEZ QUE SE VA A VER SI ESTA ACTIVADO EL INTERUPTOR
  43. GOTO ESPERAR
  44. MOVLW b'0000001' ;SE ACTIVA LA SALIDALA PRIMERA VEZ QUE SE PONE EL INTERRUPTOR
  45. MOVWF   PORTB
  46. MOVLW 0X01 ;INICIALIZO EL REGISTRO AUX PARA INDICAR QUE SE HA ACTIVADO EL INTERRUPTOR
  47. MOVWF AUX
  48. ;__________________________________________________________________________________________________________
  49. empezar
  50. MOVLW .2 ;INICIALIZAR CONTADOR A 250 PARA SIMULAR PONER EL CONTADOR A 2
  51. MOVWF CONTADOR
  52.  
  53. esperar2
  54. CALL COMP_ENTRADA ;COMPRUEBA EL ESTADO DE LA ENTRADA
  55. BTFSS AUX,0 ;SI EL RESULTADO DE LA LLAMADA HA DADO 0 NO SE SALTA UNA INSTRUCCIÓN POR TANTO TIENE QUE REINICIARSE EL PROGRAMA
  56. GOTO ESPERAR
  57. MOVLW d'252' ;INICIALIZAR TMR0 A 5 PARA QUE CUENTE HASTA 250 YA QUE DESBORDA A 256 para simular x ejemplo poner 252
  58. MOVWF TMR0 ;CARGA EL VALOR DE 5 EN TMR0
  59. CLRF INTCON ;POR SI MIENTRAS SE ESPERABA A QUE SE ACTIVARA EL INTERRUPTOR SE HA DESBORDADO
  60. esperardes BTFSS INTCON,T0IF ;VERIFICAMOS CUANDO LLEGA A 256 MEDIANTE EL BIT 2  DEL REGISTRO INTCON CUANDO LLEGA SE DESBORADA DANDO UN 1
  61. GOTO   esperardes ;SI NO ES 1 HAY QUE ESPERAR
  62. CLRF INTCON ;SE HA ALCANZADO DESBORDAMIENTO HAN PASADO 2000us SE BORRA EL DESBORDAMIENTO
  63. DECFSZ CONTADOR,1 ;COMPROBAR QUE EL CONTADOR HA LLEGADO A 0 CUANDO OCURRE SALTA UNA INSTRUCCION
  64. GOTO esperar2
  65. GOTO activarsal ;EL CONTADOR ESTA A 0 , YA HAN PASADO 0,5 SEGUNDOS
  66. activarsal
  67. MOVLW b'0000001'
  68. XORWF   PORTB,F ;INVIERTE EL VALOR DE LA SALIDA
  69. GOTO empezar
  70.  
  71. ;_______________________SUBRUTINAS________________________________________________
  72.  
  73. COMP_ENTRADA NOP
  74. esperar3 BTFSS PORTA,0
  75. GOTO SALIDA0
  76. RETURN
  77.  
  78. SALIDA0 CLRF PORTB
  79. CLRF AUX ;AL APAGAR EL INTERUPTOR EN MITAD DEL PROCESO ENTRA AQUI  Y SEÑALO CON UN 0 QUE SE HA APAGADO EN INTERRUPTOR ES COMO EN C PONER EL RESULTADO DE UNA FUNCIÓN
  80. GOTO esperar3
  81.  
  82.  
  83. end

Gracias por la ayuda, si veis algo que se puede mejorar o reducir el programa me gustaría saberlo o si veis algún fallo.
Salu2 
96  Informática / Electrónica / Re: Dudas para crear temporizador en ensamblador en: 21 Marzo 2013, 16:41 pm
Muchas garcias Meta por la ayuda creo que estoy avanzando hasta ahora llevo lo siguiente, me falta poner que cuando el contador de usuario llegue a 0 se active la salida:
Código
  1. ;**************************************************************************
  2. ;***** CONFIGURACIÓN ******************************************************
  3. List p=16F886 ;Tipo de procesador
  4. include "P16F886.INC" ;Definiciones de registros internos
  5. ;Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
  6. ;adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades
  7.  
  8. __config _CONFIG1, _LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF ;Palabra 1 de configuración
  9. __config _CONFIG2, _WRT_OFF&_BOR40V
  10.  
  11. ; _MCLRE_ON: Reset externo ACTIVADO.
  12. ; _CP_OFF: Protección del código DESACTIVADO.
  13. ; _WDT_OFF: Watchdog DESACTIVADO.
  14. ; _IntRC_OSC: Oscilador interno de 4MHz.
  15. ;***** DEFINICIÓN DE VARIABLES
  16. ; Definimos las posiciones de memoria de los datos
  17. CONTADOR equ 0x20
  18. ;**************************************************************************
  19. ; Inicialización del programa:
  20. ; Origen
  21. Org 0x00
  22. goto Inicio ;Vector de reset
  23. org 0x05
  24. ; Configuración de los puertos como entradas y salidas
  25. Inicio clrf PORTB ; Borrado de los biestables de salida
  26. bsf STATUS,RP0 ; Selecciona banco 3 (RP0=RP1=’1’)
  27. bsf STATUS,RP1
  28. clrf ANSEL ; El puerto A de tipo digital
  29. clrf ANSELH ; El puerto B de tipo digital
  30. bcf STATUS,RP1 ; Selecciona banco 1 (RP1=’0’ RP0=’1’)
  31. clrf TRISB ; RB7:RB0 se configuran como salidas
  32. movlw b'00111111'
  33. movwf TRISA ; RA5:RA0 se configuran como entrada
  34. movlw b'00000010' ;movemos el valor de la opción del preescale  al registro W EN ESTE CASO A 8
  35. movwf OPTION_REG ;pasamos el valor de w al registro
  36. bcf STATUS,RP0 ; Se vuelve al banco 0
  37. movlw b'00000111' ;movemos el valor de la opción del preescale  al registro W
  38. movwf INTCON
  39. ; Fin de la inicialización del programa.
  40.  
  41. empezar MOVLW .250 ;INICIALIZAR CONTADOR
  42. MOVWF CONTADOR
  43.  
  44. esperar BTFSS PORTA,0 ;comprobamos si en interuptor esta en ON
  45. GOTO esperar
  46. MOVLW d'5' ;INICIALIZAR TMR0 A 5 PARA QUE CUENTE HASTA 250 YA QUE DESBORDA A 256 para simular x ejemplo poner 252
  47. MOVWF TMR0 ;CARGA EL VALOR DE 5 EN TMR0
  48. CLRF INTCON ;POR SI MIENTRAS SE ESPERABA A QUE SE ACTIVARA EL INTERRUPTOR SE HA DESBORDADO
  49. esperardes BTFSS INTCON,T0IF ;VERIFICAMOS CUANDO LLEGA A 256 MEDIANTE EL BIT 2  DEL REGISTRO INTCON
  50. GOTO   esperardes ;SI NO ES UNO HAY QUE ESPERAR
  51. CLRF INTCON ;SE HA ALCANZADO DESBORDAMIENTO HAN PASADO 2000us SE BORRA EL DESBORDAMIENTO
  52. DECFSZ CONTADOR,1 ;COMPROBAR QUE EL CONTADOR HA LLEGADO A 0 CUANDO OCURRE SALTA UNA INSTRUCCION
  53. GOTO esperar
  54. GOTO empezar ;EL CONTADOR ESTA A 0 , YA HAN PASADO 0,5 SEGUNDOS
  55. end

¿Como lo veis de momento?  :)

Gracias por la ayuda.[/size]
97  Informática / Electrónica / Re: Dudas para crear temporizador en ensamblador en: 20 Marzo 2013, 23:30 pm
Gracias Meta por la ayuda, umm lo único que he sabido hacer es configurar los puertos:
Código
  1. ;***** CONFIGURACIÓN ******************************************************
  2. List p=16F886 ;Tipo de procesador
  3. include "P16F886.INC" ;Definiciones de registros internos
  4. ;Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
  5. ;adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades
  6.  
  7. __config _CONFIG1, _LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF ;Palabra 1 de configuración
  8. __config _CONFIG2, _WRT_OFF&_BOR40V
  9.  
  10. ; _MCLRE_ON: Reset externo ACTIVADO.
  11. ; _CP_OFF: Protección del código DESACTIVADO.
  12. ; _WDT_OFF: Watchdog DESACTIVADO.
  13. ; _IntRC_OSC: Oscilador interno de 4MHz.
  14. ;***** DEFINICIÓN DE VARIABLES
  15. ; Definimos las posiciones de memoria de los datos
  16. CONTADOR equ 0x10
  17. ;**************************************************************************
  18. ; Inicialización del programa:
  19. ; Origen
  20. Org 0x00
  21. goto Inicio ;Vector de reset
  22. org 0x05
  23. ; Configuración de los puertos como entradas y salidas
  24. Inicio clrf PORTB ; Borrado de los biestables de salida
  25. bsf STATUS,RP0 ; Selecciona banco 3 (RP0=RP1=’1’)
  26. bsf STATUS,RP1
  27. clrf ANSEL ; El puerto A de tipo digital
  28. clrf ANSELH ; El puerto B de tipo digital
  29. bcf STATUS,RP1 ; Selecciona banco 1 (RP1=’0’ RP0=’1’)
  30. clrf TRISB ; RB7:RB0 se configuran como salidas
  31. movlw b'00111111'
  32. movwf TRISA ; RA5:RA0 se configuran como entrada
  33. movlw b'00000110' ;movemos el valor de la opción del preescale  al registro W
  34. movwf OPTION_REG ;pasamos el valor de w al registro
  35. bcf STATUS,RP0 ; Se vuelve al banco 0
  36. movlw b'00000111' ;movemos el valor de la opción del preescale  al registro W
  37. movwf INTCON ;
ya más no se estoy bastante perdido :S
Gracias[/size]
98  Informática / Electrónica / Dudas para crear temporizador en ensamblador en: 20 Marzo 2013, 10:15 am
Hola quiero crear un temporizador con el PIC P16F886, de 0,5 segundos de pulso osea con una frecuencia de 1Hzy no se como programarlo , tengo la idea pero no se plasmarlo en emsalblador. Os explico:
Voy a usar el oscilador interno del PICde 4MHz lo que es lo mismo con un periodo de 0,25us si una instruccion tarda 4 ciclos de reloj, cada instrucción tarda en ejegutarse 1us.
Tengo que conseguir que oscile a 0,5s--> 500.000us para ello quiero poner el TMR0 inicialmente a 250 y el preescale a 8 con lo que el TMR0 se desborda cada 2000us  (250*8=2000). Si con un contador cuento 250 vecesda 0,5 s (2000us*250=500.000us=0.5s).
Lo que no se hacer o que no entiendo como se le da la orden de que empie a contar  otra cosa que no entiendo es que al ir comparando el valor del contador cuenta como un tiempo de instrucción por tanto ya se retrasaria, no se tengo un cacao muy grande,
se que tengo cuando se supere el desbordamiento del TMR0  cada 2000us tengo que poner el bit TI0IF del registro INTCON  mediante programa a 0.   

Aqui os dejo un diagrama de como creo que funciona:

Gracias
99  Informática / Electrónica / Re: Problema al programar microcontrolador PIC16F84 en: 8 Marzo 2013, 17:53 pm
Muchas gracias por las respuestas  y la explicación tan detallada ;D  ya hice la siguiente practica trataba de usar comparaciones y dependiendo de eso hacer una series de operaciones y que se repitieran  con un  bucle. Si me surgen más dudas ya las iré poniendo.
Gracias :)
100  Informática / Electrónica / Re: Problema al programar microcontrolador PIC16F84 en: 3 Marzo 2013, 21:13 pm
Muchas gracias por las respuestas Estamos empezando a programar en ensamblador en la asignatura de Sistemas basados en microprocesadores de la  carrera de industrial de electrónica. Umm algo intuí al dia siguiente de poner mi duda que podría ser lo que me pusiste que como era 256 bits y me daba 252 era la resta de 256-4. ¿Estás seguro de que si da 1 es negativo? . Para comprobarlo hice una operación en la cual me diera  252 y el registro STATUS me daba:00011011 como el último bit es 1 signigica que la operación ha dado  positivo.

 Con el -4 el registro SATUS me da 00011000 como el primer bit es 0 la operación es negativa.


Respecto a lo de  guardar un fichero en W especificarlo  con w en vez de 0 o 1 ¿Te refieres a dejarlo como una variable y luego cargar en el registro w 1 o 0? porque si no no entiendo por ejemplo en REGA,W como se le da la orden de guardarlo en el registro W o en REGA

Muchas graciasa por la ayuda esta es mi segunda práctica y estoy practicando por mi cuenta, también estoy con la 3º practica que nos han mandado  y es algo liosa si veo que no me sale ya pediré ayuda, ya que veo que sabes programar en ASM. :) Gracias por los consejos
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines