Postat: 13 maj 2005, 08:05:43
Det sista problemet måtte vara problem RST, eller hemska tanke att det är fel på din krets! Hur ser programmet ut i picen då ?
Svenskt forum för elektroniksnack.
https://elektronikforumet.com/forum/
Kod: Markera allt
DEFINE LOADER_USED 1
INCLUDE "MODEDEFS.BAS" ' Include Shiftin/out modes
' Define LCD pins
DEFINE OSC 4
DEFINE LCD_DREG PORTA
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 4
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50
tmp VAR BIT 'Tmp är räknaren
knapp VAR PORTB.5 'Knappen på portb.5
RST VAR PORTB.0
IO VAR PORTB.2
SCLK VAR PORTB.1
' Allocate variables
rtcyear VAR BYTE
rtcday VAR BYTE
rtcmonth VAR BYTE
rtcdate VAR BYTE
rtchr VAR BYTE
rtcmin VAR BYTE
rtcsec VAR BYTE
rtccontrol VAR BYTE
TRISB.5 = 1
tmp = 1
Pause 500 'Wait for LCD to wake up
LCDOut $FE, 1 'Initiate LCD by clearing display
Pause 500 'Wait for LCD to initiate
LCDOut $FE, 64, $84, $8e, $8e, $84, $8e, $9b, $9b, $91
Low RST ' Reset RTC
Low SCLK
Pause 500
' Set initial time to 8:00:00AM 07/16/99
rtcyear = $05
rtcday = $18
rtcmonth = $03
rtcdate = $20
rtchr = $21
rtcmin = $53
rtcsec = 0
GoSub settime ' Set the time
GoTo mainloop ' Skip subroutines
' Subroutine to write time to RTC
settime:
RST = 1 ' Ready for transfer
' Enable write
ShiftOut IO, SCLK, LSBFIRST, [$8e, 0]
RST = 0 ' Reset RTC
RST = 1 ' Ready for transfer
' Write all 8 RTC registers in burst mode
ShiftOut IO, SCLK, LSBFIRST, [$be, rtcsec, rtcmin, rtchr, rtcdate, rtcmonth, rtcday, rtcyear,0]
RST = 0 ' Reset RTC
Return
' Subroutine to read time from RTC
gettime:
RST = 1 ' Ready for transfer
ShiftOut IO, SCLK, LSBFIRST, [$bf] ' Read all 8 RTC registers in burst mode
ShiftIn IO, SCLK, LSBPRE, [rtcsec, rtcmin, rtchr, rtcdate, rtcmonth, rtcday, rtcyear, rtccontrol]
RST = 0 ' Reset RTC
Return
' Main program loop - in this case, it only updates the LCD with the time
mainloop:
IF knapp = 1 Then '
IF tmp = 1 Then '
tmp = 2 '
Else 'Antingen etta eller nolla vid knapptryckning
tmp = 1 '
EndIF '
EndIF '
IF tmp = 0 Then
LCDOut $FE, 1, 14, 14, 14, 14, $00, "Mitsubishi" 'Om Tmp är 0 "Mutiaz"
LCDOut $00
LCDOut $FE, $C0, 14, 14, 14, "Eclipse Racing"
LCDOut $FE, $94, "Driver: M.Ljungberg"
LCDOut $FE, $D4, 14, 14, 14, 14, 14, 14, $00, "SWEDEN", $00
Pause 250
EndIF
IF tmp = 1 Then
GoSub gettime ' Read the time from the RTC
' Display time on LCD
LCDOut $fe, 1, HEX2 rtcyear, "/", HEX2 rtcmonth, "/", HEX2 rtcdate, _
" ", HEX2 rtchr, ":", HEX2 rtcmin, ":", HEX2 rtcsec
Pause 300 ' Do it about 3 times a second
EndIF
GoTo mainloop ' Do it forever
End