Sie sind auf Seite 1von 3

Hagamos un programa sencillo para empezar con los microcontroladores, en internet hay mucha informacion sobre la estructura y la programacion

de un PIC. La primera vez siempre te haces la pregunta por donde empezar, no es necesario que leas todo sobre la estructura y arquitectura de un PIC, pero si es importante saber mas adelante como trabaja. Te explico, cuando empece me informe mucho sobre la arquitectura interna del PIC, y si, es bastante informacion. Pero de toda la lectura solo recuerdo que el PIC tiene registros especiales y de proposito general, de la instruccion "movwf", y que cada instruccion en programacion(ensamblador) dura 4 ciclos de reloj(1 ciclo de reloj = 1/4 de la frecuencia del oscilador). y con los dias se aprende a utilizar el TMR0, el convertidor A/D, el modulo PWM, etc. Si te interesa esto, a medida que hagas pruebas y simulaciones, iras aprendiendo como funciona el micro y su arquitectura. Cualquier duda GOOGLE no se equivoca! Generemos un conteo de 0 a 9 en un display, a traves de PIC 16F84A.

Proteus 7.6 SP4 [ISIS]

mikroC v8.2

Te explico el codigo linea por linea: 1. Funcion principal del programa. 2. Declaramos un arreglo(contenedor) de 10 elementos(0 a 9). Te explico como generamos cada numero en el display. Ejempo: el numero "5", para generar este digito necesitamos en estado alto(1) los segmentos "a", "f", "g", "c", "d", y mandar a nivel bajo(0) los segmentos restantes.

Cuando declaramos un arreglo, dentro de los corchetes "[ ]" se coloca el numero de elementos que podra almacenar. No hay que pensar que el primer elemento del arreglo estar en "arreglo[1]". ERROR! El primer elemento del arreglo se almacena en "arreglo[0]" asi hasta "arreglo[9]". Ahora necesitamos guardar el dato "01101101", que calculamos para generar el digito "5". Creo que no es necesario la explicacion de la conversion de binario a hexadecimal. 0b01101101("0b" representacion binaria en mikroC) = 0x6D("0x" representacion hexadecimal en mikroC) Luego "conteo[5] = 0x6D". Y asi para cada digito. 3. Variable "i" que ocuparemos para recorrer el arreglo. Le asignamos el valor de 0. 4. Configuramos el microcontrolador para que el PuertoB trabaje como salida. 5. Una vez configurado como salida, ya podemos enviar datos al mismo. Enviamos 0 a todos los bits del puerto. 6. Bucle principal del programa.

7. Aqui viene lo bonito, enviamos al PuertoB el valor de cada digito para generarlo en el display. Recordemos la linea 3. La primera vez que entr al bucle principal enviaremos al PuertoB el valor de "conteo[0]". 8. Incrementamos en una unidad la variable "i". Despues de esta instruccin "i=1". 9. Con el display se puede formar nmeros y letras, en nuestro caso es un simple contador de 0 a 9. 10. Entonces cuando la variable "i" llegue a 10, le asignaremos nuevamente el valor de 0. 11. Generamos un retardo de un segundo. La instruccion "Delay_ms(k)" trabaja en milisegundos y con valores constantes. Luego de un segundo volvemos a la linea 7. Ahora les dejo a ustedes como podemos hacer para agregar un control de velocidad al proyecto. Conectar un Switch en RA0 y otro en RA1, y con ambos controlar que tan rapido avanza el contador. RA0 = 0 , RA1 = 0 -----> El retardo sea de 1 segundo RA0 = 1 , RA1 = 0 -----> El retardo sea de medio segundo(500 milisegundos) RA0 = 0 , RA1 = 1 -----> El retardo sea de 250 milisegundos RA0 = 0 , RA1 = 0 -----> El retardo sea de 100 milisegundos Nota: El valor "k" de "Delay_ms(k)" tiene que ser una costante, no puede ser una variable

Proteus 7.6 SP4[ISIS]

Das könnte Ihnen auch gefallen