TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: champilton en 13 de Mayo de 2014, 00:34:32
-
Hola a todos!!! antes que nada quisiera manifestar mi entera satisfaccion con este foro, pues he obtenido grandes resultados con las respuestas que se me dan al hacer mis preguntas ((:-))
pasando a mi interrogante, la cual no me deja dormir, he aqui un codigo que muestra en una LCD la tecla que se presiono en una keypad de 3x4:
#include <16f887.h>
#use delay(clock=4M)
#fuses INTRC_IO, NOWDT,NOPUT,NOMCLR,NOPROTECT,NOCPD,NOBROWNOUT,NOIESO,NOFCMEN,NOLVP
#include <lcd.c>
#include <kbd.c>
#use standard_io(B)
#byte WPUB=0x95
#byte OPTION_REG=0x81
void main()
{
char k;
WPUB=0xff;
OPTION_REG=0x00;
lcd_init();
kbd_init();
lcd_gotoxy(4,1);
printf(lcd_putc,"presiona");
while(true)
{
k=kbd_getc();
if(k!=0)
{
lcd_gotoxy(4,2);
printf(lcd_putc,"tecla: %c",k);
}
}
}
Este codigo me lo enseñaron en un curso hace un par de años, entiendo como funciona pero olvide que es lo que hacian dos comandos que aparecen alli y porque se les daba el valor que se les asignaba:
#byte WPUB=0x95
#byte OPTION_REG=0x81
WPUB=0xff;
OPTION_REG=0x00;
las dos primeras recuerdo que era algo de la direccion en la que estaban, y de hecho contienen esa direccion en el datasheet, sin embargo no recuerdo bien bien que eran, pero las que me tienen muy desorientados son las dos ultimas cuando se igualan a 0xff y a 0x00,
coloco tambien la imagen de la simulacion (corriendo correctamente)
Espero me puedan ayudar a resolver mi duda. gracias!!!
-
el 0x95 no esta implementado en ese pic
#byte OPTION_REG=0x81
variable OPTION_REG va a tener la direccion en la ram 0x81 que en el pic es un registro especial llamado OPTION_REG que escribes con esto
OPTION_REG=0x00;
cumple la siguente funcion
7bit RBPU: PORTB Pull-up Enable bit
1 = PORTB pull-ups are disabled
0 = PORTB pull-ups are enabled by individual port latch values
bit 6 INTEDG: Interrupt Edge Select bit
1 = Interrupt on rising edge of RB0/INT pin
0 = Interrupt on falling edge of RB0/INT pin
bit 5 T0CS: TMR0 Clock Source Select bit
1 = Transition on RA4/T0CKI pin
0 = Internal instruction cycle clock (CLKOUT)
bit 4 T0SE: TMR0 Source Edge Select bit
1 = Increment on high-to-low transition on RA4/T0CKI pin
0 = Increment on low-to-high transition on RA4/T0CKI pin
bit 3 PSA: Prescaler Assignment bit
1 = Prescaler is assigned to the WDT
0 = Prescaler is assigned to the Timer0 module
bit 2-0 PS2:PS0: Prescaler Rate Select bits
Bit Value TMR0 Rate WDT Rate
000 1:1 1:2
en ese codigo solo lo usa para activar pull up del puerto B