Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

02/04/2010 #1


tablas para displays en pic
hola, quiero controlar un display aprovechando las tablas, he mirado en una pagina y éste es el programa en assembler:
1. ; **** Encabezado ****
2. listp=16F84A
3. #include P16F84A.inc
4. __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
5. ;**** Definicion de variables ****
6. Contador equ 0x0C ; Registro para almacenar conteo
7. Contador1 equ 0x0D ; Registro utilizado en demora.-
8. Contador2 equ 0x0E ; Registro utilizado en demora.-
9. Pulsador equ7; Definimos Pulsador como el bit 7, en este caso sera para PORTB
10.;**** Inicio del Micro ****
11.Reset org 0x00 ; Aqui comienza el micro.-
12.goto Inicio ; Salto a inicio de mi programa.-
13.
14.
15.;**** Tabla de conversion BCD a 7 Segmentos ****
16.; Se coloca al inicio para asegurar ubicacion en Pagina.-
17.org 0x05 ; Origen del codigo de tabla.-
18.BCD7SEG: ; retlw b'gfedcba' para display catodo comun
19.addwfPCL,1; Se incrementa el contador del programa.-
20.retlw b'0111111'; 0
21.retlw b'0000110'; 1
22.retlw b'1011011'; 2
23.retlw b'1001111'; 3
24.retlw b'1100110'; 4
25.retlw b'1101101'; 5
26.retlw b'1111101'; 6
27.retlw b'0000111'; 7
28.retlw b'1111111'; 8
29.retlw b'1101111'; 9
30.clrf Contador ; Si llega 10, se resetea contador
31.retlw b'0111111'; 0
32.
33.;**** Programa principal ****
34.;**** Configuración de puertos ****
35.Inicio bsfSTATUS,RP0; Pasamos de Banco 0 a Banco 1.-
36.movlw b'10000000'; RB7 como entrada y los demas como salida.-
37.movwfTRISB
38.bcfSTATUS,RP0; Paso del Banco 1 al Banco 0
39.movlw b'0111111'; Comienza en cero.-
40.movwfPORTB
41.clrf Contador
42.;**** Testeo de Pulsador ****
43.Testeo
44.btfssPORTB,Pulsador ; Testeamos si esta a 1 logico.-
45.goto Testeo ; No, seguimos testeando.-
46.call Demora_20ms ; Eliminamos Efecto rebote
47.btfssPORTB,Pulsador ; Testeamos nuevamente.-
48.goto Testeo ; Falsa Alarma, seguimos testeando.-
49.incf Contador,1; Se ha pulsado, incrementamos contador.-
50.movfw Contador ; pasamos contador a W
51.call BCD7SEG ; Llamamos tabla.-
52.movwfPORTB; Cargamos valor recibido por Tabla en PORTB
53.btfscPORTB,Pulsador ; Esperamos a que se suelte el pulsador -**-
54.goto $-1; No, PCL - 1, --> btfss PORTA,Pulsador.-
55.call Demora_20ms ; Eliminamos efecto rebote.-
56.btfscPORTB,Pulsador ; Testeamos nuevamente.-
57.goto $-4; No, Falsa alarma, volvemos a testear a que se suelte (**).-
58.goto Testeo ; Si, Testeamos nuevamente.-
59.
60.;**** Demora ****
61.Demora_20ms
62.movlw 0xFF ;
63.movwf Contador1 ; Iniciamos contador1.-
64.Repeticion1
65.movlw 0x19 ;
66.movwf Contador2 ; Iniciamos contador2
67.Repeticion2
68.decfsz Contador2,1; Decrementa Contador2 y si es 0 sale.-
69.goto Repeticion2 ; Si no es 0 repetimos ciclo.-
70.decfsz Contador1,1; Decrementa Contador1.-
71.goto Repeticion1 ; Si no es cero repetimos ciclo.-
72. return ; Regresa de la subrutina.-
73.
end

y mi duda esta en que funcion tiene el registro ''contador'' en este programa...
02/04/2010 #2

Avatar de J2C

Respuesta: tablas para displays en pic
Cristian Ayuso

En las lineas "6, 7 y 8" estan declarados los registros "Contador, Contador1 y Contador2". Es eso lo que buscabas ????

Saludos. JuanKa.-
02/04/2010 #3

Avatar de Elvic

