Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Documents - MX - Curso de Programacion Pic en C Con Ccs
Documents - MX - Curso de Programacion Pic en C Con Ccs
Introduccin
Constantes.
Operadores.
Sentencias repetitivas.
o Bucle while
o Bucle for
o Bucle do-while
Sentencias condicionales
o Sentencia if
o Sentencia if-else
o Sentencia switch
Funciones (1)
Funciones (2)
Punteros (1)
Sentencia return.
Arrays.
Cadenas de caracteres.
Arrays Multidimensionales.
Arrays de cadenas.
Punteros y Arrays.
Array de punteros.
Estructuras.
Estructuras y Punteros.
Uniones.
Enumeraciones.
Campos de bits
http://www.ccsinfo.com/ccsfreedemo.php
Despus de rellenar el formulario te descargas el programa de
instalacin y lo instalas en tu ordenador como un programa ms de
Windows, aunque tienes que tener en cuenta que solo podrs
programar un pequeo conjunto de PIC de cada familia, otro
inconveniente es que tienes que estar conectado a Internet para que
te funcione si no te aparecer esta ventanita poco amigable:
http://www.labcenter.co.uk/download/prodemo_download.cfm
Otra cosa que quiero aclarar es que el curso va a ser todo lo prctico
que pueda y la forma de proceder ser
la siguiente: ir mostrando uno varios ejemplos de cada tema y
posteriormente har una Explicacin de los mismos. Yo no se
vosotros pero yo cada vez que he querido aprender algo nuevo lo
primero que he hecho a sido mirar los ejemplos, despus vosotros
tendris que comprobar que lo que he dicho es cierto y que el
ejemplo compila y funciona sin errores.
#use rs232
(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) esta
directiva es para la comunicacin del PIC con otro dispositivo
va RS232, por ejemplo un ordenador, en ella se encuentran
definidas los prototipos de las funciones de entrada y salida
como printf().
De todos estos archivos los que mas nos interesa son los que estn
marcados en la figura de arriba. El archivo Ejemplo1.hex es el que
tenemos que utilizar para programar el PIC y el que termina con
extensin .cof lo utilizaremos para cargarlo en el simulador Proteus y
poder simular el programa paso a paso, entre otras posibilidades muy
tiles a la hora de depurar nuestro cdigo.
Pero eso lo veremos el prximo da.
Un Saludo
Programacin PIC en C - Simulacin con Proteus
Escrito por biblioman
Pgina 3 de 18
Con esto ya tendremos los dos elementos necesarios para simular nuestros
programas, recordemos que en este curso se va a ver las generalidades del
lenguaje C aplicadas a este compilador, en el caso de las aplicaciones
prcticas que empezaremos pronto en otro articulo tendremos que hacer un
circuito independiente para cada ejemplo ya que cada uno de ellos
incorporar elementos diferentes como: diodos Led, motores, teclados,
displays, etc.
La interconexin de los dos dispositivos es muy sencilla segn se muestra
en la figura de abajo, solo hay que hacer clic con el puntero del ratn en
forma de lpiz entre los terminales que queremos conexionar:
El pin del PIC que habamos elegido como transmisin de datos en nuestro
programa ir conectado al terminal RXD de recepcin de datos en el
Terminal Virtual y viceversa.
Bien ahora tenemos que cargar nuestro programa en el PIC para poder
simularlo, para ello hacemos doble clic sobre el PIC y nos aparecer la
ventana de la figura de abajo:
Los valores que en un principio tenemos que introducir para que nuestra
simulacin funcione son los que estn sealados en la figura de arriba. En
Program File pincharemos sobre la carpeta y seleccionaremos el archivo con
extensin .cof que se haba creado al compilar nuestro programa, si en vez
de este seleccionamos el que tiene extensin .Hex funcionar igual pero no
podremos realizar la simulacin paso a paso. El otro valor a tener en cuenta
es que la frecuencia del reloj del PIC debe coincidir con el valor que le
habamos puesto en el programa en nuestro caso 4 MHz.
Una vez hecho esto guardamos nuestro proyecto.
Si ahora hacemos clic sobre el botn Play se nos abrir una terminal
al estilo MSDos donde nos mostrar la salida de nuestro programa:
Ahora nos queda aadir nuestro cdigo fuente para ello vamos al men
seleccionamos Source Add/Remove Source files
Volver al ndice
Hay que tener en cuenta que la lnea tiene que acabar en punto y
coma.
El tipo de datos es obligatorio ponerlo y le dice al compilador cuantas
celdillas de memoria tiene que reservar para almacenar el valor de la
variable. Los tipos de datos pueden variar de un compilador a otro,
vamos a ver los tipos de datos que podemos usar con nuestro
compilador CCS.
Los tipos de datos bsicos que utiliza nuestro compilador son los
siguientes:
Todos los tipos excepto float son por defecto sin signo, aunque
pueden llevar el especificador unsigned signed y su rango de
valores ser el que corresponda a su tipo bsico.
Estos son los tipos bsicos, tambin estn los tipos de datos
compuestos como Enumeraciones, Estructuras y Uniones que estn
formados por una combinacin de los bsicos y que los veremos ms
adelante.
Bueno ya est bien de teora vamos hacer un ejemplo donde vamos a declarar y a usar
varios tipos de variables:
El compilador utiliza 8 bits para representar los nmeros enteros sin signo con lo
cual podemos representar desde el 0 hasta el 255 que corresponde en binario al
nmero: 11111111. Por lo que al asignarle a la variable el valor 256 el
compilador no generar un error pero el dato guardado ser errneo, nos
mostrar 0 que es el siguiente valor a 255 en binario.
Para los nmeros enteros con signo tambin se utilizan 8 bits pero el ltimo bit
se reserva para el signo, con lo que se podrn representar los nmeros desde:
-127 al 127.
El tipo short se utilizar para las variables de un bit y tendrn como valor 0 1.
Para los nmeros tipo long int se reservan 16 bits sin signo con lo que su rango
va de 0 a 65535
Para el tipo signed long se reservan tambin 16 bits pero se utiliza uno para el
signo, por lo que se tiene un rango que va desde -32767 a 32767.
El tipo char se utiliza para almacenar los caracteres, utiliza 8 bits sin signo
suficientes para representar los 256 caracteres del cdigo ASCII.
Los smbolos %D, %lu, %ld, %c le indica a la funcin printf en que formato
tiene que representar el nmero. En la ayuda del compilador vienen los
diferentes especificadores que hay para los diferentes tipos de datos. A lo largo
de los siguientes ejemplos se irn mostrando algunos ms.
CONSIDERACIONES: Hay que intentar siempre utilizar el tipo de dato que menos
memoria ocupe dentro de los valores que pueda utilizar la variable. Si abusamos de los
tipos grandes para almacenar valores pequeos nos quedaremos sin memoria y en los
programas grandes es un dato que tenemos que tener en cuenta.
Nota: en los ejemplos que tengan poco cdigo fuente como este y para que el formato
de texto salga con los mismos colores que utiliza el compilador utilizar imgenes para
mostrar el cdigo y en la seccin de descargas ir incluyendo los ejemplos del curso
para que todo el que no quiera teclearlos a mano se los pueda descargar. Otra cosa no
incluir el circuito en Proteus ya que es el mismo para todos los ejemplos a excepcin
de que en algunos ejemplos pueda ir cambiando el tipo de PIC.
Volver al ndice
Poniendo doble barra (la que hay encima del 7), esta forma es
prctica para comentar una lnea.
Ejemplo:
//Este texto es un comentario.
//y este otro tambin.
Ejemplo:
Bueno, todo esto para el que tenga una idea de programacin seguro
que ya lo sabe, pero como dije al principio voy ha intentar que este
curso le sirva tambin al que no tenga ni idea de programacin
aunque, en este caso, hay que decir tambin si se es honesto, que
aprender un lenguaje de programacin al igual que aprender un
idioma nuevo supone un esfuerzo considerable y no vasta con leerse
un libro de C y decir ya soy un programador de C!, bajo mi modesta
opinin lo que hay que hacer es practicar mucho, es decir teclear
mucho cdigo compilarlo y comprobar que funciona como nosotros
queremos que lo haga, al principio cometeremos muchos errores
pero el descubrir cual es la causa del error nos servir para aprender
mas todava y sobre todo no desanimarse a la primera de cambio
cuando algo no funcione. La constancia y la perseverancia son las
claves del xito para conseguir cualquier objetivo, no solo el aprender
a programar PIC en C. Y ya est bien porque menudo rollo estoy
soltando, as que vamos a empezar con lo que era el tema de este
capitulo: las constantes.
Ejem:
Ejem.
#define MAXIMO 30
#define MAXIMO = 30
Decimal
Ejemplo: 222
Hexadecimal empiezan por 0x
Ejemplo: 0x2A
Binario empiezan por 0b
Ejemplo:
0b00001011
Este ltimo formato es muy til, por ejemplo el PIC dispone de unos
registros que sirven para configurar los puertos del PIC como
entradas de datos o salida de datos, por defecto vienen configurados
como entradas y si quiero utilizar algn pin como salida porque
quiero utilizarlo para encender un LED o lo que sea, tengo que poner
a cero dicho registro. En el formato binario se ve fcilmente que
valores se le va asignar al registro, teniendo en cuenta que los
registros empiezan por 0.
como enviar datos a un LCD, el utilizar los conversores A/D, etc. Para
ello voy a iniciar prximamente un segundo artculo donde
empezaremos a estudiar ejemplos prcticos de los PIC.
Un saludo y hasta el prximo da.
Volver al ndice
Como vemos aparte de poder ver el estado de los registros SFR del PIC
podemos ver el estado de la memoria EPROM del PIC, El contenido de la
memoria de programa (donde se encuentra grabado de forma permanente
nuestro programa ), el estado de PILA (til cuando se trabaja con
interrupciones y funciones), otra ventana nos muestra el estado de la
memoria RAM reservada a los datos registros de propsito general (GPR)
en formato hexadecimal y otra donde podemos ver el estado de las
variables que tenemos activas en ese momento, recordar que si utilizamos
variables locales por ejemplo dentro de una funcin, ests se destruirn al
salir de la funcin. Pero todo esto como he dicho lo tenemos cuando
estamos ejecutando nuestro programa en el modo paso a paso tenemos
nuestro programa en pausa.
Pero Proteus nos proporciona otro mtodo para ver el estado de las
variables cuando estamos ejecutando nuestro programa ya sea en
modo Run en modo paso, es la ventana Watch Window y podemos
acceder a ella por medio del men Debug --> Watch Windows.
Vamos a ver cmo podemos utilizarla. Para ello compilaremos el
siguiente ejemplo:
#include <16F84A.h>
#use delay(clock=4000000)
#fuses XT,PUT,NOWDT
#use RS232(BAUD=9600, BITS=8, PARITY=N, XMIT=PIN_B4,
RCV=PIN_B5)
int x;
int y;
void main() {
x,y=0;
while(TRUE)
{
if (x<=9)
{
x++;
delay_ms(500);
//printf("x = %d.\r",x);
}
else
{
if (y<=9)
{
y++;
delay_ms(500);
//printf("y = %d.\r",y);
}
}
}
}
Esto har que nos aparezca el archivo Symbol Map en modo lectura,
en este archivo podemos ver en qu posicin de memoria se
guardarn las diferentes variables que tengamos declaradas en
nuestro programa, este archivo se actualizar en cada compilacin
que hagamos.
Nos aparecer una nueva ventana donde iremos aadiendo las variables con
su direccin correspondiente:
Una vez aadidas las variables podemos ver el valor que van tomando
mientras ejecutamos nuestro programa en la ventana Watch Windows,
segn se muestra en la figura de abajo:
Descargas --> Apuntes --> Electrnica --> Proteus --> Uso de Watch Windows en
Proteus.zip
Volver al ndice
Aunque no hemos visto el tema de las funciones todava, pero ya que estamos
utilizando esta funcin muy a menudo, vamos a ver alguna de las posibilidades que nos
ofrece. El que tenga conocimientos del lenguaje C sabr que para utilizar esta funcin
que pertenece al estndar ANSI de C hay que incluir previamente el archivo de
cabecera #include <stdio.h>, pero esto con el compilador PCW de CCS no funciona, en
este compilador esta funcin est definida en la directiva:
#use RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_B1,RCV=PIN_B2)
Esto quiere decir que cada vez que queramos utilizar la funcin printf tenemos que
haber incluido previamente esta directiva, que posibilita la comunicacin del PIC con
otro dispositivo utilizando el protocolo de comunicacin serie RS232, adems de la
funcin printf esta directiva permite el uso de otras funciones para la entrada y salida de
datos serie como: getc, getchar, gets, puts y kbhit que iremos viendo poco a poco, pero
la ms importante para la salida de datos sin duda es printf, porque nos permite
formatear la salida de esos datos de la forma que nosotros queramos.
Como vemos la directiva #use RS232 admite una serie de parmetros que son los que
van entre parntesis separados por comas, estos son los siguientes:
XMIT est opcin nos configura porque patilla del PIC saldrn los
datos, est opcin junto con la siguiente s que la tendremos que
cambiar a nuestras necesidades.
RCV nos configura porque patilla del PIC se recibirn los datos. En el
ejemplo, los datos se transmiten por el PIN RB1 y se reciben por RB2.
Como vemos la funcin printf tambin admite parmetros que podremos utilizar para
formatear el texto de salida. Vamos a ver cules son:
1 Ejemplo:
#include <16F877.h>
#use delay(clock=4000000)
#include <LCD.C>
#use RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_B1,RCV=PIN_B2)
void main()
{
int i1=9;
lcd_init(); //funcin de inicializacin del LCD
//Mostramos una cadena en la terminal
printf("Esto es una cadena\r");
//Mostramos una cadena de texto junto con el valor de una variable
//en la terminal.
printf("El valor de la variable i1 es: %d",i1);
//Mostramos el valor de la variable por el LCD
printf (lcd_putc,"El valor de i1 es: %d",i1);
Comentario:
En este primer ejemplo vamos a ver el uso de la funcin printf utilizando diferentes
parmetros. Como vamos a utilizar la librera que incluye el compilador para el manejo
de un LCD tenemos que incluir la directiva:
#include <LCD.C>
Declaramos una variable i1 de tipo entero que nos va a servir para mostrar su valor en
la terminal y en un LCD.
Cuando utilicemos la librera LCD.C y antes de utilizar cualquier otra funcin incluida
en la librera tenemos que llamar a la siguiente funcin que sirve para inicializar el
LCD.
lcd_init();
En la primera llamada a la funcin printf como parmetros solo incluimos una cadena
de caracteres constante que termina en (\r), esa barra invertida junto con la r se le llama
secuencia de escape y le est diciendo al compilador que al final de la cadena
introduzca un retorno de carro (tecla enter). Las secuencias de escape se utilizan para
representar caracteres o acciones especiales.
En la tabla de abajo se muestran las secuencias de escape que tenemos disponibles para
utilizar con la funcin printf:
\r
Retorno de carro
\t
Tabulador
\'
Comilla simple
\"
Comillas dobles
\\
Barra invertida
\?
Smbolo de interrogacin
\0
Caracter nulo
Retroceder un caracter
En este caso tampoco est definido el primer parmetro, por tanto, al igual que en la
primera llamada a la funcin, los datos se enviaran por el puerto serie al pin que
hayamos definido en la directiva #use RS232, en esta llamada vemos que tenemos la
cadena de caracteres limitada por las comillas dobles y separado por una coma, como
tercer parmetro el nombre de la variable i1 que habamos declarado previamente. En la
cadena de caracteres vemos que aparece el carcter de % seguido de la letra d, ese es un
carcter especial para la funcin y lo que le indica a la funcin es que en esa posicin
muestre el valor de la variable i1, la d le indica a la funcin que represente ese valor en
formato de nmero entero. Podemos representar el valor de la variable en diferentes
formatos segn se muestra en la tabla de abajo:
c
Caracter
Cadena caracter
Ejemplo:
Pues bien ahora la funcin printf no enviar los datos al puerto serie, sino a la funcin
lcd_puct que ser la encargada de envirselos al LCD, esta funcin por defecto enva
los datos al puerto D del PIC, pero accediendo a la librera se puede modificar el puerto
fcilmente.
2 Ejemplo
El carcter (A) sale en la terminal en una lnea diferente cada vez que se
imprime, eso es debido a la secuencia de escape (\r) utilizada.
Observar que el ejemplo se ha hecho sobre el PIC 16f84 que no dispone de una
USART hardware para la comunicacin serie , pero sin embargo el programa se
ha ejecutado correctamente, eso es debido a que la comunicacin serie se ha
establecido por software por medio de las libreras implementadas en el
compilador PCW.
Volver al ndice
Vamos a continuar con las funciones disponibles en CCS para la entrada y salida de
datos a travs del puerto serie RS-232. Hasta ahora solo hemos visto que con la funcin
printf(), podemos enviar datos formateados a travs del pin que hayamos seleccionado
en la directiva:
#use RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_D1,RCV=PIN_D2)
En este caso los datos saldrn por el pin RD1 del PIC. Pero de que funciones
disponemos para recibir datos desde fuera hacia nuestro PIC?. El que haya programado
en C echar de menos la funcin scanf() definida en la librera stdio.h y perteneciente al
estndar ANSI C. Pero desgraciadamente esa funcin tampoco est disponible en CCS.
Pero tampoco hay por qu preocuparse mucho, porque disponemos de otras. En este
caso vamos a ver las funciones: getc(), getch() y getchar(). Las tres hacen lo mismo por
lo que podemos usarlas indistintamente.
Estas funciones esperan un carcter por la patilla del PIC que hayamos definido en la
directiva #use RS232 con el parmetro RCV. En el caso del ejemplo de arriba, los datos
Pues vamos a ver nuestro primer ejemplo acerca del uso de estas funciones:
Comentario:
ch=getch()
Que esperar hasta que pulsemos una tecla y almacenar su valor en la variable ch.
La siguiente instruccin:
Despus se repite el proceso dos veces ms, pero esta vez utilizando
las funciones getc() y getchar()
Al utilizar solo la variable ch, el valor de la nueva tecla pulsada sobrescribir el valor
anterior de la variable.
Bien, hay que decir que el programa finalizar al llegar a la ltima sentencia incluida en
la funcin main(). Para que el programa termine cuando nosotros queramos tenemos
que incluir como mnimo un bucle y establecer una condicin para que podamos salir de
l, vamos a ver esto con otro ejemplo:
En este ejemplo se irn mostrando en la terminal las teclas que vayamos pulsando por el
teclado hasta que pulsemos la tecla n momento en el cual finalizar el programa.
Los cdigos fuentes de los ejemplos los tenis aqu.
Volver al ndice
Comentario
En este ejemplo se ha declarado un tipo de dato que todava no
hemos visto, un array de caracteres:
char nombre[9];
valor = nombre[0];
.. = ..[.];
valor = nombre[8];
Microcontroladores PIC
Microcont
Y obtendremos lo siguiente:
Consideraciones:
En C existe el concepto de memoria dinmica. La memoria dinmica
es aquella que se puede reservar y liberar en tiempo de ejecucin, es
decir, durante la ejecucin del programa se liberar y se asignar
memoria para optimizar los recursos de la CPU, para ello se dispone
de funciones como malloc() y free(). El compilador CCS tambin
admite este tipo de funciones, para utilizarlas debemos de incluir el
archivo de cabecera stdlibm.h, ya veremos un ejemplo sobre la
asignacin de memoria dinmica, si no utilizamos estas funciones la
reserva de memoria es esttica, es decir, si declaramos un array de
nueve elementos el compilador le reservar memoria contigua a dicho
array al compilar el programa en los registros de propsito general
(GPR). Esa memoria se reserva cuando el PIC empieza a ejecutar su
programa y permanece reservada hasta que desconectamos el PIC.
Con todo esto quiero decir que tenemos que tener siempre claro de la
memoria RAM de que disponemos, segn el modelo de
microcontrolador que utilicemos en nuestro proyecto, si no lo sabes
consulta el data sheet del PIC que ests utilizando. Por ejemplo si en
el PIC del ejemplo que hemos hecho (16f877) en vez de un array de
9 elementos declaramos uno de 100 elementos el compilador nos
mostrar el siguiente error al compilar:
Aunque existen algunas funciones ms para la entrada y salida de datos serie, las que
llevamos vistas hasta ahora son las ms importantes, as que el prximo da
empezaremos con los operadores, indispensables para hacer operaciones con los datos
que introduzcamos en nuestro programa.
Volver al ndice
Operador
Descripcin
Suma
Resta
Multiplicacin
Divisin
++
--
Operador
Descripcin
<
Menor que
>
Mayor que
<=
>=
==
Igual a
Distinto de
Operador
Descripcin
+=
-=
*=
/=
%=
<<=
>>=
&=
|=
^=
Operador
Descripcin
NO lgico
&&
Y lgico
||
O lgico
Operador
Descripcin
&
Y de bits (AND)
O de bits (OR)
>>
Desplazamiento a la derecha
<<
Desplazamiento a la izquierda
Operador
Descripcin
&
Operador de direccin
Operador de indereccin
->
Ejemplo:
~expr
++expr
expr++
--expr
(type)expr
*expr
&value
sizeof(type)
expr*expr
expr/expr
expr%expr
expr+expr
expr-expr
expr<<expr
expr>>expr
expr<expr
expr<=expr
expr --
expr>expr expr>=expr
value+=expr value-=expr
value*=expr
value/=expr
value%=expr
value|=expr
expr,expr
4. z-e
Nota: Es aconsejable el uso de parntesis para evitar errores
en la precedencia de operadores, adems el cdigo fuente
queda ms legible.
Ejemplo:
a*(b+c)+d
En este caso el orden en realizarse las operaciones ser el
siguiente:
1. b+c resultado = x
2. a*x resultado = y
3. y+d
sizeof(type)--> nos da el tamao en bytes del tipo de dato
variable que le pongamos entre los parntesis.
Para conocer bien los resultados que se obtienen al utilizar cada
uno de los operadores, lo mejor es practicar con ellos. Vamos a
ver un ejemplo donde se muestra el uso de algunos de ellos:
Para saber el rango de valores admisible por cada funcin repasa los
tipos de datos
\xa0
\x82
\xa1
\xa2
\xa3
\xb5
\x90
\xd6
\xe0
\xe9
\xa4
\xa5
\xa8
Volver al ndice
SENTENCIAS REPETITIVAS:
Evala la expresin.
Comentario
El ejemplo lo que hace es mostrar en la terminal la tabla de
multiplicar del nmero cuatro, utilizando un bucle while. Para ello
necesitamos declarar una variable auxiliar de tipo entero llamada i1,
inicializada con el valor de 1, en cada iteracin se comprueba el valor
de la variable auxiliar, mientras el valor de i1 sea <=10 la evaluacin
ser verdadera y se ejecutarn las instrucciones que hay dentro del
bloque while, dentro de ese bloque tenemos que incrementar el valor
de i1, de esta manera nos aseguramos en algn momento la salida
del bucle, cuando i1 llegue a 11 la condicin ser falsa y la secuencia
del programa saltar a la lnea 19 finalizando el programa.
Comentario
true es una constante booleana que equivale a 1 verdadero. Por tanto la evaluacin del
bucle siempre ser cierta y no habr manera del salir de l. El programa estar siempre
esperando a que pulses una tecla y mostrar el valor de la tecla pulsada en la terminal.
Volver al ndice
Bucle for()
Comentario
1 bucle for:
2 bucle for
Bucle for con varias variables de control, las variables tienen que ir
separadas por comas. En este caso tenemos las variables x e y,
aunque podemos poner todas las que queramos, ambas variables son
inicializadas dentro de la sentencia for.
3 bucle for
Cuando el bucle for se escribe sin cuerpo sirve por ejemplo para
generar retardos, esta posibilidad la utilizaremos poco con este
compilador ya que incluye funciones especficas de retardo.
4 bucle for
5 bucle for
Un saludo
Volver al ndice
Bucle do-while()
Comentario
Fijaros en la orden if que aparece dentro del cuerpo del bucle. Esto se
permite porque las estructuras de control se pueden anidar unas
dentro de otras.
Volver al ndice
If
if (x=1)
printf(Sin llaves solo una sentencia asociada al if);
Volver al ndice
Sentencia IfElse
Ejemplo:
Comentario
Este ejemplo visualiza en el display de ctodo comn, conectado a la
puerta B del PIC, el 0 si el interruptor conectado a RA0 est abierto
y 1 si est cerrado, para ello utiliza la sentencia if-else, dentro de
un bucle infinito para que el programa est siempre chequeando el
estado de la patilla RA0.
Volver al ndice
Sentencia switch
Comentario
Hola a todos, el curso se estaba haciendo demasiado grande para estar contenido dentro
de un solo artculo, cada vez me resultaba ms difcil editarlo para incluir nuevos
temas, por lo que he decidido dividirlo en varios artculos, para seguir un orden lgico
del curso lo podis hacer a travs del ndice.