Preciso de uma ajuda, o pic fica travando quando carrego na botão.
No exemplo estou usando um contador, cada vez que primo o botão faz a soma, mas trava sempre.
O código:
- Código: Selecionar todos
'Pic 16f84A
INCLUDE "MODEDEFS.BAS"
DEFINE OSC 4
Define CONF_WORD 0x3ff1
Define CLOCK_FREQUENCY 4
DEFINE I2C_SCLOUT 1
DEFINE BUTTON_PAUSE 50
'-------------------------------------Puertos del LCD-----------------------------------------------
' Set LCD Data port
DEFINE LCD_DREG PORTB
' Set starting Data bit (0 or 4) if 4-bit bus
DEFINE LCD_DBIT 4
' Set LCD Register Select port
DEFINE LCD_RSREG PORTB
' Set LCD Register Select bit
DEFINE LCD_RSBIT 1
' Set LCD Enable port
DEFINE LCD_EREG PORTB
' Set LCD Enable bit
DEFINE LCD_EBIT 0
' Set LCD bus size (4 or 8 bits)
DEFINE LCD_BITS 4
' Set number of lines on LCD
DEFINE LCD_LINES 2
'-----------------------------------Puerto I2C-----------------------------------------------------
Symbol sda = PORTA.2 'asignamos nombre al pin que hara de SDA del puerto I2C
Symbol scl = PORTA.3 'asignamos nombre al pin que hara de SCL del puerto I2C
symbol button1 = PORTA.0
'***********************************DEFINICION DE VARIABLES**************************************
'--------------------------------------Variables Programa----------------------------------------
addr var byte[7]
data1 var byte
escribe var byte
sec var Byte
min1 var Byte
hour var Byte
day var Byte
daym var Byte
month var Byte
year var Byte
d_hi var Byte
d_lo var Byte
DB0 var byte[8]
x var byte
conta vAR BYTE
b0 var byte
pause 100
LOW PORTA.0
conta=0
LOW PORTA.0
'****** inicio do ciclo *******
mainloop:
if button1=1 then
LOW PORTA.0
conta=conta+1
LOW PORTA.0
button1=0
else
I2CREAD sda,SCL,$d0,0,[sec,min1,hour,daym,day,month,year] ' in bcd code
endif
lcdout $fe,1,"Hora: ",hex2 hour,":",hex2 min1,":",Hex2 sec
lcdout $fe,$c0,"CONTA: ",DEC2 conta
pause 400
goto mainloop 'Ciclo
end
O esquema:

Isto é um teste. a ideia é criar um contador para acertar o relógio. Mas um simples contador tá travado o mini projecto. Porquê?