Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Emulator 89c2051 i 89c4051 + soft bascom jako pilot do Manty

Guma1975 09 Jul 2006 14:58 6263 0
  • Emulatora procesora 89c4051 bez komparatora lecz w czasie rzeczywistym oraz soft w bascom do emulacji pilota manty emperor 007

    Witam! serdecznie !
    Proponuje artykuł dotyczący emulatora procesora 89c4051 oraz rozwiązanie w bascomie transmisji IR pilota manty emperor 007

    Proponuje sprawdzony emulator procesora AT89C2051 i AT89C4051
    link do tego tu:
    http://www.hw.cz/Teorie-a-praxe/Konstrukce/ART427-Prostredek-pro-ladeni-SW-procesoru-89x051.html

    Jesli kiedyś bedą problemy proszę na priv lub umieszczę wszystko zamiast linku.

    Jest tam oczywiście wsad do procesora pod nazwą SIM301.BIN osobiście użyłem 89s52 ale może być 89c52
    Wadą tego emulatora jest brak emulacji komparatora, lecz dzięki prawie 100% emulacji szybkości małego Atmela jest (jak dla mnie) niezauważalne.
    Program do obsługi tego emulatora dobry i działa na XP oraz WIN98 link tutaj: http://www.hw.cz/Teorie-a-praxe/Software/ART242-Uprava-simulatoru-procesoru-2051-z-HW.html

    zamiast 6N136 OC1 dałem 6N139 lecz to tylko darlington (brakło na giełdzie)
    Aby zaemulować pierwszy lepszy procesor np. 89c2051 wystarczy nałożyć podstawkę precyzyjną na tą w emulatorze procesora i polutować układ w/g rzyczenia i sprawdzić ładując pod kontrolą programu pesi2051.exe plik HEX lub BIN lecz w tym przypadku program nie pokazuje tego pliku w katalogu trzeba go (jeśli istnieje w tym samym katalogu co HEX) wypisać ręcznie w programie pesi2051.exe i poleci.
    Zailanie jest brane z układu prototypowego.
    Oto zdjęcie działającego emulatora jeśli będą jakieś problemy zapraszam do dyskusji.
    Emulator 89c2051 i 89c4051 + soft bascom jako pilot do Manty

    Tu mamy źródło programu w bascom wysylającego IR jako pilot MANTY EMPEROR 007 i działa było sprawdzone praktycznie.
    ---------------------------------------------------------------------------------


    ' Próba wymuszenia w Bascomie emulacji pilota MANTA Emperor 007
    ' System kodowania IR NEC, bit startu 8,4ms podczerwieni (fala prostokątna 36khz - 38khz) oraz 4,2ms ciszy
    ' Logiczne zero 500us podczerwieni modulowanej i 450 ciszy
    ' Logiczna jedynka 550us podczerwieni modulowanej i 1.7 ms ciszy
    ' Następnie bajt 0 oraz bajt 255 (być może ma to być logiczne NOT pierwszego bajtu)
    ' Potem kod rozkazu oraz następny bajt to logiczne NOT tego rozkazu
    ' Na koniec (czyżby bit stopu?) logiczna 1
    ' Wyjscie sterujace na pin 2 AT89C4051 czyli p3.7
    ' poprzez r=100k om na baze trranzystora BC337 seria 25
    ' emiter na GND dioda IR od VCC poprzez rezystor 100 om do kolektora BC337
    ' Program jest jeszcze w powijakach wymaga poprawek lecz dziala na zywo.
    ' W takiej postaci wysyla kod rozkazu przycisku 2 numerycznego pilota od manty co okolo 60 sekund.
    ' Nopy wstawiono w celu dostrojenia czasu.
    ' Procedura powinna byc zrobiona z wstawkami ASM lecz chcialem sprawdzic czy mozna na samych Wait itd.
    '
    '

    $crystal = 11059200
    Config Lcd = 16 * 2
    Config Lcdbus = 4
    'Config Rc5 = P3.2
    Dim A As Byte
    Dim Bb As Byte
    Dim Dana1 As Byte
    Dim Dana2 As Byte
    Dim Bity As Byte
    Dim Maska As Byte
    Dim Bitek As Byte
    Dim Dana As Byte
    Dim Licz As Byte
    Maska = &B00000001
    Dana1 = 0
    Dana2 = 77 '77 przycisk nr 2 '69 przycisk nr 3
    Reset P3.7
    'Waitms 100
    Do

    Gosub Wyslij:

    Cls
    Lcd Dana1= ; Dana1
    Lowerline
    Lcd Licz= ; Licz
    Incr Licz
    Wait 60 'to tylko po to aby nie za czesto wysylac rozkaz

    Loop

    38khz:
    Set P3.7
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    'nop 'pomoglo nie zawsze lapal okolo 2 na 10
    Reset P3.7
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    Return


    Startbit:
    For A = 1 To 154
    Gosub 38khz
    Next A
    Waitms 4
    Delay
    Delay
    Delay
    Return


    Bit0:
    For A = 1 To 10 '10
    Gosub 38khz
    Next A
    Delay
    Delay
    Delay
    Delay
    For Bb = 1 To 2 ' byly 2 nopy do poprawki na nopy niepotrzebna petla ,bylo 2
    nop ' for zostaje razem z next zyzywa okolo 40 cykli czyli tyle samo nop
    Next Bb
    Return


    Bit1:
    For A = 1 To 10 'tu 10
    Gosub 38khz
    Next A
    For Bb = 1 To 11 'jesli gorzej to 12 i zdjac 2 nopy
    Delay
    nop
    nop
    nop
    nop
    Next Bb
    Return

    Nadaj: 'nadajemy bajt
    For Bity = 1 To 8 'wysuwamy po kolei bity od najmlodszego
    Bitek = Dana And Maska 'sprawdzamy tylko zerowy bit
    Rotate Dana , Right , 1 'przesuwamy aby dostac nastepny bit
    If Bitek = 1 Then 'jesli bit ustawiony to
    Gosub Bit1 'nadaj bit1
    Else 'jesli bit = zero to
    Gosub Bit0 'nadaj bit0
    End If
    Next Bity
    Return

    Wyslij:
    Gosub Startbit
    Dana = Dana1
    Gosub Nadaj
    Dana = Not Dana1
    Gosub Nadaj
    Dana = Dana2
    Gosub Nadaj
    Dana = Not Dana2
    Gosub Nadaj
    Gosub Bit1
    Return

    $nonull = -1
    Dta1:

    Data 1 '1 10000010 65
    Data 2 '2 10110010 77
    Data 3 '3 10100010 69
    Data 4 '4 01000010 66
    Data 5 '5 01110010 78
    Data 6 '6 01100010 70
    Data 7 '7 11000010 67
    Data 8 '8 11110010 79
    Data 9 '9 11100010 71
    Data 10 '0 00000000 00
    Data 11 'OFF/ON 01001000 18
    Data 12 'OPEN 01101000 22
    Data 13 'DISPLAY 11001010 83
    Data 14 'PROG 10001010 81
    Data 15 'N/P 10010010 73
    Data 16 'SUBTITL 01010010 74
    Data 17 'LANGUAG 11010010 75
    Data 18 'ANGLE 00001000 16
    Data 19 '+10 00010000 08
    Data 20 'TIME 00011000 24
    Data 21 'SETUP 11010000 11
    Data 22 'REPEAT 11011000 27
    Data 23 'UP 10000000 01
    Data 24 'DOWN 10010000 09
    Data 25 'LEFT 10011000 25
    Data 26 'RIGHT 10001000 17
    Data 27 'ENTER 00000010 64
    Data 28 'VOL- 01111000 30
    Data 29 'VOL+ 11111000 31
    Data 30 'ZOOM 00010010 72
    Data 31 'STEP 10110000 13
    Data 32 'L/R 10111000 29
    Data 33 'MUTE 10101000 21
    Data 34 'PBC 01011000 26
    Data 35 'SLOW 11001000 19
    Data 36 'TITLE 11000000 03
    Data 37 'A-B 01000000 02
    Data 38 'MENU 01010000 10
    Data 39 'PREV 00111000 28
    Data 40 'NEXT 00101000 20
    Data 41 'REV 11110000 15
    Data 42 'FWD 01110000 14
    Data 43 'PAUSE 00100000 04
    Data 44 'STOP 11100000 07
    Data 45 'PLAY 11101000 23


    jeszcze nie ma obsługi linii data

    ale rdzeń działa i wysyła sprawdziłem na odległości 4metrów rozkazy

    acha w data są dane rozkazów klawiszy
    Pozdrawiam i jeszcze to zmodyfikuje w miare dostępności czasu ... teraz na urlopie... POZDRAWIAM!

    Cool! Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    Guma1975
    Level 14  
    Offline 
    Has specialization in: informatyka, elektronika, serwis
    Guma1975 wrote 74 posts with rating 19, helped 5 times. Live in city Zgierz. Been with us since 2003 year.