Gubbe
Gubbe
Tjena! Håller på med en uppgift där jag ska göra en gubbe som vandrar på LCDn. Gubben har jag fixat. Men problemet är att den ska gå till slutet av displayen och sen stanna där. Jag kör PicBasic med en 16F877.
Såhär långt har jag kommit:
DEFINE LOADER_USED 1
' LCD registers and bits
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTE
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTE
DEFINE LCD_EBIT 1
ADCON1 = 7
Low PORTE.2
' custom characters
LCDOut $FE, 64, $8e, $8e, $84, $8e, $95, $84, $8a, $91
LCDOut $FE, 1
loop:
LCDOut $00
LCDOut $FE, $14
Pause 500
GoTo loop
End
Undrar om någon vänlig själ kan hjälpa mig med detta?
Mvh
//Mathias
Såhär långt har jag kommit:
DEFINE LOADER_USED 1
' LCD registers and bits
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTE
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTE
DEFINE LCD_EBIT 1
ADCON1 = 7
Low PORTE.2
' custom characters
LCDOut $FE, 64, $8e, $8e, $84, $8e, $95, $84, $8a, $91
LCDOut $FE, 1
loop:
LCDOut $00
LCDOut $FE, $14
Pause 500
GoTo loop
End
Undrar om någon vänlig själ kan hjälpa mig med detta?
Mvh
//Mathias
Kanske inte är så här Hedis tänker men detta borde funka ändå.
Deklarera en variabel, sätt in den i loopen så att den plussas på med ett för varje loop, använd en vilkorssats för att kolla när variabeln nått något värde, avsluta då programmet.
T ex:
Deklarera en variabel, sätt in den i loopen så att den plussas på med ett för varje loop, använd en vilkorssats för att kolla när variabeln nått något värde, avsluta då programmet.
T ex:
Kod: Markera allt
LOOP:
IF kalle = 10 THEN
END
ENDIF
LCDOut $00
LCDOut $FE, $14
PAUSE 500
kalle = kalle + 1
GoTo LOOP
Nu kan jag inte basic´n men i asm så blir det ungefär såhär:
Kod: Markera allt
main:
ldi step,$00 ; laddar step med 0
right:
cpi step,20 (om du vill bryta efter 20 steg) ;Jämnför step med 20
inc step ; Ökar step med 1
breq main ; Om steg var 20 så hoppa till main
*rutinen som hoppar åt höger* ;Din rutin för att flytta gubben ett steg åt höger
rjmp loop
Fan nu funkar inget.. Hur deklarerar man en variabel? typ såhär: "kalle VAR BYTE" ??jack skrev:Kanske inte är så här Hedis tänker men detta borde funka ändå.
Deklarera en variabel, sätt in den i loopen så att den plussas på med ett för varje loop, använd en vilkorssats för att kolla när variabeln nått något värde, avsluta då programmet.
T ex:
Kod: Markera allt
LOOP: IF kalle = 10 THEN END ENDIF LCDOut $00 LCDOut $FE, $14 PAUSE 500 kalle = kalle + 1 GoTo LOOP
Såhär ser det ut nu:
Var ska jag lägga rensningen?
Kod: Markera allt
DEFINE LOADER_USED 1
' LCD registers and bits
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTE
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTE
DEFINE LCD_EBIT 1
gubbe VAR BYTE
ADCON1 = 7
Low PORTE.2
' custom characters
gubbe = 0
LCDOut $FE, 64, $8e, $8e, $84, $8e, $95, $84, $8a, $91
LCDOut $FE, 1
LOOP:
IF gubbe = 10 Then End
LCDOut $00
LCDOut $FE, $14
Pause 500
gubbe = gubbe +1
GoTo LOOP
End