Hola a Todos.. me dirijo a ustedes ya q Soy nuevo utilizando PIC, y he estado aprendiendo a hacer programas en mikrobasic, todo iva bien hasta me encontre el siguiente proyecto, el cual necesito ayuda de ustedes por favor:
Para este ejemplo se ha realizado un programa que muestra el valor cargado
en una variable a la cual hemos denominado “Dato”, y la cual podrá ser
incrementada al accionar el pulsador “P1” conectado en RB0; el valor de esta
variable también podrá decrecer al accionar el pulsador “P2” conectado en
RB1.
Los puertos han sido configurados de la siguiente manera:
• Puerto B: se configura como entrada ya que en los pines RB0 y RB1
estarán conectados los pulsadores P1 y P2.
• Puerto D: se configura como salida ya que éste será utilizado para el
control de la pantalla LCD.
La variable “Dato” ha sido inicializada con un valor cargado igual a 25. Para
aumentar o disminuir este valor, simplemente se pregunta si en RB0 o en RB1
hay un cambio de estado lógico. Adicionalmente se establecen dos
condiciones que se deben cumplir para que la variable pueda aumentar su
valor o disminuir:
• La primera condición al pulsar P1 para el incremento es: solo podrá ser
incrementado el valor cargado en la variable “Dato”, si ésta es menor
(“<”) a cincuenta (50).
• La segunda condición al pulsar P2 para disminuir el valor cargado en la
variable es: solo se podrá disminuir el valor cargado en la variable
“Dato” si ésta es mayor (“>”) a cero (0).
------Mi problema es q no logro que se refleje la variable dato en la LCD(en la imagen se puede observar q no aparece el valor de dato)---- entonces quisiera que me ayudaran a encontrar cual es mi error en el siguiente codigo.. Por Favoooor:
program proyecto_11_LCD_2_aumentar_1_y_disminuir_1
dim LCD_RS as sbit at portd.2
LCD_EN as sbit at portd.3
LCD_D4 as sbit at portd.4
LCD_D5 as sbit at portd.5
LCD_D6 as sbit at portd.6
LCD_D7 as sbit at portd.7
LCD_RS_Direction as sbit at TRISd.2
LCD_EN_Direction as sbit at TRISd.3
LCD_D4_Direction as sbit at TRISd.4
LCD_D5_Direction as sbit at TRISd.5
LCD_D6_Direction as sbit at TRISd.6
LCD_D7_Direction as sbit at TRISd.7
dim dato as byte
main:
trisd=0
portd=0
trisb= 255
portd=0
dato=25
inicio:
if portb.0=1 and (dato < 50) then
dato=(dato+1)
delay_ms(350)
else
if portb.1=1 and (dato > 0) then
dato=(dato-1)
delay_ms(350)
else
if portb.1=0 and (portb.0=0) then
dato=dato
end if
end if
end if
LCD_init()
LCd_cmd(_LCD_clear)
LCD_cmd(_LCD_cursor_off)
Lcd_out(1,1,"P1 Suma,P2 Resta")
Lcd_out(2,1,"Dato:")
Lcd_Chr(2, 8, dato)
end.