Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <16F877A.h>
- #fuses XT,NOWDT
- #use delay(clock= 4000000)
- #include <lcd.c>
- #use standard_io(C)
- #use standard_io(A)
- #use standard_io(B)
- #use standard_io(D)
- enum funciones {med,cal,ini}; //Asigna un valor a cada elemento
- //med=0, cal=1 e ini=2
- void medir(void){ //Función de medir
- //algoritmo correspondiente
- output_toggle(pin_C0);
- }
- void calibrar(void){ //Función de calibrar
- //algoritmo correspondiente
- output_toggle(pin_C1);
- }
- void inicializar(void){ //Función de inicializar
- //algoritmo correspondiente
- output_toggle(pin_C2);
- }
- void run_func(int numfunc){ //Asignación de la función a realizar
- //viene dada por la variable "item"
- switch(numfunc) {
- case med:
- medir();
- break;
- case cal:
- calibrar();
- break;
- case ini:
- inicializar();
- break;
- }
- }
- void main() {
- char item = 0; //Variables de funciones
- char n_menus = 3; //Número de funciones
- // bit_set(TRISA,0);
- lcd_init();
- while(1) {
- if (input(PIN_A0) == 1) { //Detecta botón de selección
- item++; //Si pulsa aumenta la variable
- delay_ms(300); //Para evitar rebotes
- lcd_putc('\f'); }
- if (item > (n_menus-1)) { //Si la variable supera el número de...
- item = 0; } //funciones la inicializa
- switch (item) {
- case 0:
- lcd_gotoxy(1,1);
- printf(lcd_putc, "MEDIR");
- lcd_gotoxy(1,1);
- break;
- case 1:
- printf(lcd_putc, "CALIBRAR");
- lcd_gotoxy(1,1);
- break;
- case 2:
- printf(lcd_putc, "INICIALIZAR");
- lcd_gotoxy(1,1);
- break;
- }
- if (input(PIN_A1) == 1) //Si se pulsa el botón de selección
- {delay_ms(200);
- run_func(item);} //se llama a la función correspondiente
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement