-- Configuración de módulos del chip y fuses----------------------------------- include 18f4550 pragma target clock 48_000_000 pragma target PLLDIV P5 -- divide por 5 - 20MHZ_INPUT pragma target CPUDIV P2 -- OSC1_OSC2_SRC_1_96MHZ_PLL_SRC_2 pragma target USBPLL F48MHZ -- CLOCK_SRC_FROM_96MHZ_PLL_2 pragma target OSC HS_PLL pragma target FCMEN DISABLED pragma target IESO DISABLED pragma target PWRTE DISABLED -- power up timer pragma target VREGEN ENABLED -- USB voltage regulator pragma target VOLTAGE V20 -- brown out voltage pragma target BROWNOUT DISABLED -- no brownout detection pragma target WDTPS P32K -- watch dog saler setting pragma target WDT DISABLED -- no watchdog pragma target CCP2MUX pin_C1 -- CCP2 pin pragma target PBADEN DIGITAL -- digital input port<0..4> pragma target LPT1OSC LOW_POWER -- low power timer 1 pragma target MCLR EXTERNAL -- master reset on RE3 pragma target STVR DISABLED -- reset on stack over/under flow pragma target LVP DISABLED -- no low-voltage programming pragma target XINST ENABLED -- extended instruction set pragma target DEBUG DISABLED -- background debugging pragma target CP0 DISABLED -- code block 0 not protected pragma target CP1 DISABLED -- code block 1 not protected pragma target CP2 DISABLED -- code block 2 not protected pragma target CP3 DISABLED -- code block 3 not protected pragma target CPB DISABLED -- bootblock code not write protected pragma target CPD DISABLED -- eeprom code not write protected pragma target WRT0 DISABLED -- table writeblock 0 not protected pragma target WRT1 DISABLED -- table write block 1 not protected pragma target WRT2 DISABLED -- table write block 2 not protected pragma target WRT3 DISABLED -- table write block 3 not protected pragma target WRTB DISABLED -- bootblock not write protected pragma target WRTD DISABLED -- eeprom not write protected pragma target WRTC DISABLED -- config not write protected pragma target EBTR0 DISABLED -- table read block 0 not protected pragma target EBTR1 DISABLED -- table read block 1 not protected pragma target EBTR2 DISABLED -- table read block 2 not protected pragma target EBTR3 DISABLED -- table read block 3 not protected pragma target EBTRB DISABLED -- boot block not protected -- Configuro los pines de E/S -------------------------------------------------- enable_digital_io() -- Todos los pines como I/O digitales --Constantes a utilizar en el programa ----------------------------------------- const byte LCD_ROWS = 4 -- LCD de 4 lineas const byte LCD_CHARS = 20 -- y 20 caracteres por linea -- Variables a utilizar en el programa ----------------------------------------- var byte i = 0 -- Variables auxiliares para bucles -- Defino E/S relacionadas con el LCD alias lcd_en is pin_D2 -- Pin E del LCD alias lcd_rs is pin_D1 -- Pin RS del LCD alias lcd_dataport is portD_high -- 4 data pins portD_direction = all_output -- Todo el puerto D como salidas -- ...y lo inicializo: include lcd_hd44780_4 -- Incluyo la libreria del LCD lcd_init() -- e inicializo su controlador -- Cadenas a mostrar: var byte line1[LCD_CHARS] = "Probando libreria de" var byte line2[LCD_CHARS] = "JALv2 ( print.jal )" var byte line3[LCD_CHARS] = "www.ucontrol.com.ar " var byte line4[LCD_CHARS] = "Visualiza numeros en" var byte line5[LCD_CHARS] = " Decimal: " var byte line6[LCD_CHARS] = "Hexadecimal: " var byte line7[LCD_CHARS] = " Binario: " var byte line8[LCD_CHARS] = "Eso a sido todo. :)" -------------------------------------------------------------------------------- -- Incluyo librerías: -------------------------------------------------------------------------------- include delay -- Rutinas de demoras: include print -- Rutinas para mostrar valores en LCD ------------------------------------------------------------------------------- -- Comienza el programa en si ------------------------------------------------------------------------------- forever loop --Bucle principal ------------------------------------------------- lcd_clear_screen() -- Borro la pantalla ------------------------ Pantalla de bienvenida -------------------- lcd_cursor_position(0,0) --Coloco el cursor en su sitio... print_string(lcd, line1) --y linea correspondiente lcd_cursor_position(1,0) --Coloco el cursor en su sitio... print_string(lcd, line2) --y linea correspondiente lcd_cursor_position(3,0) --Coloco el cursor en su sitio... print_string(lcd, line3) --y linea correspondiente delay_100ms(50) --Espero cinco segundos... ------------------------ Pantalla de "trabajo" -------------------- lcd_clear_screen() -- Borro la pantalla lcd_cursor_position(0,0) --Coloco el cursor en su sitio... print_string(lcd, line4) --y linea correspondiente lcd_cursor_position(1,0) --Coloco el cursor en su sitio... print_string(lcd, line5) --y linea correspondiente lcd_cursor_position(2,0) --Coloco el cursor en su sitio... print_string(lcd, line6) --y linea correspondiente lcd_cursor_position(3,0) --Coloco el cursor en su sitio... print_string(lcd, line7) --y linea correspondiente -- y recorro un bucle de 0 a 255, mostrando los valores en tres -- bases diferentes (decimal, hexadecimal y binario). for 255 using i loop lcd_cursor_position(1,12) --Coloco el cursor en su sitio... print_word_dec(lcd, i) --y muestro el valor en decimal. lcd_cursor_position(2,12) --Coloco el cursor en su sitio... print_byte_hex(lcd, i) --y muestro el valor en hexadecimal. lcd_cursor_position(3,12) --Coloco el cursor en su sitio... print_byte_binary(lcd, i) --y muestro el valor en binario. delay_100ms(10-(i/30)) --Espero antes de pasar al siguiente.... end loop delay_100ms(20) --Espero dos segundos... ------------------------ Pantalla final ------------------------- lcd_clear_screen() -- Borro la pantalla lcd_cursor_position(0,0) --Coloco el cursor en su sitio... print_string(lcd, line1) --y linea correspondiente lcd_cursor_position(1,0) --Coloco el cursor en su sitio... print_string(lcd, line2) --y linea correspondiente lcd_cursor_position(2,0) --Coloco el cursor en su sitio... print_string(lcd, line3) --y linea correspondiente lcd_cursor_position(3,0) --Coloco el cursor en su sitio... print_string(lcd, line8) --y linea correspondiente delay_100ms(50) --Espero cinco segundos... end loop -- Fin del programa