To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
-
krzywobrody
- -
- Posty: 3
- Rejestracja: 07 lut 2008, 16:34
- Lokalizacja: rzeszów
Post
autor: krzywobrody » 07 lut 2008, 16:49
witam napisałem program na zegarek do AT89C2051, tylko mam taki problem ze nie mogę go uruchomić na Bascomie

gdzieś są błędy ale gdzie??? to już nie wiem
oto ten program:
Kod: Zaznacz cały
Dim K As Bit
Dim Pw As Bit
Dim Pn As Bit
Dim G As Byte
Dim M As Byte
Dim S As Byte
Dim Lp As Byte
Dim Ng As Byte
Dim Nm As Byte
Config Lcd = 16 * 1
Config Timer0 = Timer Gate = Internal , Mode = 1
Enable Interrupts
Enable Timer0
Declare Sub Wyswietlczas
Declare Sub Nastawzegar
On Timer0 Przerwaniet0
Sub Wyswietlczas
Cls
Pw = 1
If Pw = 1 Then
Pw = 0
Home
Lcd "czas:"
If G < 10 Then Lcd "0"
Lcd G ; ":"
If M < 10 Then Lcd "0"
Lcd M ; ":"
If S < 10 Then Lcd "0"
Lcd S
End If
Set P3.2
If P3.2 <> 0 Then Call Nastawzegar
End Sub
Sub Nastawzegar
Cls
Pn = 1
Ng = G
Nm = M
Waitms 255
Do
If Pn = 1 Then
Pn = 0
Home
Lcd "Ustaw czas:"
If Ng < 10 Then Lcd "0"
Lcd Nm
End If
Waitms 255
Set P3.1
If P3.1 = 0 Then
Incr Ng
Pn = 1
If Ng = 24 Then Ng = 0
End If
Set P3.0
If P3.0 = 0 Then
Incr Nm
Pn = 1
If Nm = 60 Then Nm = 0
End If
Set P3.2
K = 0
If P3.2 = 0 Then
G = Ng
M = Nm
S = 0
K = 1
End If
Loop Until K = 1
End Sub
Przerwaniet0:
Load Timer0 , 4150
Start Timer0
Incr Lp
If Lp = 15 Then
Lp = 0
Incr S
If S = 60 Then
S = 0
Incr M
If M = 60 Then
M = 0
Incr G
End If
End If
Call Wyswietlczas
End If
Return
dziękuje za pomoc
---------
Przeczytaj: https://forum.elportal.pl/viewtopic.php?t=5198 ZbeeGin
Ostatnio zmieniony 07 lut 2008, 17:53 przez
krzywobrody, łącznie zmieniany 1 raz.
-
ZbeeGin
Post
autor: ZbeeGin » 07 lut 2008, 17:51
krzywobrody pisze:gdzieś są błędy ale gdzie??? to już nie wiem
Kompilator wskazuje błędy składniowe. Trzeba skorygować to co wskazał.
Co do błędów logicznych:
___1.___
Config Timer0 = Timer
, Gate = Internal , Mode = 1
___2.___
On Timer0 Przerwaniet0
'brak tu pętli głownej
Sub Wyswietlczas
___3.___
Load Timer0 , 4150
To niestety tak nie działa. Poczytaj helpa. W polskiej wersji to wytłumaczyłem.
___4.___
Call Wyswietlczas
Nigdy więcej wywoływania procedur z przerwania!
-
krzywobrody
- -
- Posty: 3
- Rejestracja: 07 lut 2008, 16:34
- Lokalizacja: rzeszów
Post
autor: krzywobrody » 07 lut 2008, 20:32
czyli jak te błędy poprawie to będzie działało???
-
ZbeeGin
Post
autor: ZbeeGin » 07 lut 2008, 20:37
czyli jak te błędy poprawie to będzie działało???
Tego nie powiedziałem. Niestety niechlujstwo z brakiem komentarzy nie pozwala na przeanalizowanie zamierzeń programisty i ich realizacji.
-
krzywobrody
- -
- Posty: 3
- Rejestracja: 07 lut 2008, 16:34
- Lokalizacja: rzeszów
Post
autor: krzywobrody » 07 lut 2008, 20:40
moim założeniem było to żeby na wyświetlaczu LCD wyświetlał sie czas i tyle:)
-
ZbeeGin
Post
autor: ZbeeGin » 07 lut 2008, 20:46
moim założeniem było to żeby na wyświetlaczu LCD wyświetlał sie czas i tyle:)
Niestety taki komentarz do programu to zbyt mało. Nie daje on informacji, jakim tokiem myślenia posługiwałeś się przy tworzeniu kolejnych etapów tego kodu.