logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak wyprowadzać dane na D0-D7 w asm '51 dla AT89C2051? Przykład kodu

grabek_radek 27 Maj 2005 19:46 6077 13
REKLAMA
  • #1 1529529
    grabek_radek
    Poziom 21  
    Posty: 579
    Pomógł: 2
    Ocena: 37
    Witam! poszukuje cos na temat programowania w asm '51 do at89c2051
    Jestem poczatkujacym w programowaniu mikrokontrolerow :D, i mam prosbe o pomoc !!! a mianowicie objasnienie jak sie wyprowadza dane na D0-D7.
    Jakis prosty przyklad kod zrodlowy w asm '51 ale napisany pod at89c2051
    Program np. pozwalajacy wyprowadzac na przemian wartosc 48 i 30 na D1-D7

    DZIEKI
  • REKLAMA
  • #2 1529565
    mipix
    Poziom 38  
    Posty: 4067
    Pomógł: 495
    Ocena: 1478
    opis procesora at89c2051 http://kuniow.pl/~mipik/Pliki/opis_at89c2051.pdf polski

    http://kuniow.pl/~mipik/Pliki/89c2051.pdf angielski

    2051 ma niecałe 2 dostępne porty
    wyprowadzając dane na port p1 (ten jest pełny) uzywasz komend:

    
    Start:
    
    mov p1,#30h ; wartość 48 podana szesnastkowo
    ;petla	op:10ms
    PETLA1:	MOV	R2,#10
    OPOZ1:	MOV	R1,#250
    	DJNZ	R1,$
    	DJNZ	R2,OPOZ1
    
    mov p1,#1e ; wartość 30 podana szesnastkowo
    ;petla	op:10ms
    PETLA2:	MOV	R2,#10
    OPOZ2:	MOV	R1,#250
    	DJNZ	R1,$
    	DJNZ	R2,OPOZ2
    
    
    ajmp Start


    Program ustawia na przemian wartości 48 i 30 z opóźnieniem 10ms. Prościej się nie da.

    Polecam książkę "u Komputery jednoukładowe MCS-51" pana Rydzewskiego jasno zwięźle i na temat.
    Pozdrawiam
    ___________________
    Poprawiłem błędy żeby się ktoś nie nacioł....
  • REKLAMA
  • #3 1529705
    grabek_radek
    Poziom 21  
    Posty: 579
    Pomógł: 2
    Ocena: 37
    czy mozesz mi powiedziec gdzie moge ta ksiazke dostac, bo szukalem w internecie po ksiegarniach internetowych i nic :(. Czy ta ksiazke jeszcze sie dostanie ?
  • #4 1530519
    fiat
    Poziom 12  
    Posty: 34
    Pomógł: 2
    Ocena: 2
    radosław grabiński napisał:
    Witam! poszukuje cos na temat programowania w asm '51 do at89c2051
    Jestem poczatkujacym w programowaniu mikrokontrolerow :D, i mam prosbe o pomoc !!! a mianowicie objasnienie jak się wyprowadza dane na D0-D7.
    Jakis prosty przyklad kod zrodlowy w asm '51 ale napisany pod at89c2051
    Program np. pozwalajacy wyprowadzac na przemian wartosc 48 i 30 na D1-D7

    DZIEKI


    Keil good IDE for this microcontroller
    www.atprog.boom.ru - programator for AT90,AT89 micro.
  • #5 1530666
    Konto nie istnieje
    Konto nie istnieje  
  • #6 1530707
    grabek_radek
    Poziom 21  
    Posty: 579
    Pomógł: 2
    Ocena: 37
    Dzieki! Nie wiedzialem jak wysylac do p1 bo juz podstawy asm mialem w szole ale teoria a praktyka troszke sie rozni my robilismy tylko na emulatorze M535. I jeszcze takie pytanko powiedzmy ze juz zaprogramowalem i terz chce aby wykonywal to co jest zaprogramowane to tak podlaczam rezonator kwarcowy wraz z kondensatorami do XTAL2, XTAL1 i oczywiscie do masy, a co robie z RESET'em ?bo nie moze zostac wiszacy. (powiem tylko na razie ze tylko chce sterowac 2 diodami na p1 :)) czy cos jeszcze mam zrobic z pozostalymi we/wy czy to tylko wystarczy
  • #7 1530864
    _myszon
    Poziom 15  
    Posty: 119
    Pomógł: 13
    Ocena: 18
    Reset proponuję podlaczyć tak jak na rysunku poniżej. Natomiast przy podłączniu diod daj pomiędzy nimi a nóżka kontrolera rezystor (1kOhm). Aha ten kondensator C2 z rysunku daj 22pF.
    Załączniki:
    • Jak wyprowadzać dane na D0-D7 w asm '51 dla AT89C2051? Przykład kodu reset.jpg (15.42 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #8 1530908
    mipix
    Poziom 38  
    Posty: 4067
    Pomógł: 495
    Ocena: 1478
    janchar napisał:
    ...Tak naskracales. ze narobiles bledow...


    Dzięki z sprostowanie. Oczywiście że zabrakło tam adresowania bezpośredniego.
  • REKLAMA
  • #9 1531257
    grabek_radek
    Poziom 21  
    Posty: 579
    Pomógł: 2
    Ocena: 37
    Hmmm!do janchar'a zaraz zaraz nie wiem czy sie orientuje ale dlaczego napisales ze" kolegi przykladzie brakowalo znaku "#", ktory mowi, ze ma byc wprowadzona bezposrednia wartosc, a nie wartosc z nr komorki pamieci danych." hmmm wydaje mi sie ze w przykladzie mipix'a jest"#" sam zobacz "mov p1,#30" hmm to ja sam nie wiem czy ja zle widze, mam okulary ale moze zaslabe, powinnem moze miec 10 dpi;). A powracajac do RESET'u to jesli mam juz atmela zaprogramowaneo podpinam generatorek, a RESET moge podpiac do masy zeby sie nie zresetowal >?? bo pozostawienie go wiszacego to niebardzo. Wiec go podpinam do masy bo aby sie zresetowal to musi byc przynajmniej 2,7 V czy dobrze mowie.
    I jeszcze pytanko nie rozumiem takiej rzeczy jesli potrzebuje 2,7 V aby sie zresetowal to po co na programatorze djaje sie mu 12 V przez rezystor 2,2k do 4,7k (programator banalny podpiety atmelek bezposrednio z portu)
    Załączniki:
    • Jak wyprowadzać dane na D0-D7 w asm '51 dla AT89C2051? Przykład kodu prog_atmel.gif (11.08 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #10 1531297
    mipix
    Poziom 38  
    Posty: 4067
    Pomógł: 495
    Ocena: 1478
    Programowanie tego Atmela polega na zapisaniu jego pamięci FLASH. W procedurze programowania jest potzrebne 12V aby wprowadzić procesor w tryb programowania (poczytaj PDF-a , którego podesłałem).
    Reset nie resetuje pamięci FLASH (bo jest ona nieulotna działa podobnie jak EEPROM ale nie trzeba go kasowaś promieniami UV), a jedynie rejestry wewnętrzne , nie musisz go cały czas zasilać. (raz wgrany program już tam zostaje i można go skasować tylko programatorem.

    Jeśli uda Ci się zaprogramować tym programatorem , to znaczy że masz dużo szczęścia (mi się nie udało)

    Restetowanie polega na tym, że procesor reaguje na zbocze opadające sygnałua nie na podaniu napięcia.
    układ automatycznego resetu jest na drugiej stronie TU
    :

    Wartości elementów takie jak podał "_myszon"
    czyli: R=1kOhm ; C=22pF


    P.s. janchar miał rację, ale już poprawiłem wcześniejszy post.
  • #11 1531319
    grabek_radek
    Poziom 21  
    Posty: 579
    Pomógł: 2
    Ocena: 37
    do mipix to jaki mi polecasz programator w miare prosty abym sam go zbudowal.;) przyslij mi jakis link programatora atmelow at89c2051 ;)
  • REKLAMA
  • #12 1531343
    mipix
    Poziom 38  
    Posty: 4067
    Pomógł: 495
    Ocena: 1478
    Osobiście modrowałem ten Twój (nazywa sie chyba BlowIt) ,ale bez efektu.
    Teraz używam ProgAT, niewiem czy jest najlepszy, napewno nie jest najprostszy, ale działa bez zarzutu. TU jest opisany, Na mojej stronie znajdziesz wszystko co potrzeba aby go uruchomić.
  • #13 1532935
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

