Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Brak koncepcji na zadanie z 8051

21 Kwi 2010 18:46 2432 9
  • Poziom 2  
    Mam do napisania krótki program (pod procesor z rodziny intel 8051) o następującej treści.
    Wczytać z kl. matryc. 3 cyfrową liczbę BCD zamienić na jeden bit binarny i wyrzucić na lcd dwa znaki hex z uzyskanej liczby binarnej.
    Chodzi mi o samą koncepcję bo przerzuciłem już całe zeszyty a poysłu jak nie bylo tak nie ma.
    Z góry dzięki za pomoc chociazby jakiś algorytm.
  • Poziom 43  
    Jak szukasz gotowca to nie tu. Jak się podjąłeś chodzić do szkoły o kierunku (zapewne elektronicznym lub informatycznym) to musisz sam myśleć bo nikt Cię programowania nie nauczy, a raczej jak się do tego zabrać.
  • Poziom 25  
    koorekk napisał:
    3 cyfrową liczbę BCD zamienić na jeden bit binarny


    hmm?... To się nie dziwię, że się głowisz nad tym :P To jakaś super funkcja haszująca ;) Działanie "modulo 2" by taki wynik zwróciło...

    A ogólnie, to chyba google na temat BCD powinno coś wiedzieć...
  • Poziom 2  
    Nie trafiają do mnie słowa krytyki wybrałem taki kierunek ale chyba logiką jest, że nikt doskonały nie jest i programowanie PLC i C np idzie mi zajeb*** a asembler leży jakim długi bo nie wszystko łapie.
    Napisałem tyle ile zdołałem wygłówkować.
    Mam 3 liczby bcd przekonwertowane w niestety dwa bajty binarne. Pozostaje mi tylko wyrzucić je na lcd.
  • Poziom 21  
    Witaj Kolego,

    Ja Ci postaram się pomóc ale musimy coś uściślić:

    Cytat:
    Wczytać z kl. matryc. 3 cyfrową liczbę BCD zamienić na jeden bit binarny i wyrzucić na lcd dwa znaki hex z uzyskanej liczby binarnej.


    Jak dobrze rozumiem to masz wczytać z klawiatury matrycowej 3 cyfry tworzące liczbę. Nasuwa się pytanie jaką klawiaturę masz ile na ile lini skoro mówisz o matrycowej. Jeśli masz na tyle lini aby poprawnie wprowadzić każdą cyfrę z kodu dziesiętnego to dobrze to by oznaczało że muisz tylko po wprowadzeniu jej przerobić ją na liczbę z tego co dobrze zrozumiałem HEX czyli szesnastkową i wyświetlić ją na LCD.

    Rozumiem że obsługę LCD i klawiatury masz już zrobioną.

    Jeśli nie to coś poradzimy na to.

    Reasumując:

    1. Wprowadzasz z klawiatury 3 cyfry dziesiętne np: "123"
    2. Przeprowadzenie konwersji liczby "123" dziesiętnej na "7B" szesnastkowej
    3. Wyświetlenie liczby na LCD (2x16)

    Napisz czy dobrze to zrozumiałem

    Pozdrawiam
  • Poziom 43  
    Na moje oko on chce wprowadzać liczbę 3 cyfrową ale z zakresu 0...255.
    A później chce wyświetlić ją jako dwucyfrową ale jako HEX. Czyli od 0x00 do 0xFF. No i to już są 2 znaki.
  • Poziom 15  
    Witam.

    Najpierw drobne uściślenie. Napisał Kolega, że ma zamienić 3 cyfrową liczbę BCD na jeden „bit binarny” – pewnie chodziło o jeden bajt danych.

    Proponuję zacząć rozwiązywanie zadania od lektury objaśniającej, co to jest kod BCD oraz jak operować tak zapisanymi danymi na 8051 przy użyciu asemblera, konwertować na HEX itp. Odpowiedni będzie moim zdaniem rozdział 4 „Proste operacje arytmetyczne” z książki „Podstawy programowania mikrokontrolera 8051”. Autorzy – Piotr i Paweł Gałka.

    Po przyswojeniu podstaw teorii można już zacząć próbować rozwiązywać problem, np.
    - wczytać cyfry z klawiatury,
    - konwersja BCD na HEX - dodać do siebie odpowiednio pomnożone cyfry
    (setki x100 + dziesiątki x10 + jednostki),
    - wyodrębnić i wysłać starszą tetradę wyniku na LCD
    (oczywiście po konwersji na ASCII),
    - wysłać młodszą tetradę wyniku (j.w.).

    Niewątpliwie będzie się Kolega musiał bliżej zapoznać z operacjami maskowania tetrad (rozkaz ANL) oraz z zamianą tetrad miejscami (rozkaz SWAP).
  • Poziom 2  
    Oczywiście chodziło o jeden bajt binarny. Klawiatura matrycowa - chodzi mi o monostabilą klawiaturę 0-9 oraz strzałki góra dół prawo lewo. Program jest na 8051 z układu w szkolnych pracowaniach a dokładnie DSM-51 bo takiego obecnie używa moja szkoła. Przepraszam za nieścisłości ale końcówka roku 4klasisty w technikum i drastyczne podciąganie sobie ocen zadaniami wybiegającymi troszkę poza zakres szkolnego materiału sprawiło, że przeszło tydzień spałem po jakieś 4 godziny. Skutek widać było m.in. z nieścisłościach w poście.
    Program napisałem następnego dnia z niewielką pomocą skryptu z biblioteki.
    Zamieszczę go na łamach tematu jak tylko zassam go z konta w szkole. Serdeczne dzięki za zainteresowanie.

    ps. @kazwita tą książkę przechlałem gdzieś.. Znaczy się pożyczyłem, zapomniałem o jej istnieniu bo miałem rzeczy, z którymi radziłem sobie normalnie a jak mi się przypomniało o jej istnieniu to nie wiedziałem komu pożyczyłem.:|
  • Poziom 15  
    Szkoda książki, bo wszystkie przykłady w niej zawarte są przedstawiane właśnie na DSM-51.
    Ta książka pozwoliła mi poznać i zrozumieć asembler na 8051.
    Na szczęście jest jeszcze dostępna w handlu (teraz już chyba 4 wydanie). Trzeci wynik z googli:
    http://www.sklep.gildia.pl/literatura/46377-p...-programowania-mikrokontrolera-8051-wyd-iv-cd
    Programowanie w C na przykładzie DSM-51 jest opisane w książce „Dydaktyczny System Mikroprocesorowy DSM-51 z CD-ROM.
    Ćwiczenia w języku C dla mikrokontrolera 8051”, autorzy: Robert Gazarkiewicz, Ryszard Kowalik. Jest dostępna między innymi w AVT:
    http://sklep.avt.com.pl/p/pl/47892/dydaktyczny+system+mikroprocesorowy+dsm-1.html
    tej pozycji niestety nie mam.

    Odnośnie klawiatury matrycowej w DSM-51, jest ona podłączona do szyny systemowej mikrokontrolera, i obsługiwana jak zewnętrzna pamięć danych
    (odczyt rozkazem MOVX) – adresy 21H i 22H. Stan każdego z przycisków odwzorowują poszczególne bity w odczytywanych bajtach danych
    (naciśnięty = 0, zwolniony = 1). W rozdziale 8 „zagubionej” książki jest to dosyć dokładnie opisane wraz z przykładami i algorytmem działania.