Witam!
Mam problem:
czy składnia bascoma 8051 jest aż tak odmienna od bascoma avr, że nie mogę poprawnie zrobić:
a) jak powiedzieć kompilatorowi że chodzi mi o µP zawarty w tytule ($include nie działa)?
b) jak zdefiniować porty (czy to wejscia, czy wyjscia, jaki stan)?
ps. mam bascoma 8051 DEMO!!
Bascom 8051 i at89s8252
-
ZbeeGin
Nie dodaje się dyrektywy $INCLUDE tylko dyrektywę $REGFILE. Na przykład:GrzesiekG pisze:a) jak powiedzieć kompilatorowi że chodzi mi o µP zawarty w tytule ($include nie działa)?
$regfile = "89s8252.dat"
8051 i jego wersje nie mają rejestrów odpowiedzialnych za definiowanie czy port powinien pracować jako wejście, lub jako wyjście. Istnieje jednak pewna zależność. Jeśli port ma pracować jako wejście to do takiego portu wpisuje się jedynkę logiczną, by zewnętrzny sygnał mógł "ściągnąć" linię portu do stanu niskiego.GrzesiekG pisze:b) jak zdefiniować porty (czy to wejscia, czy wyjscia, jaki stan)?
Przykładowo jedna końcówka jako wejście:
P1.0 = 1
lub cały port:
P3 = 255
Jedynkę logiczną powinieneś także wpisać do tych końcówek portów gdzie występują funkcje alternatywne np. WR, RD, TXD, RXD i chcesz z nich skorzystać.
Po wyzerowaniu wszystkie porty mają wpisane jedynki, więc są wejściami lub pełnią funkcje alternatywne.
-
ZbeeGin
-
ZbeeGin
Prosta w zasadzie sprawa. Przyjmuje założenie, że będziesz miał 8 (lub mniej) mikro przełączników, każdy z nich korzysta tylko z jednej linii portu - zatem nie jest to matryca. Mikroswitch-e mają zwierać końcówki portu do masy.
Uwaga! Do portu P1 najlepiej podłączyć zewnętrzne rezystory podciągające do Vcc.
BASCOM:
P1 = 255
If P1 <> 255 Then
' coś sie zmieniło więc testuj stan kolejnych pinów
'(...)
End If
ASM:
Uwaga! Do portu P1 najlepiej podłączyć zewnętrzne rezystory podciągające do Vcc.
BASCOM:
P1 = 255
If P1 <> 255 Then
' coś sie zmieniło więc testuj stan kolejnych pinów
'(...)
End If
ASM:
Kod: Zaznacz cały
MOV P1,#255
MOV A, P1
CPL A
JZ _POMIN
CPL A
; tutaj procedurka czytająca stan kolejnych klawiszy
; (..)
_POMIN:
; tutaj dalszy ciąg programu nic nie nacisnięto