wojlej Poziom 13

Joined: 09 May 2006 Posts: 114 Location: Lębork
|
#1
31 Mar 2009 18:47 zamek elektroniczny cyfrowy kodowy BASCOM AVR |
|
|
|
Witam.
Wpadłem na pomysł zrobienia zamka cyfrowego na uP. Jako, że to mój pierwszy tego typu projekt to pojawiło się kilka problemów. Głównie z programem. Kupiłem sobie książkę "Programowanie mikrokontrolerów AVR w języku BASCOM". Zaprojektowałem układ i napisałem jakiś tam
program. Umieszczam to tutaj:
A) Schemat:
Pytanie nr1. Czy to w ogóle ma prawo działać i czy jest sens stosowania EEPROMu dla przechowywania PINu? Zworka JP3 służy do awaryjnego otwarcia rygla poprzez zwarcie przekaźnika do masy (jakby coś nawaliło).
Mikroprocesor ATMEGA-8 DIP28. Klawiaturę postanowiłem, że zrobię z 12 microjumperków.
B) Program (Pisany w BASCOM-AVR)
| Code: |
$regfile = "m8def.dat"
$crystal = 8000000
Config Portc = Input
Config Portb = Input
Config Portd = Input
Const Pin = 1234
Zero Alias Pinc.0
Jeden Alias Pinc.1
Dwa Alias Pinc.2
Trzy Alias Pinc.3
Cztery Alias Pinc.4
Piec Alias Pinc.5
Szesc Alias Pinb.0
Siedem Alias Pinb.1
Osiem Alias Pinb.2
Dziewiec Alias Pinb.3
Gwiazdka Alias Pinb.4
Kratka Alias Pinb.5
Config Portc = &B000000 'deklaracja wartości
Config Portb = &B000000 'początkowej portów
Dim Liczba_1 As Integer 'liczba tysięczna
Dim Liczba_2 As Integer 'liczba setna
Dim Liczba_3 As Byte 'liczba dziesiętna
Dim Liczba_4 As Byte 'liczba jedności
Dim Haslo As Integer
Do
If Zero = 1 Then
Liczba_1 = 0 * 1000
If Jeden = 1 Then
Liczba_1 = 1 * 1000
If Dwa = 1 Then
Liczba_1 = 2 * 1000
If Trzy = 1 Then
Liczba_1 = 3 * 1000
If Cztery = 1 Then
Liczba_1 = 4 * 1000
If Piec = 1 Then
Liczba_1 = 5 * 1000
If Szesc = 1 Then
Liczba_1 = 6 * 1000
If Siedem = 1 Then
Liczba_1 = 7 * 1000
If Osiem = 1 Then
Liczba_1 = 8 * 1000
If Dziewiec = 1 Then
Liczba_1 = 9 * 1000
Waitms 500
If Zero = 1 Then
Liczba_2 = 0 * 100
If Jeden = 1 Then
Liczba_2 = 1 * 100
If Dwa = 1 Then
Liczba_2 = 2 * 100
If Trzy = 1 Then
Liczba_2 = 3 * 100
If Cztery = 1 Then
Liczba_2 = 4 * 100
If Piec = 1 Then
Liczba_2 = 5 * 100
If Szesc = 1 Then
Liczba_2 = 6 * 100
If Siedem = 1 Then
Liczba_2 = 7 * 100
If Osiem = 1 Then
Liczba_2 = 8 * 100
If Dziewiec = 1 Then
Liczba_2 = 9 * 100
Waitms 500
If Zero = 1 Then
Liczba_3 = 0 * 10
If Jeden = 1 Then
Liczba_3 = 1 * 10
If Dwa = 1 Then
Liczba_3 = 2 * 10
If Trzy = 1 Then
Liczba_3 = 3 * 10
If Cztery = 1 Then
Liczba_3 = 4 * 10
If Piec = 1 Then
Liczba_3 = 5 * 10
If Szesc = 1 Then
Liczba_3 = 6 * 10
If Siedem = 1 Then
Liczba_3 = 7 * 10
If Osiem = 1 Then
Liczba_3 = 8 * 10
If Dziewiec = 1 Then
Liczba_3 = 9 * 10
Waitms 500
If Zero = 1 Then
Liczba_4 = 0
If Jeden = 1 Then
Liczba_4 = 1
If Dwa = 1 Then
Liczba_4 = 2
If Trzy = 1 Then
Liczba_4 = 3
If Cztery = 1 Then
Liczba_4 = 4
If Piec = 1 Then
Liczba_4 = 5
If Szesc = 1 Then
Liczba_4 = 6
If Siedem = 1 Then
Liczba_4 = 7
If Osiem = 1 Then
Liczba_4 = 8
If Dziewiec = 1 Then
Liczba_4 = 9
Waitms 100
Haslo = Liczba_1 + Liczba_2 + Liczba_3 + Liczba_4
If Haslo = Pin Then
Pind.5 = 1
Waitms 10000 'czekaj 10s
Else
Pind.5 = 0
Pind.6 = 1
Pind.7 = 1
Waitms 2000 'czekaj 2s
End If
Loop
End
|
Nie miałem pojęcia jak wpisać liczbę za pomocą jumperków więc postanowiłem tak:
Liczba 5467 to inaczej 5*1000 + 4*100 + 6*10 + 7
Kompletnie nie wiem czy ma to prawo działać. No i pozostaje wprowadzenie do programu deklaracji o zmianie pinu.
Proszę o podpowiedź. Pozdrawiam.
|
|