presentación Mikro C
Transcript of presentación Mikro C
MikroC
Cuando abrimos el compilador
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
2
Ejemplo por defecto
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
3
Cerramos el proyecto defecto
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
4
Nuevo proyecto
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
5
Opciones del Nuevo Proyecto
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
6
Palabra de ConfiguraciónP16f877
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
7
En caso de querer modificar la configuración después
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
8
Listos para Programar
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
9
Apariencia
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
10
Al gusto: MikroDream, MrGreen o Zedar
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
11
Ambiente
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
12
EN LA NUEVA VERSIÓN LAS HHERAMIENTAS SE SELECCIONAN DESDE MENÚ VIEW
Comentarios
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
13
Code explorer
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
14
Ventana de error
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
15
Depurador
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
16
Atajos
Si al escribir queremos completar una palabra automáticamente oprimimos: y al seleccionar nuestra opción damos enter.
Por ejemplo:
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
17
Por ejemplo:
Herramientas
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
18
En la nueva V, para
En la nueva versión se debe empezar la depuración con F9 para hacer uso de estas herramientas
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
19
Herramientas
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
20
Compilación
Una vez creado el proyecto y escrito el código se puedo compilar con:
Ctrl + F9
Run › Compile
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
21
Archivos que arroja MikroC
Si quieres ver el código en ensamblador puedes usar Project › View Assembly o el ícono
Algunas Librerías
ctype math stdlib string
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
22
Variables
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
23
Ejemplo de Variables
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
24
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
25
Operadores
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
26
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
27
Sentencias de Control
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
28
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
29
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
30
Continue y breake
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
31
Mezclando con ensamblador
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
32
Manejo de Puertos
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
33
PORTB.F0 = 0;
Ejemplo
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
34
Ejemplo
Contador continuo que saca su valor por el puerto B
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
35
Ejercicios Rápidos
� Un programa que ponga 0x00 1s luego 0xFF 1s y repita esa tarea 25 veces
� Un programa que calcule el volumen de un cilindro con radio 2.5cm y altura de 10cm
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
36
altura de 10cm
� Que cree un arreglo de 10 elementos tipo char, que solicite que el usuario lo llene a través de un dip sw conectado al puerto D, el valor entrará cada que oprima un push que se encuentra en el Puerto B.0. Al llenar el arreglo, el programa debe desplegar en binario el valor del elemento más grande por lo leds que se encuentran conectados al puerto C.
� Del arreglo anterior, que multiplique por 5 cada elemento del arreglo.
� Calcula el valor de z al final de cada bucle
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
37
Funciones
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
38
� Escriba una fn que pida valores en centímetros de hasta 8 bits por el puerto C y calcule el Área de un círculo, y otra para el volumen de un cilindro.
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
39
Funciones útiles
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
40
Interrupciones
Las interrupciones se manejan como una función y debe ser declarada y escrita por el programador con el nombre interrupt(). Los registros especiales importantes (STATUS, PCLATH Y W) son salvados automáticamente por MikroC.
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
41
Teclado
void Keypad_Init(unsigned *port); Keypad_Init(&PORTB);
unsigned short Keypad_Read(void); kp = Keypad_Read();
Consulta sin una tecla fue oprimida. La función regresa un valor entre 1 y 16
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
42
unsigned short Keypad_Released(void); kp = Keypad_Released();
Llama a la funcióan Keypad_Read, pero no regresa ni realiza otra tarea hasta que se oprima una tecla, La función regresa un valor entre 1 y 16
Se recomienda el uso de interrupciones con el teclado
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
43
USART (Trabaja asíncorno)
void Usart_Init(const unsigned long baud_rate); Usart_Init(9600);
Consulta si el buffer de lectura está listo para ser leído
unsigned short Usart_Data_Ready(void);
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
44
unsigned short Usart_Read(void);int receive; ... if (Usart_Data_Ready()) receive = Usart_Read();
void Usart_Write(unsigned short data);
int chunk = 0x1E; Usart_Write(chunk); /* Envía chunk por USART */
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
45
ADC
unsigned Adc_Read(unsigned short channel); Inicializa el ADC utilizando el RC interno, ajusta el resultado a la derecha y hace la medición del canal indicado en el parámetro.
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
46
Previo a usar esta función se deben configurar TRISA y TRISE como entrada en los canales analógicos que se quieran usar, también se deben seleccionar mediante ADCON1 los pines que serán analógicos y los que serán digítales así como Vref+ y veref-.
unsigned tmp;
...
tmp = Adc_Read(1);
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
47
EEPROMunsigned short Eeprom_Read(unsigned int address);
unsigned short take;
...
take = Eeprom_Read(0x3F);
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
48
void Eeprom_Write(unsigned int address, unsigned short data);
Eeprom_Write(0x32, 19);
Se sugiere dejar pasar 20ms entre escrituras.
FLASH
unsigned Flash_Read(unsigned address);
unsigned tmp;...tmp = Flash_Read(0x0D00); ...
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
49
...
void Flash_Write(unsigned address, unsigned int* data); unsigned short A=0xBB; ... Flash_Write(0x1234, &A);
Sound
void Sound_Init(unsigned *snd_port, unsigned snd_pin);
Sound_Init(&PORTB, 2);
void Sound_Play(unsigned freq_in_hz, unsigned duration_ms);
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
50
void Sound_Play(unsigned freq_in_hz, unsigned duration_ms);
Sound_Play(1000, 100);
Freq_max = Fosc/(80*3)
Freq_min = Fosc/(80*255).
LCD
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
51
LCD 4 bits personalizadoLcd_Custom_Config
Inicializa el bus de datos y de control del LCD (asigna los pines)
void Lcd_Custom_Config(char * data_port, char db3, char db2, char db1,char db0, char * ctrl_port, char rs, char ctrl_rw, char enable);
Ejemplo : Lcd_Custom_Config(&PORTD,3,2,1,0,&PORTB,2,3,4);
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
52
Ejemplo : Lcd_Custom_Config(&PORTD,3,2,1,0,&PORTB,2,3,4);
Nota: MikroC configura el pin RW como salida y sacando 0,por lo que si se quiere utilizar para otra aplicación se debereconfigurar despues de usar la función de inicialización
Lcd_Custom_Out
Imprime en el LCD, se le debe indicar el renglón, la columna y el texto a imprimir
void Lcd_Custom_Out(char row, char col, char *text);
Ejemplo: Lcd_Custom_Out(1, 3, “Arquitectura");
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
53
Ejemplo: Lcd_Custom_Out(1, 3, “Arquitectura");
Lcd_Custom_Out_Cp
Imprime en el LCD, en la posición actual del cursor
void Lcd_Custom_Out_Cp(char *text);
Ejemplo: Lcd_Custom_Out_Cp(“Arquitectura");
Lcd_Custom_Chr
Imprime un carácter en el reglón y columna indicados
void Lcd_Custom_Chr(char row, char col, char character);
Ejemplo: Lcd_Custom_Chr(2, 3, ‘A');
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
54
Lcd_Custom_Chr_Cp
Imprime un carácter en La posición actual del cursor
void Lcd_Custom_Chr_Cp(char character);
Ejemplo: Lcd_Custom_Chr_Cp(‘A');
Lcd_Custom_Cmd
Envía un comando al LCD
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
55
void Lcd_Custom_Cmd(char out_char);
Ejemplo : Lcd_Custom_Cmd(Lcd_Clear);
Limpia la pantalla
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
56
LCD de 4 bits automáticoLcd_Init
Inicializa en el puerto especificado al LCD
void Lcd_Init(unsigned short *port);
Ejemplo: Lcd_Init(&PORTB);
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
57
Ejemplo: Lcd_Init(&PORTB);
Nota: todas las funciones anteriores funcionanigual que las personalizadas, a diferencia de quetrabajan con el puerto indicado, se declaran igualsólo que sin la palabra custom
Lcd_Out(1, 3, “Arquitectura");
Lcd_Custom_Out(1, 3, “Arquitectura");
LCD a 8 bitsLcd8_Config
Indica los puerto a utilizar y a qué pines van ase los de control y de datos
void Lcd8_Config(unsigned short *ctrlport, unsigned short *dataport, unsigned short RS, unsigned short EN, unsigned short WR, unsigned short D7, unsigned short D6, unsigned short D5, unsigned short D4, unsigned short D3, unsigned short D2,
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
58
unsigned short D4, unsigned short D3, unsigned short D2, unsigned short D1, unsigned short D0);
Ejemplo: Lcd8_Config(&PORTC,&PORTD,0,1,2,6,5,4,3,7,1,2,0);
Lcd8_Init
Inicializa el LCD a 8 bits con los pines por defecto
void Lcd8_Init(unsigned short *portctrl, unsigned short *portdata);
Ejemplo: Lcd8_Init(&PORTB, &PORTC);
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
59
Ejemplo: Lcd8_Init(&PORTB, &PORTC);
Lcd8_Out(1, 3, “Arquitectura");
Lcd8_Out_Cp(“Arquitectura");
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
60
Lcd8_Chr(2, 3, ‘A');
Lcd8_Chr_Cp(‘A');
Lcd8_Cmd(Lcd_Clear);
Diagrama a 4 bits
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
61
Diagrama a 8 bits
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
62
Posible solución para ahorrar memoria RAM
Escribir los mensajes en FLASH a 16 caracteres
const char *msg1=“Arquitectura de ";
const char *msg2=“ Computadoras ";
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
63
Escribir una rutina que transfiera las cadenas de Flash a un arreglo en RAM
// --- Copia constantes de FLASH a la RAMvoid strConstCpy(char *dest, const char *source){while(*source)*dest++ = *source++ ;*dest = 0 ;}
Utilizar la función anterior antes de mandar textos por LCD
// --- inicilización del LCDLcd8_Config(&PORTC,&PORTB,7,6,5,7,6,5,4,3,2,1,0);
unsigned char texto[16];…
05/03/2012 Compilador MikroC. Prof. David Arturo Gutiérrez Begovich
64
strConstCpy(texto,msg1); //MENSAJE: Arquitectura deLcd8_Out(1, 1,texto);
strConstCpy(texto,msg2); //MENSAJE: ComputadorasLcd8_Out(2, 1,texto);
delay_ms(2500);Lcd8_Cmd(Lcd_Clear);