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.
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!
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.
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!
Fajne? Ranking DIY