✨ Dyskusja dotyczy programowania mikrokontrolera AT89C2051 w asemblerze '51, ze szczególnym uwzględnieniem wyprowadzania danych na port D0-D7, czyli port P1, który jest w tym układzie w pełni dostępny. Przykład kodu pokazuje naprzemienne ustawianie wartości 48 (0x30) i 30 (0x1E) na porcie P1 z opóźnieniem około 10 ms, realizowanym przez pętle opóźniające. Omówiono składnię asemblera, zwracając uwagę na użycie znaku "#" do wskazania wartości bezpośredniej. Poruszono także kwestie sprzętowe, takie jak podłączenie rezonatora kwarcowego z kondensatorami 22 pF do nóżek XTAL1 i XTAL2 oraz prawidłowe podłączenie sygnału RESET, który nie powinien pozostawać niepodłączony, a do jego stabilizacji zaleca się kondensator elektrolityczny między RESET a Vcc oraz rezystor 1 kΩ przy diodach podłączonych do portu. Wyjaśniono, że sygnał RESET działa na zbocze opadające i nie resetuje pamięci FLASH, która jest nieulotna. W dyskusji pojawiły się także rekomendacje dotyczące programatorów do AT89C2051, m.in. ProgAT oraz linki do prostych programatorów i narzędzi programistycznych, takich jak Keil IDE. Podkreślono różnice w składni asemblerów oraz praktyczne aspekty programowania i uruchamiania mikrokontrolera.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA