ejercisios variados de configuraciones de instrucciones
TRANSCRIPT
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 1/66
Un Display es una colección de Leds ubicados de forma estratégica. Si se los agrupa uniendo sus cátodos será de CÁTODO COU!"
bien agrupando sus ánodos" un Display de #!ODO COU!.
$or otro lado estos Leds pueden ser fabricados en forma de $untos o Segmentos" tal es as% &ue se encuentran Display de '
segmentos" como los de la imagen(
)l programa &ue reali*aremos leerá la cantidad de +eces &ue se acti+a un pulsador y mostraremos el resultado. Conectaremos el
Display en forma directa" es decir conectando el puerto , del micro a los pines del Display" y luego encender cada uno de los
segmentos del Display para +isuali*ar el +alor correspondiente. $ara ello crearemos una tabla &ue contenga los distintos códigos pa
el numero &ue necesitemos +isuali*ar.
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 2/66
)s ob+io &ue con un solo display solamente podremos contar de - a .
Diagrama de Flujo:
#ntes de continuar tratare de e/plicar algunos registros importantes(
El PC. Direccionamiento del programa( )specifica la dirección de la instrucción &ue se e0ecutará. Consta de 12 bits" con lo &ue es
posible direccionar 3asta 45 palabras" pero en el 16748# solo se implementa 19.
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 3/66
La parte alta del contador de programa (PCH) no se puede acceder directamente" ella debe cargarse desde los : bits más ba0os de
registro llamado PCLATCH ;dirección -/-4<.
)n la creación de tablas" la posición a leer de la misma se reali*a con el control del registro $CL. )ste registro es de 4 bits" por lo &u
direcciona solo =:6 posiciones" por ello se debe tener en cuenta la posición de la tabla en la memoria de programa o también
controlar los bits mas significati+os de $C ;Si nuestra tabla tiene mas de =:: posiciones" si o si debemos mane0ar estos bits
>$CL#TC?@<.
$ara de+ol+er el +alor direccionado se utili*a retlA" esta instrucción de+uel+e un +alor en el acumulador al retornar de una subrutinaLa creación de la tabla se 3ará de la siguiente forma(
Código
GeSHi (asm):
1. Tabla
2. addwf PCL,f
3. retlw Valor0
4. retlw Valor1
5. retlw Valor2
6. retlw Valor3
7. ; ....
Donde Balor-" Balor1" Balor=... etc. son los +alores &ue &ueremos almacenar en la tabla.
La estrategia a seguir para consultar algn +alor de la tabla es cargar en el acumulador ;< la dirección de la tabla donde seencuentra el +alor &ue &uieres leer y después llamar a la subrutina T#,L# ;con un C#LL<.
Advertencia: la carga de no puede superar el nmero de +alores de la tabla" sino se estará e0ecutando una instrucción errónea
pro+ocando un mal funcionamiento del programa.E
)/plicado lo necesario pasamos al código del e0emplo(
Código
GeSHi (asm):
1. ; **** Encabezado ****
2. list p16!"4#
3. $i%&l'e 16!"4#.inc
4. **+-!G *+*!! / *T*!! / *T*- / *T*S+
5. ;**** Definicion de variables ****
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 4/66
6. +o%taor e' 00+ ; Registro para almacenar conteo
7. +o%taor1 e' 00 ; Registro utilizado en demora.-
". +o%taor2 e' 00 ; Registro utilizado en demora.-
. 'lsaor e' 7 ; Definimos Pulsador como el bit 7,
en este caso sera para POR!
10. ;**** "nicio del #icro ****
11. eset or8 000 ; $%ui comienza el micro.-
12. 8oto %i&io ; &alto a inicio de mi programa.-
13.
14.
15. ;**** abla de conversion !'D a 7 &egmentos ****
16. ; &e coloca al inicio para asegurar ubicacion en Pagina.-
17. or8 005 ; Origen del codigo de tabla.-
1". 9+7SG: ; retl( b)gfedcba) para displa catodo
comun
1. addwf PCL,1 ; &e incrementa el contador del programa.-
20. retlw b0111111 ; +
21. retlw b0000110 ;
22. retlw b1011011 ;
23. retlw b1001111 ;
24. retlw b1100110 ; /
25. retlw b1101101 ; 0
26. retlw b1111101 ; 1
27. retlw b0000111 ; 7
2". retlw b1111111 ; 2
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 5/66
2. retlw b1101111 ; 3
30. clrf +o%taor ; &i llega +, se resetea contador
31. retlw b0111111 ; +
32.
33. ;**** Programa principal ****
34. ;**** 'onfiguraci4n de puertos ****
35. %i&io bsf STATUS,0 ; Pasamos de !anco + a !anco .-
36. movlw b10000000 ; R!7 como entrada los demas como
salida.-
37. movwf TRISB
3". bcf STATUS,0 ; Paso del !anco al !anco +
3. movlw b0111111 ; 'omienza en cero.-
40. movwf PORTB
41. clrf +o%taor
42. ;**** esteo de Pulsador ****
43. Testeo
44. btfss PORTB,'lsaor ; esteamos si esta a logico.-
45. 8oto Testeo ; 5o, seguimos testeando.-
46. call emora*20ms ; Eliminamos Efecto rebote
47. btfss PORTB,'lsaor ; esteamos nuevamente.-
4". 8oto Testeo ; 6alsa $larma, seguimos testeando.-
4. incf +o%taor,1 ; &e a pulsado, incrementamos
contador.-
50. movfw +o%taor ; pasamos contador a 8
51. call 9+7SG ; 9lamamos tabla.-
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 6/66
52. movwf PORTB ; 'argamos valor recibido por abla
en POR!
53. btfsc PORTB,'lsaor ; Esperamos a %ue se suelte el
pulsador -**-
54. 8oto ;<1 ; 5o, P'9 - , --: btfss
POR$,Pulsador.-
55. call emora*20ms ; Eliminamos efecto rebote.-
56. btfsc PORTB,'lsaor ; esteamos nuevamente.-
57. 8oto ;<4 ; 5o, 6alsa alarma, volvemos a
testear a %ue se suelte **<.-
5". 8oto Testeo ; &i, esteamos nuevamente.-
5.
60. ;**** Demora ****
61. emora*20ms
62. movlw 0!! ;
63. movwf +o%taor1 ; "niciamos contador.-
64. epeti&io%1
65. movlw 01 ;
66. movwf +o%taor2 ; "niciamos contador
67. epeti&io%2
6". decfsz +o%taor2,1 ; Decrementa 'ontador si es +
sale.-
6. 8oto epeti&io%2 ; &i no es + repetimos ciclo.-
70. decfsz +o%taor1,1 ; Decrementa 'ontador.-
71. 8oto epeti&io%1 ; &i no es cero repetimos ciclo.-
72. ret'r% ; Regresa de la subrutina.-
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 7/66
73.
74. e%
Una manera más cómoda de escribir la tabla de instrucciones RETLW puede lograrse usando la directi+a DT ;Define Table< del
ensamblador" la cual nos permite definir una tabla de datos &ue será sustituida por una lista de instrucciones F)TLG as%" la tabla
anterior puede &uedar como sigue(
Código
GeSHi (asm):
1. 9+7SG: ; retl( b)gfedcba) para displa catodo
comun
2. addwf PCL,1 ; &e incrementa el contador del programa.-
3. T 03!, 006, 059, 04!, 066, 06, 07, 007, 0!!, 06!
4. clrf +o%taor
5. retlw 03!
Rutina de Lectura de una Ta!la en "emoria de Programa# in im$ortar donde et% u!icada
#&u% 3ay e0emplos de como traba0ar para colocar una tabla en cual&uier lugar de la memoria de programa.
Control anti re!ote:)n el momento de presionar un botón pulsador o cual&uier conmutador electromecánico es ine+itable &ue se produ*ca un pe&ueHo
arco eléctrico durante el bre+e instante en &ue las placas del contacto se apro/iman o se ale0an de sus puntos de cone/ión.
La duración de este depende de la calidad de los sAitc3es y la +elocidad de accionamiento" pero no dura más de =- milisegundos.
Se ad0unta simulación.E
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 8/66
I Última modificación: 20 de Junio de 2009, 15:11:50 por Suky J )n l%ne
icrosEDesigns
&u'
oderadoresDs$KC22
Desconecta
doSe/o(
#rgentina
ensa0es(6'2
Con t...
Re: "i $rimero $rograma. "anual PC*+F,-A
I Re$ueta , : -: de 7ebrero de =--" =-(88(-' J
)n la programación de los microcontroladores $KC la mayor%a de las instrucciones emplean direccionamientodirecto" pero también es posible &ue operen en un modo de direccionamiento directo. $ara el direccionamiento
indirecto se emplean dos registros especiales( el F&R el /DF ;este ultimo no es un registro f%sico<. )l
registro F&R se emplea para MseHalar o apuntarN a una dirección de la memoria F# cuyo contenido puede ser
le%do o escrito de forma indirecta empleando cual&uier instrucción &ue use como operando al registro /DF.
)sta forma de direccionamiento es particularmente til cuando se mane0an tablas o arreglos de datos.E
Directo v ndirecto.
CódigoGeSHi (asm):
1. ; D"RE'O=
2. ; Definimos registro en la memoria de datos.-
3. =>e8istro e' 010 ; >bicado en +?+.-
4.
5. ; 'argamos dato en el registro.-
6. movlw 0"# ;
7. movwf =>e8istro ; #Registro @ +?2a.-
". ; 9eemos dato del registro.-
. movfw =>e8istro ; #ovemos el valor %ue tenga
#Registro a 8.-
10. movwf PORTB ; Por eAemplo, lo cargamos en
POR!.-
11.
12. ; "5D"RE'O=
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 9/66
13. ; 'argamos dato en el registro.-
14. movlw 010 ;
15. movwf FSR ; Direccionamos Registro de datos
ubicado en +?+.-
16. movlw 0"# ;
17. movwf -! ; 'argamos registro direccionado con
el valor +?2$.-
1".
1. ; 9eemos dato en el registro.-
20. movlw 010 ;
21. movwf FSR ; Direccionamos Registro de datos
ubicado en +?+.-
22. movfw -! ; #ovemos el valor %ue tenga el
registro seleccionado a 8.-
23. movwf PORTB ; Por eAemplo, lo cargamos en POR!.-
Utili*aremos el direccionamiento Kndirecto para crear la tabla de control del Display. #&u% no utili*aremos el
pulsador" solo se 3ará el contador automático de - a .E #l iniciar el microcontrolador cargaremos el código de '
Segmentos para controlar el Display en la memoria de Datos con direccionamiento indirecto.
Luego" al reali*ar el conteo leeremos el código correspondiente almacenado y lo en+iaremos al $OFT,.E
#&u% utili*amos el registro &TAT0& nue+amente" pero para control de las operaciones aritméticas. !osotros
guardaremos el código de ' Segmentos del - al " en los registros -/1- a -/1. Si nuestro contador nos
direcciona el registro ubicado en -/1#" &ue seria el M1-N" lo reseteamos y direccionamos el M-N" ósea registro
-/1-. )sto lo 3acemos reali*ando la resta del registro seleccionado y -/1#" 7SF -/1#" y si el resultado es cero
reseteamos.
El !it 1 (1ero) del regitro &TAT0&" este indica si una operación lógica o aritmética reali*ada da como
resultado cero. También tenemos el bit C (Carr) ;-<" &ue en instrucciones aritméticas se acti+a cuando se
presenta un acarreo desde el bit mas significati+o del resultado" el bit DC (Digit Carr)" &ue en operaciones
aritméticas se acti+a si ocurre acarreo entre el bit 2 y bit 8.E
Código completo(
Código
GeSHi (asm):
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 10/66
1. ; **** Encabezado ****
2. list p16!"4#
3. $i%&l'e 16!"4#.inc
4. **+-!G *+*!! / *T*!! / *T*- / *T*S+
5. ;**** Definicion de variables ****
6. +o%taor e' 00+ ; &eleccionamos posici4n
en la memoria R$# BPR< para guardar
7. ; registro utilizado para
demora.-
". +o%taor1 e' 00 ; Registro utilizado en
demora.-
. +o%taor2 e' 00
10. 'lsaor e' 7 ; Definimos Pulsador como
el bit +, en este caso serC para POR$
11.
12.
13. eset
14. or8 000 ; $%u comienza el micro.-
15. 8oto %i&io ; &alto a inicio de mi
programa.-
16. ;**** Programa principal ****
17. ;**** 'onfiguracion de puertos ****
1". %i&io
1. bsf STATUS,0 ; Pasamos de !anco + a !anco .
20. clrf TRISB ; POR! como salida.-
21. bcf STATUS,0 ; Paso del !anco al !anco +
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 11/66
22. call +o%fi8*Tabla ; 'argamos registros con 'odigo
de 7 segmentos.-
23. movfw -! ; 9eemos codigo de 7 &egmentos
para el 'ERO.-
24. movwf PORTB ; #ostramos el 'ERO.-
25. ;**** esteo de Pulsador ****
26. 9'&le
27. call emora*10ms ; Demora para visualizar Displa
2". incf FSR ,1 ; "ncrementamos Puntero.-
2. movlw 01# ; 'onsulamos si se pide
codigo para mostrar +,
30. subwf FSR ,0 ; si es asi reseteamos
6&R, apunta a +?+--: +.-
31. btfss STATUS,? ; &i F@ --: +?$ - 6&R @
+.-
32. 8oto ='estro*ispla> ; 5o, muestro displa.-
33. movlw 010 ; &i reseteo puntero.-
34. movwf FSR ;
35. ='estro*ispla>
36. movfw -! ; 9eo Registro %ue apunta
6&R.-
37. movwf PORTB ; 9o cargo en POR!.-
3". 8oto 9'&le ; 'ontinuo conteo.-
3.
40.
41. ;**** Demora ****
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 12/66
42. emora*10ms
43. movlw 0!! ;
44. movwf +o%taor1 ; "niciamos contador.-
45. epeti&io%1
46. movlw 0!! ;
47. movwf +o%taor2 ; "niciamos contador
4". epeti&io%2
4. decfsz +o%taor2,1 ; Decrementa 'ontador
si es + sale.-
50. 8oto epeti&io%2 ; &i no es + repetimosciclo.-
51. decfsz +o%taor1,1 ; Decrementa 'ontador.-
52. 8oto epeti&io%1 ; &i no es cero repetimos
ciclo.-
53. ret'r% ; Regresa de la
subrutina.-
54. ;**** 'argamos tabla en memoria ****
55. +o%fi8*Tabla
56. movlw 010 ;
57. movwf FSR ; Direccionamos el registro +?
de la memoria R$# BPR<.-
5". movlw 03! ; 'argamos el codigo para mostrar el
'ERO.-
5. movwf -! ; 9o guardamos donde apunta 6&R --:
+?+.-
60. ;....................
61. incf FSR ,1 ; "ncrementamos 6&R, aora apunta a
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 13/66
+?.-
62. movlw 006 ; 'argamos codigo para >5O.-
63. movwf -! ; 9o guardamos donde apunta 6&R.-
64. ;....................
65. incf FSR ,1 ; "ncrementamos 6&R, aora apunta a
+?.-
66. movlw 059 ; 'argamos codigo para DO&.-
67. movwf -! ; 9o guardamos donde apunta 6&R.-
6". ;....................
6. incf FSR ,1 ; "ncrementamos 6&R, aora apunta a+?.-
70. movlw 04! ; 'argamos codigo para RE&.-
71. movwf -! ; 9o guardamos donde apunta 6&R.-
72. ;....................
73. incf FSR ,1 ; "ncrementamos 6&R, aora apunta a
+?/.-
74. movlw 066 ; 'argamos codigo para '>$RO.-
75. movwf -! ; 9o guardamos donde apunta 6&R.-
76. ;....................
77. incf FSR ,1 ; "ncrementamos 6&R, aora apunta a
+?0.-
7". movlw 06 ; 'argamos codigo para '"5'O.-
7. movwf -! ; 9o guardamos donde apunta 6&R.-
"0. ;....................
"1. incf FSR ,1 ; "ncrementamos 6&R, aora apunta a
+?1.-
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 14/66
"2. movlw 07 ; 'argamos codigo para &E"&.-
"3. movwf -! ; 9o guardamos donde apunta 6&R.-
"4. ;....................
"5. incf FSR ,1 ; "ncrementamos 6&R, aora apunta a
+?7.-
"6. movlw 007 ; 'argamos codigo para &"EE.-
"7. movwf -! ; 9o guardamos donde apunta 6&R.-
"". ;....................
". incf FSR ,1 ; "ncrementamos 6&R, aora apunta a
+?2.-
0. movlw 0!! ; 'argamos codigo para O'GO.-
1. movwf -! ; 9o guardamos donde apunta 6&R.-
2. ;....................
3. incf FSR ,1 ; "ncrementamos 6&R, aora apunta a
+?3.-
4. movlw 06! ; 'argamos codigo para 5>EHE.-
5. movwf -! ; 9o guardamos donde apunta 6&R.-
6. ;....................
7. movlw 010 ;
". movwf FSR ; Direccionamos Registro del
'ERO.-
. ret'r% ; 'argado los valores,
retornamos.-
100. ;.................................................
................
101. %
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 15/66
)n l%ne
icrosEDesigns
&u'
oderadoresDs$KC22
Desconectad
oSe/o(
#rgentina
ensa0es( 6'2
Con t...
Re: "i $rimero $rograma. "anual PC*+F,-A
I Re$ueta 2 : -: de 7ebrero de =--" =-(8:(2= J
$ara el control de +arios display la idea es multiple/ar la seHal en+iada por el microcontrolador" con él
administraremos el encendido de cada display y sus segmentos ;lo cual se 3ace por programa<.
$ara e0emplificar 3aremos un contador automático de - a (
)l 3ardAare necesario es el siguiente(
Diagrama de Flujo:
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 16/66
Se obser+a &ue el $uerto , se utili*a para en+iar los datos a mostrar en cada display" mientras &ue por el
$uerto # seleccionas el display &ue mostrará ese dato. Supongamos &ue &uiero mostrar P=21P" pues muy fácipongo el puerto , en ----11- ;código para el 1<" y acti+o a3ora el 2Q transistor por un periodo de tiempo
corto" desacti+amos este transistor" cargamos el puerto , con 1--1111 y acti+amos el =Q transistor por un
tiempito" lo mismo 3acemos para mostrar M1N. Fepetimos esta misma secuencia mientras se &uiera mostrar
este +alor. La secuencia es tan rápida &ue el obser+ador no nota el momento en &ue cambias de display.
Control de conteo:
$ara reali*ar el conteo incrementamos continuamente Unidad" cuando está llega a 1-" las reseteamos a -" e
incrementamos en 1 Decena. La misma operación se reali*a con Decena" al llegar a 1- se lle+a a - y se
incrementa Centena.E
Código
GeSHi (asm):
1. ; **** Encabezado ****
2. list p16!"4#
3. $i%&l'e 16!"4#.inc
4. **+-!G *+*!! / *T*!! / *T*- / *T*S+
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 17/66
5. ;**** Definicion de variables ****
6. @%ia e' 00+ ; Buardamos conteo
unidad
7. e&e%a e' 00 ;
". +e%te%a e' 00 ;
. +o%taor1 e' 00! ; Registro utilizado en
demora.-
10. +o%taor2 e' 010 ; Registro utilizado en
demora.-
11. +o%taor e' 011 ; 'ontrol de Refresco de
Displa.-
12.
13. ='estro@ e' 2 ; Para control
del I Displa
14. ='estro e' 1 ; Para control
del I Displa
15. ='estro+ e' 0 ; Para control
del I Displa
16.
17. ;**** "nicio del #icro ****
1". eset
1. or8 000 ; $%u comienza el micro.-
20. 8oto %i&io ; &alto a inicio de mi programa.-
21.
22.
23. ;**** abla de conversion !'D a 7 &egmentos ****
24. ; &e coloca al inicio para asegurar ubicacion en
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 18/66
Pagina.-
25. or8 005 ; Origen del c4digo de tabla.-
26. 9+7SG ; retl( b)gfedcba) para
displa catodo comun
27. addwf PCL,1 ; &e incrementa el contador
del programa.-
2". T 03!, 006, 059, 04!, 066, 06, 07,
007, 0!!, 06!
2.
30. ;**** Programa principal ****
31. ;**** 'onfiguracion de puertos ****
32. %i&io
33. bsf STATUS,0 ; Pasamos de !anco + a !anco
.-
34. clrf TRISA ; POR$ como salida
35. clrf TRISB ; POR! como salida.-
36. bcf STATUS,0 ; Paso del !anco al !anco +
37. clrf PORTA ; Desactivo todos los Displas
3". clrf @%ia ; 'omienza en cero --: + + +.-
3. clrf e&e%a
40. clrf +e%te%a
41. 8oto #&t'aliAo*ispla> ; Esta rutina multiple?a
los displas.-
42. ;**** esteo de Pulsador ****
43. 9'&le
44. incf @%ia,1 ; "ncremeto >nidad.
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 19/66
45. movlw 10 ; &i es + reseteo e
incremento Decena
46. subwf @%ia,0 ;
47. btfss STATUS,? ;
4". 8oto #&t'aliAo*ispla> ; no es +
4. clrf @%ia ; &i, reseteo.-
50. incf e&e%a,1 ; "ncremento Decena.-
51. movlw 10 ; &i Decena @ +, reseteo e
incremento 'entena
52. subwf e&e%a,0 ;
53. btfss STATUS,? ;
54. 8oto #&t'aliAo*ispla> ; 5o es +.-
55. clrf e&e%a ; &i, reseteo.-
56. incf +e%te%a,1 ; "ncremento 'entena.-
57. movlw 10 ; &i es + Reseteo.-
5". subwf +e%te%a,0
5. btfss STATUS,?
60. 8oto #&t'aliAo*ispla> ; 5o es +.-
61. clrf +e%te%a ; &i, reseto
62. ;**** &e multiple?an los Displa ****
63. #&t'aliAo*ispla>
64. movlw 20 ; 'argo 'ontador @ +
65. movwf +o%taor ; Para repeticiones de
visualizacion del mismo valor
66. ; durante 0+ ms.-
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 20/66
67. efres&o
6". movfw @%ia ; Obtengo codigo de 7
&egmentos para >nidad.-
6. call 9+7SG ;
70. bcf PORTA ,='estro+ ; $pago Displa de
'entena, &e entiende al mirar rutina.-
71. movwf PORTB ; 'argo unidad en
POR!.-
72. bsf PORTA ,='estro@ ; Enciendo Displa de
>nidad.-
73. call emora*5ms
74. movfw e&e%a ; Obtengo codigo 7
&egmentos para Decena.-
75. call 9+7SG
76. bcf PORTA ,='estro@ ; $pago Displa de
>nidad.-
77. movwf PORTB ; 'argo POR! con
Decena.-
7". bsf PORTA ,='estro ; Enciendo Displa de
Decena.-
7. call emora*5ms
"0. movfw +e%te%a ; Obtengo codigo de 7
&egmentos para 'entena.-
"1. call 9+7SG
"2. bcf PORTA ,='estro ; $pago Displa de
Decena.-
"3. movwf PORTB ; 'argo POR! con
'entena.-
"4. bsf PORTA ,='estro+ ; Enciendo Displa
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 21/66
'entena.-
"5. call emora*5ms
"6. decfsz +o%taor,1 ; Pregunto si a se a
repetido + veces el cicloJ
"7. 8oto efres&o ; 5o, repito.-
"". 8oto 9'&le ; &i, actualizo cuenta.
". ;**** Demora ****
0. emora*5ms
1. movlw 0!! ;
2. movwf +o%taor1 ; "niciamos contador.-
3. epeti&io%1
4. movlw 005 ;
5. movwf +o%taor2 ; "niciamos contador
6. epeti&io%2
7. decfsz +o%taor2,1 ; Decrementa 'ontador si es + sale.-
". 8oto epeti&io%2 ; &i no es + repetimos
ciclo.-
. decfsz +o%taor1,1 ; Decrementa 'ontador.
100. 8oto epeti&io%1 ; &i no es cero
repetimos ciclo.-
101. ret'r% ; Regresa de la
subrutina.-
102.
103. e%
)n este e0emplo se mantiene la +isuali*ación del mismo +alor durante apro/. 2-- ms" se puede determinar ya
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 22/66
&ue utili*amos 2 demoras de : ms despreciando los ciclos utili*ados en los comandos" &ue son apro/. 2- ;2-
us<. )ntonces por ciclo tenemos 1: ms" y por =- repeticiones" 2-- ms.E
#l final de este 3ilo se 3a agregado un e0emplo de control de 2 display con el registro de despla*amiento
'8LS168.
Ejem$lo
I Última modificación: 20 de Junio de 2009, 15:18:26 por Suky J )n l%ne
icrosEDesigns
&u'
oderadoresDs$KC22
Desconectado
Se/o(
#rgentinaensa0es( 6'2
Con t...
Re: "i $rimero $rograma. "anual PC*+F,-A
I Re$ueta *3 : -: de 7ebrero de =--" =-(86(81 J
Decodi4icador 5CD.
La otra posibilidad es utili*ar un decodificador ,CD como el '8LS8' o el '8LS=8" o el CD8:11. )stos
integrados disponen de 8 entradas correspondientes a un código binario ,CD" y ' salidas &ue se conectan a u
Display.
Lo importante de este integrado" es &ue posee 8 pines de entrada y ' de salida" mas unos cuantos de
configuración. )l 3ec3o es &ue" los 8 pines de entrada ;#" ," C y D< serán los &ue reciban el código en binario
en+iado por el micro. Una +e* recibido el dato" el integrado se 3ará cargo de decodificarlo y en+iarlo por los
pines de salida ;a" b" c" d" e" f y g< para mostrarlo en el display. Lo &ue nos falta saber" es &ue dato deberé
en+iar al decodificador.
DCBA Valor que muestra el Display
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 23/66
I Última modificación: 20 de Junio de 2009, 16:50:06 por Suky J )n l%ne
icrosEDesigns
&u'
oderadoresDs$KC22
Desconectad
oSe/o(
#rgentina
ensa0es( 6'2
Con t...
Re: "i $rimero $rograma. "anual PC*+F,-A
I Re$ueta ** : -: de 7ebrero de =--" =-(8'(2' J
Una de las caracter%sticas más importante de los microcontroladores y &ue mencionamos al inicio del
tutorial" es &ue tienen la posibilidad de mane0ar interrupciones. Se trata de un acontecimiento &ue 3ace &ue e
micro de0e de lado lo &ue se encuentra reali*ando" atienda ese suceso y luego regrese y contine con lo suyo
?ay dos tipos de interrupciones posibles" una es mediante una acción e/terna ;es decir por la acti+ación de
uno de sus pines<" la otra es interna ;por e0emplo cuando ocurre el desbordamiento de uno de sus registros<
)n el 16748# 3ay 8 fuentes de interrupción(
• $or el pin F,-RK!T" &ue regresa al $KC del modo SL))$ ;interrupción e/terna<.
• $or los pines F,8 a F,'" configurados como entrada y en caso de &ue alguno de ellos cambie de
estado ;interrupción e/terna<.
• $or desbordamiento del registro TF-" cuando este registro pasa de =:: a - en decimal ;interrupció
interna<.
• #l completar la escritura de la ))$FO de datos ;interrupción interna<.
Cada fuente de interrupción esta controlada por = bits. Un bit local de interrupciones ;Terminado en )< de
permiso o pro3ibición de e0ecución. Si esta en - blo&ueará la solicitud de interrupción" y si esta en 1 permitirá
la e0ecución. Un bit &ue acta como seHali*ador ;Terminado en 7< el cual es acti+ado ;puesto a 1< si se 3a
producido la interrupción. #demás e/iste 1 bit de control global" el bit K) ;K!TCO! '< el cual si esta
desacti+ado blo&uea todas las solicitudes de interrupción.
Lo anterior descrito puede entenderse obser+ando el diagrama lógico de la siguiente figura(
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 24/66
)l bit 6E se borra automáticamente cuando se reconoce una interrupción para e+itar &ue se produ*ca otra
mientras se está atendiendo a la primera y al retornar de la interrupción con la instrucción RETFE" el
bit 6E se +uel+e a acti+ar poniéndose a 1. )n cambio los bits seHali*adores o banderas de interrupción deben
ser puestos a cero por el tratamiento de la interrupción reali*ada por el usuario ;$rogramador<
Cuando una interrupción está 3abilitada ;su bit local de 3abilitación está acti+ado" el bit K) está acti+ado< y
ocurre el e+ento &ue la acti+a" el +alor de PC se guarda en la PLA y en éste se carga el 373- ;nico +ector
de interrupción<. )s a partir de esta dirección &ue se debe colocar el tratamiento de la interrupción" detectand
por medio de los bits banderas cual de los e+entos 3a ocurrido y actuar segn sea el caso.
/ota: )l nico registro &ue se sal+a en la PLA e PC" para preser+ar algn otro registro debe ser el propioprograma de atención a la interrupción el &ue se encargue de sal+ar su estado al inicio de la rutina y de
de+ol+erlos al final del mismo.
Fesumiendo" las acciones &ue se reali*an automáticamente el microcontrolador y las &ue el programador deb
tener en cuenta en sus programas son las siguientes(
• Cuando se acti+a una posible causa de interrupción" el flag correspondiente se acti+a. Si el bit de
permiso correspondiente está a 1 y el bit de 3abilitación de todas las interrupciones ;K)< está a 1" s
produce la interrupción.
• $ara e+itar &ue se produ*ca otra interrupción mientras se está atendiendo a otra anterior" el bit K) s
pone a -.
• )l +alor del $C se guarda en la $KL#
• )l $C se carga con el +alor -/-8" &ue es el +ector de interrupciones
• )l programador" debe comen*ar la rutina de atención a la interrupción con un salto a la posición de
memoria donde se encuentra el programa" seguidamente se guardan todos los registros &ue puedan
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 25/66
ser modificados por esta" seguidamente si están 3abilitadas +arias +%as de interrupción" se debe
e/plorar el +alor de las banderas para determinar la causa de la interrupción.
• Dependiendo de la causa de la interrupción" la rutina de interrupción se bifurca a la subrutina
correspondiente.
• Se deben de+ol+er los +alores &ue ten%an los registros antes de producirse la interrupción y se deben
borrar por softAare las banderas &ue indican las fuentes de las interrupciones" antes del retorno al
programa principal.
• Cuando se llega a la ltima instrucción de la rutina de interrupción" F)TUF!" se carga el $C con el
+alor &ue se guardó inicialmente en la $KL# y el bit K) se pone automáticamente a 1.
,its utili*ados.
• K!T7 para F,-RK!T" bit 1 de K!TCO!" si es 1 ocurrió interrupción e/terna
• F,K7 para los pines ,8 a F,'" bit - de K!TCO!" si es 1 por lo menos un pin cambio de estado
• T-K7 para TF-" bit = de K!TCO!" si es 1 TF- desbordado
• ))K7 para la ))$FO" bit 8 de ))CO!1" si es 1 se 3a completado escritura
• K)" bit ' de K!TCO!" si es 1 3abilita todas las interrupciones
• ))K)" bit 6 de K!TCO!" si es 1 se acti+a interrupciones de periféricos
• T-K)" bit : de K!TCO!" si es 1 int. TF- acti+ada
• K!T)" bit 8 de K!TCO!" si es 1 int. )/terna acti+ada
• F,K)" bit 2" si es 1 int. $or F,8 a F,' acti+ada
Todos estos bits al resetearse o iniciarse el micro se encuentran en -.
Rutina de &ervicio de nterru$cione:
$rimero debes guardar el contenido del registro " el problema de mo+er a otro registro ;3aciendo uso demo+f< es &ue esta instrucción corrompe la bandera V" modificando el registro de ST#TUS. Segn la 3o0a de
datos otorgada por icroc3ip" en uno de sus apartados recomienda una secuencia de código &ue permite
guardar y restaurar los registros sin modificarlos.
Código
GeSHi (asm):
1. ;**** Rutina de servicio de "nterrupcion ****
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 26/66
2. ; Buardado de registro 8 &$>&.-
3. %i&io*S
4. movwf *Temp ; 'opiamos 8 a un registro emporario.-
5. swapf STATUS, ;"nvertimos los nibles del registro
&$>&.-
6. movwf ST#T@S*Temp ; Buardamos &$>& en un registro
temporal.-
7. S
". ; $tendemos la interrupci4n.-
. ; Restauramos los valores de 8 &$>&.-
10. !i%*S
11. swapf ST#T@S*Temp, ; "nvertimos lo nibles
de &$>&Kemp.-
12. movwf STATUS
13. swapf *Temp, f ; "nvertimos los nibles lo
guardamos en el mismo registro.-
14. swapf *Temp, ; "nvertimos los nibles
nuevamente lo guardamos en 8.-
15. retfie ; &alimos de interrupci4n.-
Los registros WTemp y ST#TUSWTemp son registros alternati+os para guardar temporariamente sus +alores
correspondientes.E
I Última modificación: 30 de Julio de 2009, 1:3:03 por Suky J )n l%ne
icrosEDesigns
&u'
oderadoresDs$KC22
Desconectado
Re: "i $rimero $rograma. "anual PC*+F,-A
I Re$ueta *8 : -: de 7ebrero de =--" =-(84(=' J
)l Timer - es un contador R tempori*ador de 4 bits. )l registro principal de este módulo es T"R3 (373*)
)ste registro se incrementa continuamente a una frecuencia seleccionable mane0ada por un preescalador y el
relo0 interno 7oscR8 ;modo tem$ori9ador< o bien" por un preescalador y una seHal e/terna ;modo
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 27/66
Se/o(#rgentina
ensa0es( 6'2
Con t...
contador).
En la iguiente 4igura e muetra un diagrama de !loue de ete m;dulo# en donde e indican lo
!it ue a4ectan u o$eraci;n la manera en ue lo <acen.
El modo Tem$ori9ador
)n el modo tempori*ador la seHal de relo0 &ue controla el incremento del registro T"R3 es la frecuencia 7cy X
7oscR8" la cual puede ser di+idida opcionalmente por el preescalador si as% se desea. Como se puede +er en la
figura anterior" este modo es seleccionado al limpiar el bit T3C& (=PT=/>RE6?@). )n este modo" el
contenido del registro TF- se incrementará a la frecuencia 7cy di+idida de acuerdo al preescalador" sin
embargo" si se reali*a una escritura al registro TF-" su incremento es in3ibido por los siguientes dos ciclos d
instrucción ;Tcy<.
El modo Contador
)n el modo contador" la seHal &ue controla los incrementos del registro T"R3 es una seHal e/terna &ue
pro+iene de la patita T3CB. )n la figura anterior se puede +er &ue este modo se selecciona poniendo el bit
T-CS en alto. Se puede seleccionar la transición &ue pro+oca los incrementos mediante el bit MTimer- Source
)dge SelectM T3&E (=PT=/>RE6?-)" limpiando este bit se selecciona la transición de subida" mientras
&ue al ponerlo en alto se selecciona la de ba0ada.
=!ervaci;n: )n este modo" la seHal conectada a TOC5K es muestreada durante los ciclos = y 8 del relo0
interno" por ello es necesario &ue permane*ca en alto al menos por = Tosc más un pe&ueHo retardo de =-nseg
y lo mismo en ba0o. ;)s decir" seHales demasiado estrec3as ;rápidas< no podrán ser detectadas<.
El $reecalador
)l preescalador es un di+isor de frecuencia de módulo seleccionable. Como se puede +er en la figura anterior"
el preescalador está compartido entre el timer- y el módulo atc3dog" sin embargo sólo puede conectarse a
uno de los dos y esto se establece mediante el bit P&A (=PT=/>RE6?)" as%" con este bit en alto el
preescalador es asignado al relo0 del atc3dog" mientras &ue con un ni+el ba0o en $S# el preescalador di+idir
la frecuencia &ue mane0a al Timer -.
La selección del módulo ;+alor de di+isión de frecuencia< del preescalador se puede reali*ar mediante los
bits P&8#P&*#P&3 (=PT=/>RE6?8:3) de acuerdo a la siguiente tabla(
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 28/66
PS2 PS1 PS0 Divisor
000 1/2
001 1/4
010 1/8
011 1/16
100 1/32
101 1/64
110 1/128
111 1/256
/=TA: Si se necesita el timer en 1(1 solo 3ay &ue asociar el preescaler al atc3dog.
I Última modificación: 1! de "ayo de 2009, 16:00:53 por Suky J )n l%ne
icrosEDesigns
&u'
oderadores
Ds$KC22
Desconectado
Se/o(#rgentina
ensa0es( 6'2
Con t...
Re: "i $rimero $rograma. "anual PC*+F,-A
I Re$ueta * : -: de 7ebrero de =--" =-(8(:2 J
Ejem$lo modo tem$ori9ador.
$ara calcular una tempori*ación se necesita el tiempo de un ciclo de instrucción ;es decir 1 microsegundo" si
estas traba0ando con un YT de 8 3*<" el +alor del Di+isor de 7recuencia ;el &ue seleccionabas con los bits
$S=" $S1 y $S-<" y finalmente el complemento del +alor cargado en TF- ;es decir =::ETF-<. )ntonces
tenemos( Tem$ori9aci;n Ciclo de intrucci;n. (8@+T"R3) .Divior de Frecuencia
De este modo si &ueremos tempori*ar 8 ms con un di+isor de frecuencia de 2=" tendr%amos(
Bemos &ue la má/ima tempori*ación posible es con TF- X -" y Di+isor de 7recuencia en =:6" lográndose
unos 6:.: ms apro/.
$ara e0emplificar el uso de esta interrupción 3aremos titilar un led conectado al $K! F,- cada =-- ms" para
ello 3aremos una tempori*ación con TF- de :-ms y contaremos 8 desbordes del mismo para lograr los =--
ms necesarios. Lo interesante de usar interrupción es &ue con el micro se puede estar e0ecutando cual&uier
tarea y no ocupar este tiempo en un bucle de demora. )l 3ardAare necesario es e&ui+alente al primer e0empl
reali*ado.E
Diagrama de Flujo:
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 29/66
Código
GeSHi (asm):
1. ; **** Encabezado ****
2. list p16!"4#
3. $i%&l'e 16!"4#.inc
4. **+-!G *+*!! / *T*!! / *T*- / *T*S+
5. ;**** Definicion de variables ****
6. +o%taor e' 00+ ; 'ontador para detectar /
desbordes de #R+.-
7. *Temp e' 00 ; Registro para guardartemporalmente 8.-
". ST#T@S*Temp e' 00 ; Registro para guardar
temporalmente &$>&
.
10. Be e' 0 ; Definimos 9ed como el
bit cero de un registro, en este caso POR!.-
11.
12. ;**** "nicio del #icro ****
13. eset
14. or8 000 ; $%u comienza el micro.-
15. 8oto %i&io ; &alto a inicio de mi
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 30/66
programa.-
16. ;**** Hector de "nterrupcion ****
17. or8 004 ; $tiendo "nterrupcion.-
1". 8oto %i&io*S
1.
20. ; **** Programa Principal ****
21. ;**** 'onfiguracion de puertos ***
22. or8 005 ; Origen del c4digo de
programa.-
23. %i&io
24. bsf STATUS,0 ; Pasamos de !anco + a !anco
.-
25. movlw b11111110 ; R!+ como salida.-
26. movwf TRISB
27. movlw b00000111 ; &e selecciona #R+ modo
temporizador preescaler de L01.-
2". movwf OPTIO!R"#
2. bcf STATUS,0 ; Paso del !anco al !anco +
30. bcf PORTB,Be ; El 9ed comienza apagado.-
31. movlw 03 ; 'argamos 1 en #R+ para
lograr apro?. 0+ms.-
32. movwf T$R%
33. clrf +o%taor ; "niciamos contador.-
34. movlw b10100000 ; Gabilitamos B"E +"E
interrupci4n del #R+<
35. movwf ITCO
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 31/66
36. ;**** !ucle ****
37. 9'&le
3". nop ; $%ui el micro puede eAecutar
cual%uier otra tarea
3. 8oto 9'&le ; sin necesidad de utilizar
tiempo en un bucle de demora.-
40.
41.
42. ;**** Rutina de servicio de "nterrupcion ****
43.
44. ;---: $%ui aremos copia de respaldo para mostrar como
se ace aun%ue no es
45. ; necesario a %ue el micro no ace otra tarea mientras
tanto M---
46.
47. ; Buardado de registro 8 &$>&.-
4". %i&io*S
4. movwf *Temp ; 'opiamos 8 a un registro
emporario.-
50. swapf STATUS, ;"nvertimos los nibles del
registro &$>&.-
51. movwf ST#T@S*Temp ; Buardamos &$>& en un
registro temporal.-
52. ;**** "nterrupcion por #R+ ****
53. S
54. btfss ITCO,T0! ; 'onsultamos si es por #R+.-
55. 8oto !i%*S ; 5o, entonces
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 32/66
restauramos valores.-
56. incf +o%taor ; &i, "ncrementamos contador
57. movlw 004 ; 'onsultamos si se an
producido / desbordes
5". subwf +o%taor,0 ; para obtener ++ ms.-
5. btfss STATUS,? ;
60. 8oto #&t'aliAo*T=0 ; 5o, cargo #R+ si
salgo.-
61. clrf +o%taor ; &i, reseteo 'ontador
controlo 9ed.-
62. btfss PORTB,Be ; &i esta apagado, prendo viseversa.-
63. 8oto re%o*le
64. bcf PORTB,Be ; $pago 9ed.-
65. #&t'aliAo*T=0 ; $ctualizo #R+ para
obtener una temporizacion de 0+ ms.-
66. movlw 03 ; d)1)
67. movwf T$R%
6". bcf ITCO,T0! ; !orro bandera de control de
"nterrupcion.-
6. 8oto !i%*S ; Restauro valores.-
70. re%o*le
71. bsf PORTB,Be ; prendo 9ed.-
72. 8oto #&t'aliAo*T=0
73. ; Restauramos los valores de 8 &$>&.-
74. !i%*S
75. swapf ST#T@S*Temp, ; "nvertimos lo nibles
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 33/66
de &$>&Kemp.-
76. movwf STATUS
77. swapf *Temp, f ; "nvertimos los nibles lo
guardamos en el mismo registro.-
7". swapf *Temp, ; "nvertimos los nibles
nuevamente lo guardamos en 8.-
7. retfie ; &alimos de interrupci4n.-
"0. ;..........................................
"1.
"2. e%
Una ayuda adicional
)l programita presentado en el primer post" tiene una utilidad &ue nos ayudará en el cálculo del preescaler y
+alor inicial del Timer para obtener una tempori*ación deseada" aparte de generar el código.
I Última modificación: 10 de Julio de 2009, 19:01:20 por Suky J )n l%ne
icrosEDesigns
&u'
oderadoresDs$KC22
Desconectado
Se/o(#rgentina
Re: "i $rimero $rograma. "anual PC*+F,-A
I Re$ueta *- : -: de 7ebrero de =--" =-(:1(-- J
Ejem$lo modo contador.
)l siguiente programa reali*a el conteo del nmero de +eces &ue produce una transición de ba0o a alto en la
patita T-C5K. )l +alor del contador se incrementará una +e* por cada dos transiciones" y al detectarse 1-
cambiamos el estado del Led conectado a F,-.
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 34/66
ensa0es( 6'2
Con t...
Diagrama de Flujo:
Código
GeSHi (asm):
1. ; **** Encabezado ****
2. list p16!"4#
3. $i%&l'e 16!"4#.inc
4. **+-!G *+*!! / *T*!! / *T*- / *T*S+
5. ;**** Definicion de variables ****
6. +o%taor e' 00+ ; 'ontador para detectar /
desbordes de #R+.-
7. *Temp e' 00 ; Registro para guardar
temporalmente 8.-
". ST#T@S*Temp e' 00 ; Registro para guardar
temporalmete &$>&
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 35/66
.
10. Be e' 0 ; Definimos 9ed
como el bit cero de un registro, en este caso POR!.-
11.
12. ;**** "nicio del #icro ****
13. eset
14. or8 000 ; $%u comienza el micro.-
15. 8oto %i&io ; &alto a inicio de mi
programa.-
16. ;**** Hector de "nterrupcion ****
17. or8 004 ; $tiendo "nterrupcion.-
1". 8oto %i&io*S
1.
20. ; **** Programa Principal ****
21. ;**** 'onfiguracion de puertos ***
22. or8 005 ; Origen del c4digo de
programa.-
23. %i&io
24. bsf STATUS,0 ; Pasamos de !anco + a !anco
.-
25. movlw b11111110 ; R!+ como salida.-
26. movwf TRISB
27. movlw b00100000 ; &e selecciona #R+ modo
'ontador, transicion positiva
2". movwf OPTIO!R"# ; preescaler de L.-
2. bcf STATUS,0 ; Paso del !anco al !anco +
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 36/66
30. bcf PORTB,Be ; El 9ed comienza apagado.-
31. movlw 0!9 ; 'argamos 0 en #R+ para
contar + pulsos en R$/LO'N".-
32. movwf T$R%
33. movlw b10100000 ; Gabilitamos B"E +"E
interrupci4n del #R+<
34. movwf ITCO
35. ;**** !ucle ****
36. 9'&le
37. nop ; $%ui el micro puede eAecutar
cual%uier otra tarea
3". 8oto 9'&le ; sin necesidad de utilizar
tiempo en un bucle de demora.-
3.
40.
41.
42.
43. ;**** Rutina de servicio de "nterrupcion ****
44.
45. ;---: $%ui aremos copia de respaldo para mostrar como
se ace aun%ue no es
46. ; necesario a %ue el micro no ace otra tarea mientras
tanto M---
47.
4". ; Buardado de registro 8 &$>&.-
4. %i&io*S
50. movwf *Temp ; 'opiamos 8 a un registro
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 37/66
emporario.-
51. swapf STATUS, ;"nvertimos los nibles del
registro &$>&.-
52. movwf ST#T@S*Temp ; Buardamos &$>& en un
registro temporal.-
53. ;**** "nterrupcion por #R+ ****
54. S
55. btfss ITCO,T0! ; 'onsultamos si es por #R+.-
56. 8oto !i%*S ; 5o, entonces
restauramos valores.-
57. btfss PORTB,Be ; &i, 'ontrolamos 9ed.&i estaapagado, prendo viseversa.-
5". 8oto re%o*le
5. bcf PORTB,Be ; $pago 9ed.-
60. #&t'aliAo*T=0 ; 'argamos 0 en #R+
para contar + pulsos en R$/LO'N".-
61. movlw 0!9 ; d)0)
62. movwf T$R%
63. bcf ITCO,T0! ; !orro bandera de control de
"nterrupcion.-
64. 8oto !i%*S ; Restauro valores.-
65. re%o*le
66. bsf PORTB,Be ; prendo 9ed.-
67. 8oto #&t'aliAo*T=0
6". ; Restauramos los valores de 8 &$>&.-
6. !i%*S
70. swapf ST#T@S*Temp, ; "nvertimos lo nibles
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 38/66
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 39/66
Código
GeSHi (asm):
1. ; **** Encabezado ****
2. list p16!"4#
3. $i%&l'e 16!"4#.inc
4. **+-!G *+*!! / *T*!! / *T*- / *T*S+
5. ;**** Definicion de variables ****
6. +o%taor1 e' 00+
7. +o%taor2 e' 00
".
. 'lsaor e' 0 ; pin R!+
10. Be e' 1 ; pin
R!
11.
12. ;**** "nicio del #icro ****
13. eset
14. or8 000 ; $%ui comienza el
micro.-
15. 8oto %i&io ; &alto a inicio de mi
programa.-
16. ;**** Hector de "nterrupcion ****
17. or8 004 ; $tiendo "nterrupcion.
1". 8oto S
1.
20. ; **** Programa Principal ****
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 40/66
21. ;**** 'onfiguracion de puertos ***
22. or8 005 ; Origen del codigo de
programa.-
23. %i&io
24. bsf STATUS,0 ; Pasamos de !anco + a
!anco .-
25. movlw b11111101 ; R!+ como entrada R! como
salida.-
26. movwf TRISB
27. movlw b01000000 ; 'onfig. Por flanco
$scendente.-
2". movwf OPTIO!R"#
2. bcf STATUS,0 ; Paso del !anco al
!anco +
30. bcf PORTB,Be ; El 9ed comienza
apagado.-
31. movlw b10010000 ; Gabilitamos B"E "5E
interrupci4n por R!+<
32. movwf ITCO
33. ;**** !ucle infinito ****
34. 9'&le
35. nop ;
36. 8oto 9'&le ;
37.
3". ;.............................................
3. ;**** Rutina de servicio de "nterrupcion ****
40. ;**** "nterrupcion por R!+ ****
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 41/66
41. S
42. btfss ITCO,-T! ; 'onsultamos si es por
R!+.-
43. retfie ; 5o, &alimos de
interrupci4n.-
44. call emora*20ms ; 'omprueba si es
rebote.-
45. btfss PORTB,'lsaor
46. 8oto !i%*S ; Es rebote,
entonces salimos.-
47. btfss PORTB,Be ; &i esta prendido, lo
apagamos.-
4". 8oto re%er*Be
4. bcf PORTB,Be ; $pagamos 9ed
50. 8oto !i%*S
51. re%er*Be
52. bsf PORTB,Be ; Encendemos 9ed
53. !i%*S
54. bcf ITCO,-T! ; 9impiamos
bandera.-
55. retfie ; &alimos de
interrupci4n.-
56. ;..........................................
57. ;**** Demora ****
5". emora*20ms
5. movlw 0!! ;
60. movwf +o%taor1 ; "niciamos contador.-
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 42/66
61. epeti&io%1
62. movlw 01 ;
63. movwf +o%taor2 ; "niciamos contador
64. epeti&io%2
65. decfsz +o%taor2,1 ; Decrementa 'ontador
si es + sale.-
66. 8oto epeti&io%2 ; &i no es + repetimos
ciclo.-
67. decfsz +o%taor1,1 ; Decrementa 'ontador.
6". 8oto epeti&io%1 ; &i no es cero
repetimos ciclo.-
6. ret'r% ; Regresa de la
subrutina.-
70.
71. e%
I Última modificación: 20 de %$ril de 2009, 1!:15:20 por Suky J )n l%ne
icrosEDesigns
&u'
oderadoresDs$KC22
Desconectado
Se/o(
#rgentina
ensa0es(6'2
Re: "i $rimero $rograma. "anual PC*+F,-A
I Re$ueta *+ : -: de 7ebrero de =--" =-(:8(8: J
#pro+ec3aremos esta interrupción para detectar cuando se 3a presionado una tecla de un Teclado atricial. Un
teclado matricial es un simple arreglo de botones conectados en filas y columnas" de modo &ue se pueden leer
+arios botones con el m%nimo nmero de pines re&ueridos. Un teclado matricial 8Z2 solamente ocupa 8 l%neasde un puerto para las filas y otras 2 l%neas para las columnas" de este modo se pueden leer 1= teclas utili*ando
solamente ' l%neas de un microcontrolador.
$ara detectar la tecla presionada se utili*ara el siguiente 3ardAare(
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 43/66
Con t...
Configuraremos F,- a F,2 como salida y las colocaremos a ni+el ba0o. F,8 y F,' configuradas como entradasy en estado normal ;sin presión de teclas< estarán a ni+el alto. #l presionar una tecla se conecta una fila con
una columna" se produce un cambio de ni+el en alguna de las columnas ;De ni+el alto a ba0o<" y se genera la
interrupción. $ara detectar &ue tecla se 3a presionado" se colocan F,- a F,2 a ni+el alto" y se pasan a ni+el
ba0o de a una por +e*" detectando si se produce algn cambio en las columnas.
Se utili*a una +ariable &ue se incrementa con la cuenta de las teclas re+isadas" de este modo al detectar una
pulsación el +alor de la cuenta será el +alor de la tecla presionada. Si al final no se presionó ninguna tecla la
+ariable se pone a cero y la cuenta +uel+e a comen*ar.
)n nuestro e0emplo representaremos la tecla presionada en forma binaria con leds conectados al puerto #.
Diagrama de Flujo:
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 44/66
Código
GeSHi (asm):
1. ; **** Encabezado ****
2. list p16!"4#
3. $i%&l'e 16!"4#.inc
4. **+-!G *+*!! / *T*!! / *T*- / *T*S+
5. ;**** Definicion de variables ****
6. -Te&la e' 00+ ; &eleccionamos posici4n en la
memoria R$# BPR< para guardar
7. *Temp e' 00 ; Registro para guardar temporalmente
8.-
". ST#T@S*Temp e' 00 ; Registro para guardartemporalmete &$>&
.
10.
11.
12. ;**** "nicio del #icro ****
13. eset
14. or8 000 ; $%u comienza el micro.-
15. 8oto %i&io ; &alto a inicio de mi
programa.-
16. ;**** Hector de "nterrupcion ****
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 45/66
17. or8 004 ; $tiendo "nterrupcion.-
1". 8oto %i&io*S
1. ;**** Programa principal ****
20. ;**** 'onfiguracion de puertos ****
21. %i&io
22. bsf STATUS,0 ; Pasamos de !anco + a !anco
.-
23. clrf TRISA ; POR$ como &alida.-
24. movlw b11110000 ; 5ible baAo como &alida
5ible alto como Entrada.-
25. movwf TRISB
26. bcf STATUS,0 ; Paso del !anco al !anco +
27. clrf PORTB
2". bcf ITCO,9! ; !orramos bandera de
"nterrupcion.-
2. movlw b10001000 ; Gabilitamos B"E R!"Einterrupci4n R!/ a R!7<
30. movwf ITCO
31. clrf -Te&la
32. ;**** !ucle ****
33. 9'&le
34. nop
35. 8oto 9'&le
36. ;**** Rutina de servicio de "nterrupcion ****
37.
3". ;---: $%ui aremos copia de respaldo para mostrar como
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 46/66
se ace aun%ue no es
3. ; necesario a %ue el micro no ace otra tarea mientras
tanto M---
40.
41. ; Buardado de registro 8 &$>&.-
42. %i&io*S
43. movwf *Temp ; 'opiamos 8 a un registro
emporario.-
44. swapf STATUS, ;"nvertimos los nibles del
registro &$>&.-
45. movwf ST#T@S*Temp ; Buardamos &$>& en unregistro temporal.-
46. ;**** "nterrupcion por #R+ ****
47. S
4". btfss ITCO,9! ; 'onsultamos si es por R!/ a
R!7.-
4. 8oto !i%*S ; 5o, entoncesrestauramos valores.-
50. call Te&la*resio%aa ; &e detecta %ue tecla
fue presionada
51. movfw -Te&la
52. movwf PORTA ; #ostarmos en dipla tecla
Presionada.-
53. ; Restauramos los valores de 8 &$>&.-
54. !i%*S
55. swapf ST#T@S*Temp, ; "nvertimos lo nibles
de &$>&Kemp.-
56. movwf STATUS
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 47/66
57. swapf *Temp, f ; "nvertimos los nibles lo
guardamos en el mismo registro.-
5". swapf *Temp, ; "nvertimos los nibles
nuevamente lo guardamos en 8.-
5. retfie ; &alimos de interrupci4n.-
60.
61.
62. ;**** Rutinas *****
63. ; Rastreamos ecla presionada.-
64. Te&la*resio%aa
65. clrf -Te&la ; !orra 5umero de ecla
66. incf -Te&la,1 ; prepara 5ecla para prime
codigo.
67. movlw b00001110 ; &aca + a la primera fila
6". movwf PORTB ; de la Puerta !
6. nop ; Para estabilizacion deseal.
70. Test*+ol'm%as
71. btfss PORTB,4 ; Primera columna @ +
72. 8oto S'elta*te&la ; &ale si se a pulsado
tecla.
73. incf -Te&la,1 ; &i no tecla pulsada,
incrementa nI tecla.
74. btfss PORTB,5 ; &egunda columna @ +
75. 8oto S'elta*te&la ; &ale si se a pulsado
tecla.
76. incf -Te&la,1 ; &i no tecla pulsada,
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 48/66
incrementa nI tecla.
77. btfss PORTB,6 ; ercera columna @ +
7". 8oto S'elta*te&la ; &ale si se a pulsado
tecla.
7. incf -Te&la,1 ; &i no tecla pulsada,
incrementa nI tecla.
"0. ; En este caso no se >sa teclado ?/.-
"1. ; btfss POR!,7 ; 'uarta columna @ +
"2. ; goto &ueltaKtecla ; &ale si se a pulsado
tecla.
"3. ; incf 5ecla, ; &i no tecla pulsada,incrementa nI ecla.
"4.
"5. @ltima*te&la
"6. btfss PORTB,3 ; a se revisaron
todas las filasJ
"7. 8oto -'ll*te&la ; &i, 6alsa alarma, nose a presionado ninguna.-
"". bsf STATUS,+ ; 5o, seguimos con la
siguiente.Pone a !it '
". rlf PORTB,1 ; asi la 6ila pasa a con la
rotaciQn a iz%da.
0. 8oto Test*+ol'm%as
1.
2. -'ll*te&la
3. clrf -Te&la ; 'oloca variable ecla a +
5inguna<
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 49/66
4. bcf ITCO,9! ; !orramos bandera de
"nterrupcion.-
5. clrf PORTB ; DeAamos Puerto para
recibir otra tecla.-
6. ret'r% ; regresa.
7.
". S'elta*te&la
. ; $ora se espera a %ue la tecla sea soltada para evitar
rebotes
100. ; reactivaciones de tecla
101. spera1
102. btfss PORTB,4 ; &i no se suelta la
tecla 6"9$
103. 8oto spera1 ; vuelve a esperar.
104. spera2
105. btfss PORTB,5 ; &i no se suelta latecla 6"9$
106. 8oto spera2 ; vuelve a esperar.
107. spera3
10". btfss PORTB,6 ; &i no se suelta la
tecla 6"9$
10. 8oto spera3 ; vuelve a esperar.
110. spera4
111. btfss PORTB,7 ; &i no se suelta la
tecla 6"9$ /
112. 8oto spera4 ; vuelve a esperar.
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 50/66
113.
114. bcf ITCO,9! ; !orramos bandera
de "nterrupcion.-
115. clrf PORTB ; DeAamos Puerto
para recibir otra tecla.-
116. ret'r% ; vuelve al
programa principal %ue izo la llamada.
117. ;..........................................
11". e%
También con la +ariable !Tecla ;!umero de Tecla presionada< se puede utili*ar como entrada a una tabla para
codificar en #SC5KK la tecla presionada(
Código
GeSHi (asm):
1. movfw -Te&la
2. call Tabla*T=atri&ial
3.
4. ;'odificacion de ecla presionada=
5. Tabla*T=atri&ial
6. addwf PCL,1
7. T C1C,C2C, C3C, C4C, C5C, C6C, C7C, C"C, CC, CDC,
C0C, C$C
I Última modificación: 20 de %$ril de 2009, 1!:2:58 por Suky J )n l%ne
icrosEDesigns
&u'
oderadoresDs$KC22
Re: "i $rimero $rograma. "anual PC*+F,-A
I Re$ueta * : -: de 7ebrero de =--" =-(:6(8 J
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 51/66
Desconectado
Se/o(#rgentina
ensa0es( 6'2
Con t...
Decri$ci;n: La pantalla de cristal li&uido o LCD ;Li&uid Crystal Display< es un dispositi+o [Controlado de
+isuali*ación grafico para la presentación de caracteres" s%mbolos o incluso dibu0os ;en algunos modelos<. )n
este caso dispone de = filas de 16 caracteres cada una y cada carácter dispone de una matri* de :/' puntos
;pi/els<" aun&ue los 3ay de otro nmero de filas y caracteres. )ste dispositi+o esta gobernado internamente
por un microcontrolador ?itac3i 88'4- y regula todos los parámetros de presentación" este modelo es el mas
comnmente usado y la información &ue se adjunta se basará en el mane0o de este u otro LCD compatible.
Cone/ión del modulo LCD al $KC16748# mediante bus de 8 bits.
)n este e0emplo 3aremos uso de dos directi+as más de ensamblador. )stas son \D)7K!) y macro.
DEF/E es empleado para crear sustituciones dentro del te/to del programa &ue lo simplifi&uen. La forma
correcta es \D)7K!) !O,F) T)YTO" con lo &ue" cada +e* &ue el compilador encuentre la orden !O,F)" la
sustituirá por el te/to. )l problema &ue se nos plantea es &ue" si bien es más fle/ible &ue la directi+a )U"
puesto &ue esta sólo nos permit%a asignar un +alor" sólo se nos permite con \D)7K!) una l%nea de te/to" y est
debe ser fi0a.
Código
GeSHi (asm):
1. $!- B+* B+*T*+o%trol,
)ste problema se soluciona mediante macro. )sta directi+a tiene la siguiente forma(
!O,F) macro #FU)!TO1" #FU)!TO=" )TC
T)YTO
T)YTO...
endm
De este modo !O,F) será sustituido como comando por la secuencia completa definida tras macro 3asta
endm" y los sucesi+os argumentos serán" a su +e*" sustituidos dentro del te/to.
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 52/66
)n nuestro e0emplo lo utili*aremos para en+iar un carácter o un comando al LCD" de la siguiente manera(
Código
GeSHi (asm):
1. B+*'t& ma&ro+ara&
2. movlw +ara&
3. call B+*+ara&ter
4. e%m
5. B+*'t ma&ro+oma%
6. movlw +oma%
7. call B+*+oma%o
". e%m
Rutina de Control:
LCDWConfigWpuertos( Configura los puertos del $KC para el uso del modulo LCD" solo afecta a los pines
utili*ados.E
LCDWKnit( Kniciali*a el módulo LCD para su correcto funcionamiento. )s necesario e0ecutar esta subrutina al
principio de los programas &ue +ayan a utili*ar la +isuali*ación mediante LCD.
LCDW,andera( )/plora el estado de la bandera ,usy ;ocupado< del módulo LCD y espera &ue termine
cual&uier comando pre+io antes de +ol+er a la rutina &ue le llamo.E
LCDW)nable( ?abilita el módulo LCD durante =us para recepción de datos o en+%o.E
LCDWComando( Configura módulo LCD para recibir un comando mediante rutina LCDW)n+ioWData.E
LCDWCaracter( Configura módulo LCD para recibir un carácter mediante rutina LCDW)n+ioWData.E
LCDW)n+ioWData( )n+%a dato al LCD" Cargando el nible alto y luego el nible ba0o.E
/ota: Obser+ar &ue las l%neas de control y bus de datos es fácilmente modificable en Declaración de bits para
control LCD y Declaración de ,ytes del LCD.
)n l%ne
icrosEDesigns
&u'
oderadoresDs$KC22
Desconectado
Re: "i $rimero $rograma. "anual PC*+F,-A
I Re$ueta *, : -: de 7ebrero de =--" =-(:4(26 J
Como e0emplo de aplicación se muestra un e0emplo donde se +isuali*a un mensa0e ;MTodo $icN<(
Código
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 53/66
Se/o(#rgentin
a
ensa0es(6'2
Con t...
GeSHi (asm):
1. ; **** Encabezado ****
2. list p16!"4#
3. $i%&l'e 16!"4#.inc
4. **+-!G *+*!! / *T*!! / *T*- / *T*S+
5. ;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLLLLL
6. ;**** Declaraci4n de Registros ****
7. B+*ato e' 00+ ;registro para
guardar dato a enviar al 9'D
". Loop e' 00 ;registro para
inicializacion del 9'D
. +o%taor1 e' 00 ;registro para
demoras
10. +o%taor2 e' 00! ;registro para
demoras
11. ;**** Declaracion de bits para control 9'D ****
12. S e' 0
13. e' 1
14. e' 2
15. 9#+E e' 3
16.
17. 4 e' 4
1". 5 e' 5
1. 6 e' 6
20. 7*9! e' 7
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 54/66
21. ;**** Declaracion de !tes del 9'D ****
22. B+*T*+o%trol e' 005 ; POR$ para
control del 9'D
23. B+*T*ata e' 006 ; POR! para envio
de Datos al 9'D
24. B+*TS*+o%trol e' 0"5 ; R"&$
25. B+*TS*ata e' 0"6 ; R"&!
26. ; **** 'omandos de &oft(are para la 9'D ****
27. B+Bi%ea1 e' 0"0 ; Direcci4n comienzo
lnea
2". B+Bi%ea2 e' 0+0 ; Direcci4n comienzolnea
2. B++lr e' 001 ; !orra pantalla, cursor
a "nicio
30. B+%i&io e' 002 ; 'ursor a "nicio, DDR$#
sin cambios
31. B+%& e' 006 ; #odo incrementa cursor
32. B+e& e' 004 ; #odo decrementa cursor
33. B+% e' 00+ ; Pantalla On
34. B+ff e' 00" ; Pantalla Off
35. +'rs% e' 00 ; Pantalla On, cursor On
36. +'rsff e' 00+ ; Pantalla On,
cursor Off
37. +'rs9li%F e' 00! ; Pantalla On, 'ursor
parpadeante
3". +'rAa e' 010 ; #ueve cursor a la
iz%uierda
3. +'re&a e' 014 ; #ueve cursor a la
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 55/66
dereca
40. isAa e' 01" ; #ueve Displa
a la iz%uierda
41. ise&a e' 01+ ; #ueve Displa a la
Dereca
42. B+9's*4*2 e' 02" ; !us / bits, lneas,
0?7
43. ;**** Definiciones para el ensamblador ****
44. $!- B+* B+*T*+o%trol,
45. $!- B+*S B+*T*+o%trol,S
46. $!- B+* B+*T*+o%trol,
47. $!- B+*4 B+*T*ata,4
4". $!- B+*5 B+*T*ata,5
4. $!- B+*6 B+*T*ata,6
50. $!- B+*7*9! B+*T*ata,7*9!
51. $!- +*ba&Fli8t
B+*T*+o%trol,9#+E ; 'ontrol !acligt.-
52. ;**** Definici4n de macros ****
53. B+*'t& ma&ro +ara&
54. movlw +ara&
55. call B+*+ara&ter
56. e%m
57. B+*'t ma&ro +oma%
5". movlw +oma%
5. call B+*+oma%o
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 56/66
60. e%m
61. ;LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
LL
62. ;**** "nicio del #icro ****
63. or8 000
64. 8oto %i&io
65. ;**** Programa principal ****
66. or8 005
67. %i&io
6". call B+*+o%fi8*p'ertos ; 'onfiguramos Puertos autilizar por 9'D.-
6. call B+*%it ; "nicializamos 9'D.-
70. bsf B+*ba&Fli8t ; Prendemos
!acligt.-
71. B+*'t +'rs9li%F ; 'ursor Parpadeante.-
72. B+*'t& T ; Escribimos en 9'D.-
73. B+*'t& o
74. B+*'t&
75. B+*'t& o
76. B+*'t&
77. B+*'t&
7". B+*'t&
7. B+*'t& +
"0. 9'&le
"1. nop
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 57/66
"2. 8oto 9'&le ; !ucle "nfinito.-
"3.
"4. ;**** &ubrutinas de 'ontrol ****
"5.
"6. ;**** 'onfiguracion de puertos ****
"7. B+*+o%fi8*p'ertos
"". bsf STATUS,0 ; &eleccionamos !anco .-
". bcf B+*S ; 'olocamos todas las
lineas de control bus como &alidas.-
0. bcf B+*
1. bcf B+*
2. bcf B+*4
3. bcf B+*5
4. bcf B+*6
5. bcf B+*7*9!
6. bcf B+*ba&Fli8t
7. bcf STATUS,0 ; Holvemos an !anco +.-
". bcf B+*S
. bcf B+*
100. bcf B+*
101. bcf B+*4
102. bcf B+*5
103. bcf B+*6
104. bcf B+*7*9!
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 58/66
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 59/66
0?7::.-
12. movlw B+9's*4*2
130. call B+*+oma%o
131. ;....9impia displa retorna al origen ....
132. movlw B++lr
133. call B+*+oma%o
134. ret'r%
135. ;.........................................
136. ;**** 9ee Estado del 9'D ****
137. B+*9a%era
13". bcf B+*
13. bcf B+*S
140. bcf B+*
141. bcf B+*4
142. bcf B+*5
143. bcf B+*6
144. bcf B+*7*9!
145. nop
146. bsf B+* ; #odo 9ectura.-
147. bsf STATUS,0 ; !anco .-
14". bsf B+*7*9! ; 'onfigura R"& para
recibir estado del 9'D.-
14. bcf STATUS,0 ; !anco .-
150. bsf B+*
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 60/66
151. nop
152. btfsc B+*7*9! ; 9ee estado del 9'D, -:
Ocupado.-
153. 8oto ;<1 ; Esperamos a %ue se
desocupe.-
154. bcf B+* ; 9'DKD7L!6-:+, seguimos
adelante.-
155. bsf STATUS,0 ; !anco .-
156. bcf B+*7*9! ; Reconfigura R"& para
envio de Data.-
157. bcf STATUS,0 ; !anco .-
15". ret'r%
15. ;.............................
160. ;**** Envia pulso Enable ****
161. B+*%able
162. bsf B+*
163. nop
164. nop
165. bcf B+*
166. ret'r%
167. ;.............................
16". ;**** Envia Dato al 9'D ****
16. ;*** Previamente configurado como 'omando o como
'aracter.-
170. B+*%io*ata
171. movwf B+*ato ; Buardamos Dato a
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 61/66
enviar.-
172. ; '$RB$#O& 5"!9E $9O E5
P>ERO.-
173. bcf B+*4 ; 'argamos un cero.-
174. btfsc B+*ato,4 ; &i es , modificamos a
uno, sino seguimos.-
175. bsf B+*4
176. bcf B+*5 ;
177. btfsc B+*ato,5
17". bsf B+*5
17. bcf B+*6 ;
1"0. btfsc B+*ato,6
1"1. bsf B+*6
1"2. bcf B+*7*9! ;
1"3. btfsc B+*ato,7
1"4. bsf B+*7*9!
1"5. call B+*%able ; Gabilitamos 9'D para
recepcion de Data.-
1"6. ; '$RB$#O& 5"!9E !$SO E5
P>ERO.-
1"7. bcf B+*4 ; 'argamos un cero.-
1"". btfsc B+*ato,0 ; &i es , modificamos a
uno, sino seguimos.-
1". bsf B+*4
10. bcf B+*5 ;
11. btfsc B+*ato,1
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 62/66
12. bsf B+*5
13. bcf B+*6 ;
14. btfsc B+*ato,2
15. bsf B+*6
16. bcf B+*7*9! ;
17. btfsc B+*ato,3
1". bsf B+*7*9!
1. call B+*%able ; Gabilitamos 9'D para
recepcion de Data.-
200. ret'r%
201. ;.............................
202. ;**** Envia 'omando al 9'D ****
203. B+*+oma%o
204. call B+*9a%era ;'ontrola si el 9'D
esta en condiciones de recibir un nuevo dato.-
205. bcf B+* ; #odo escritura.-
206. bcf B+*S ; &e enviara
'omando.-
207. call B+*%io*ata ; Envio 'omando.-
20". ret'r%
20. ;.............................
210. ;**** Envia 'aracter al 9'D ****
211. B+*+ara&ter
212. call B+*9a%era ;'ontrola si el 9'D
esta en condiciones de recibir un nuevo dato.-
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 63/66
213. bcf B+* ; #odo escritura.-
214. bsf B+*S ; &e enviara
'aracter.-
215. call B+*%io*ata ; Envio 'aracter.-
216. ret'r%
217. ;..............................
21". ;**** Demora ****
21. emora*5ms
220. movlw 0+" ; ++
221. movwf +o%taor1 ; "niciamoscontador.-
222. epeti&io%1
223. movlw 007 ;
224. movwf +o%taor2 ; "niciamos
contador
225. epeti&io%2
226. decfsz +o%taor2,1 ; Decrementa
'ontador si es + sale.-
227. 8oto epeti&io%2 ; &i no es +
repetimos ciclo.-
22". decfsz +o%taor1,1 ; Decrementa
'ontador.-
22. 8oto epeti&io%1 ; &i no es cero
repetimos ciclo.-
230. ret'r% ; Regresa de
la subrutina.-
231.
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 64/66
232. ;...............................
233. e%
Tengo &ue ser sincero" no logre simularlo con $roteus. $ero con elementos reales" lo probé en +arias
configuraciones de l%neas de control y bus de datos" por lo &ue deber%a funcionar sin problemas.E
)n l%ne
icrosEDesigns
&u'
oderadoresDs$KC22
Desconectado
Se/o(#rgentina
ensa0es( 6'2
Con t...
Re: "i $rimero $rograma. "anual PC*+F,-A
I Re$ueta *2 : -: de 7ebrero de =--" =-(:(8' J
)l FS=2= es un estándar de comunicaciones propuesto por la #sociación de Kndustrias )lectrónicas ;)K#<
cual define la interfase mecánica" los pines" las seHales y los protocolos &ue debe cumplir la comunicaciónserial. La +elocidad se mide en baudios ;bitsRsegundo< y esta normali*ada a =8--" 84--" 6--" 1=--" 248--
etc. ] sólo son necesarios dos cables" uno de transmisión y otro de recepción.
Todas las normas FSE=2= cumplen con los siguientes ni+eles de +olta0e(
E Un M1N lógico es un +olta0e comprendido entre :+ y 1:+
E Un M-N lógico es un +olta0e comprendido entre :̂+ y ^1: +
Los puertos series son accesibles mediante conectores. La norma FS=2= establece dos tipos de conectores
llamados D,E=: y D,E" mac3os y 3embras. La norma FS=2= se estableció para conectar un ordenador con u
modem" por lo &ue aparecen muc3as patillas en los conectores D,E=: &ue en otro tipo de aplicaciones no se
utili*an y en las &ue es mas comn utili*ar el conector D,E.
Cada una de las patillas del conector FS=2= tiene una función espec%fica. $atillas del D,E(
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 65/66
Los pines &ue portan los datos son F/D y T/D los demás se encargan de otros traba0os" el DTF indica &ue el
ordenador esta encendido" DSF &ue el dispositi+o conectado al puerto esta encendido" FTS &ue el ordenador a
no estar ocupado puede recibir datos" al re+és de CTS &ue lo &ue informa es &ue es el dispositi+o el &ue pued
recibir datos" DCD detecta &ue e/isten presencia de datos" etc.
7ormato de un byte(
)l protocolo establecido por la norma FS=2= en+ia la información estructurada en 8 partes(
E ,it de inicio o arran&ue ;ST#FT<. )s un paso de E1=B a ^1=B" es decir de un M1N a un M-N lógico en la lógica
negati+a de la norma FS=2=.
E ,its de datos ;Datas< Los bits de datos son en+iados al receptor después del bit Start. )l bit de menos pes
LS, es trasmitido primero. Un carácter de datos suele consistir en ' u 4 bits.
E ,it de $aridad ;$arity< Dependiendo de la configuración de la transmisión un bit de paridad puede ser
en+iado después de los bits de datos. Con este bit se suele descubrir errores en la transmisión" puede dar
paridad par o impar.
E ,it de $arada ;STO$< la l%nea &ue a E1=B después del ultimo bit en+iado" es decir &ueda a M1N en lógica
negati+a de la norma. )l protocolo permite 1" 1.: o = bits de parada.
"AG 88.
)n el mercado 3ay muc3os circuitos integrados &ue permiten la con+ersión entre ni+eles TTL y ni+eles FS=2=.
)l más destacado es el transceptor #Y=2=(
)ste con+ierte los ni+eles FS=2= ^1= y E1= a +olta0es TTL - y ^: y +ice+ersa sin re&uerir mas &ue una
fuente de ^:B y un par de capacitores.
7/23/2019 EJERCISIOS VARIADOS DE CONFIGURACIONES DE INSTRUCCIONES
http://slidepdf.com/reader/full/ejercisios-variados-de-configuraciones-de-instrucciones 66/66