Hola :
os pongo un fichero que hace lo que yo quiero, pero en C.
es de otro compradre murciano. os podeis bajar la documentacion completa aqui:
http://www.hobbypic.com/index.php?option=com_content&task=view&id=20&Itemid=39
se trata de un terrario. por cierto que no he podido simularlo, se resetea el micro constantemente...
sigo buscando el .asm
saludos.
--------------------
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///// MENU CON 3 BOTONES (T.OK, T.MAS, T.MENOS) /////
///// /////
///// En este programa se muestra el funcionamiento de un menú controlable /////
///// mediante tres pulsadores, tecla ok, tecla mas, tecla menos;Se accede /////
///// al menú atraves de la interrupción en la pata RB0(T.OK), y se sale /////
///// de el seleccionando la opción 0, o habiendo transcurridos 5 segundos /////
///// sin pulsar ninguna tecla.Se acompaña de una simulación en Proteus /////
///// para mostrar su funcionamiento, en condiciones normales no haría /////
///// falta utilizar el WDT, pero si para su correcto funcionamiento en /////
///// Proteus /////
///// /////
///// por: Jaime Fernández-Caro Belmonte /////
///// /////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#include <18F2520.h>
#fuses WDT1024, XT, NOPROTECT, BROWNOUT, BORV45, NOPUT, NOCPD
#fuses NOSTVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOIESO, NOFCMEN, NOPBADEN
#fuses NOWRTC, NOWRTB, NOEBTR, NOEBTRB, NOCPB, NOLPT1OSC, MCLR, NOXINST
#use delay(clock=4000000)
#byte pb =0xF81
#bit t_ok =pb.0 // RB0, pin21
#bit t_mas =pb.1 // RB1, pin22
#bit t_mns =pb.2 // RB2, pin23
#byte intcon =0xFF2
#bit intf =intcon.1
#include <lcd420.h>
#include <menu.h>
void main()
{
port_b_pullups(true);
setup_adc_ports(NO_ANALOGS);
setup_wdt(WDT_ON);
lcd_init();
intf=0;
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
while(true)
{
restart_wdt();
lcd_gotoxy(1,1);
printf(lcd_putc,"Prueba Menu");
}
}