Respuesta: tablas para displays en pic
cristian ayuso dijo: Ver Mensaje
hola, quiero controlar un display aprovechando las tablas, he mirado en una pagina y éste es el programa en assembler:
1. ; **** Encabezado ****
2. listp=16F84A
3. #include P16F84A.inc
4. __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
5. ;**** Definicion de variables ****
6. Contador equ 0x0C ; Registro para almacenar conteo
7. Contador1 equ 0x0D ; Registro utilizado en demora.-
8. Contador2 equ 0x0E ; Registro utilizado en demora.-
9. Pulsador equ7; Definimos Pulsador como el bit 7, en este caso sera para PORTB
10.;**** Inicio del Micro ****
11.Reset org 0x00 ; Aqui comienza el micro.-
12.goto Inicio ; Salto a inicio de mi programa.-
13.
14.
15.;**** Tabla de conversion BCD a 7 Segmentos ****
16.; Se coloca al inicio para asegurar ubicacion en Pagina.-
17.org 0x05 ; Origen del codigo de tabla.-
18.BCD7SEG: ; retlw b'gfedcba' para display catodo comun
19.addwfPCL,1; Se incrementa el contador del programa.-
20.retlw b'0111111'; 0
21.retlw b'0000110'; 1
22.retlw b'1011011'; 2
23.retlw b'1001111'; 3
24.retlw b'1100110'; 4
25.retlw b'1101101'; 5
26.retlw b'1111101'; 6
27.retlw b'0000111'; 7
28.retlw b'1111111'; 8
29.retlw b'1101111'; 9
30.clrf Contador ; Si llega 10, se resetea contador
31.retlw b'0111111'; 0
32.
33.;**** Programa principal ****
34.;**** Configuración de puertos ****
35.Inicio bsfSTATUS,RP0; Pasamos de Banco 0 a Banco 1.-
36.movlw b'10000000'; RB7 como entrada y los demas como salida.-
37.movwfTRISB
38.bcfSTATUS,RP0; Paso del Banco 1 al Banco 0
39.movlw b'0111111'; Comienza en cero.-
40.movwfPORTB
41.clrf Contador
42.;**** Testeo de Pulsador ****
43.Testeo
44.btfssPORTB,Pulsador ; Testeamos si esta a 1 logico.-
45.goto Testeo ; No, seguimos testeando.-
46.call Demora_20ms ; Eliminamos Efecto rebote
47.btfssPORTB,Pulsador ; Testeamos nuevamente.-
48.goto Testeo ; Falsa Alarma, seguimos testeando.-
49.incf Contador,1; Se ha pulsado, incrementamos contador.-
50.movfw Contador ; pasamos contador a W
51.call BCD7SEG ; Llamamos tabla.-
52.movwfPORTB; Cargamos valor recibido por Tabla en PORTB
53.btfscPORTB,Pulsador ; Esperamos a que se suelte el pulsador -**-
54.goto $-1; No, PCL - 1, --> btfss PORTA,Pulsador.-
55.call Demora_20ms ; Eliminamos efecto rebote.-
56.btfscPORTB,Pulsador ; Testeamos nuevamente.-
57.goto $-4; No, Falsa alarma, volvemos a testear a que se suelte (**).-
58.goto Testeo ; Si, Testeamos nuevamente.-
59.
60.;**** Demora ****
61.Demora_20ms
62.movlw 0xFF ;
63.movwf Contador1 ; Iniciamos contador1.-
64.Repeticion1
65.movlw 0x19 ;
66.movwf Contador2 ; Iniciamos contador2
67.Repeticion2
68.decfsz Contador2,1; Decrementa Contador2 y si es 0 sale.-
69.goto Repeticion2 ; Si no es 0 repetimos ciclo.-
70.decfsz Contador1,1; Decrementa Contador1.-
71.goto Repeticion1 ; Si no es cero repetimos ciclo.-
72. return ; Regresa de la subrutina.-
73.
end

y mi duda esta en que funcion tiene el registro ''contador'' en este programa...
no se si este en lo correcto, pero la variable contador solo la utiliza para comparar la posición que debe moverse PCL y tomara el dato de la tabla para regresar el valor que tiene retlw seguan el valor que se encuentre en el contador.
03/04/2010 #4


Respuesta: tablas para displays en pic
Elvic, en este programa, si presuponemos que la dirección 0x0C esta inicialmente a 0 ( digo presuponemos porque lo mas correcto seria colocarla a 0...) cada vez que pulses el pulsador en el display ira aumentando de 1 en 1 el numero, y después del 9, reseteara la dirección 0x0C y aparecerá un 0, y así hasta el infinito xD es decir, la función del registro contador en este programa no es otra que la de 'recordar' que numero hay en esa dirección, para sumarlo a PLC cuando toca y dirigir al PORTB el numero correcto
03/04/2010 #5

Avatar de Elvic

Respuesta: tablas para displays en pic
Jaso dijo: Ver Mensaje
Elvic, en este programa, si presuponemos que la dirección 0x0C esta inicialmente a 0 ( digo presuponemos porque lo mas correcto seria colocarla a 0...) cada vez que pulses el pulsador en el display ira aumentando de 1 en 1 el numero, y después del 9, reseteara la dirección 0x0C y aparecerá un 0, y así hasta el infinito xD es decir, la función del registro contador en este programa no es otra que la de 'recordar' que numero hay en esa dirección, para sumarlo a PLC cuando toca y dirigir al PORTB el numero correcto
haaa ya....

algo así quise decir en el anterior mensaje .... claro me faltaron detalles

pero gracias por tu explicación ... esperemos le sirva de ayuda al autor del primer mensaje...

suerte
03/04/2010 #6


Respuesta: tablas para displays en pic
aissss sorry Elvi, nose porque pensaba que habías escrito tu el mensaje xDD Iba dirigida cristian ayuso la respuesta jejejejej Ibas bien encaminado Elvi, pero como como estabas seguro, ratificaba tu respuesta con la mia
17/08/2010 #7


Respuesta: tablas para displays en pic
osea, entonces puedo prescindir de ese registro, o no-?
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

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