Hi Again;
I made this code, however is not working like i wont, only sometimes, can somebody tell me why;
Code:
'*********************************************************************
' INCLUDE's e FUSES
' ====================================================================
DEFINE OSC 4
' CONFIGURAÇÃO DAS INTERRUPÇÕES
' ====================================================================
' VARIÁVEIS
' ====================================================================
VAR1 var byte
VAR2 var byte
I var byte
var1=0
var2=0
' REGISTOS PINOUT 1 = IN; 0 = OUT
' ====================================================================
'76543210
TRISA = %00000001
TRISB = %00000000
TRISC = %10000000
TRISD = %00000000
TRISE = %00000000
ADCON1 = 7
' NOMES PINOUT
' ====================================================================
LED1 VAR PORTC.0
LED2 var PORTD.0
Botao var PORTA.0
' DEFINIÇÕES
' ====================================================================
DEFINE LCD_DREG PORTB ' LCD Data bits on PORTB
DEFINE LCD_DBIT 0 ' PORTB starting address
DEFINE LCD_RSREG PORTB ' LCD RS bit on PORTB
DEFINE LCD_RSBIT 4 ' LCD RS bit address
DEFINE LCD_EREG PORTB ' LCD E bit on PORTB
DEFINE LCD_EBIT 5 ' LCD E bit address
DEFINE LCD_BITS 4 ' LCD in 4-bit mode
DEFINE LCD_LINES 2 ' LCD has 2 rows
DEFINE LCD_COMMANDUS 2000 ' Set command delay time in us
DEFINE LCD_DATAUS 50 ' Set data delay time in us
' INICIO PROGRAMA
' ====================================================================
low led1
low lED2
LCDOUT $fe, 1
lcdout " Teste Botoes "
lcdout $FE,$C0," Por Hugo Oliveira "
Main:
if botao = 1 then 'Button presse
pause 80 'debounce for 80ms
If Botao = 0 then BotaoClick 'Button Unpressed -> Only Click
else
if Botao = 1 then 'Button Still pressed
for i = 1 to 6
pause 486
If Botao = 0 then Main 'Test if was unpressed in the mean while
next
If Botao = 1 then BotaoClickHold 'IF Still pressed after 3s -> Click&Hold
endif
endif
GOTO MAIN
' SUB-ROTINAS
' ====================================================================
BotaoClick:
if var1 = 0 then
high led1
var1 = 1
pause 500
else
low led1
var1 = 0
pause 500
endif
Goto Main
BotaoClickHold:
if var2 = 0 then
high led2
var2 = 1
pause 500
else
low led2
var2 = 0
pause 500
endif
Goto Main
END
Thanks
Bookmarks