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

Kalkulator w C - dla Atmega16

IronMac 06 Cze 2010 20:06 1530 12
REKLAMA
  • #1 8162531
    IronMac
    Poziom 9  
    Witam, piszę kalkulator na Atmege16 i zastanawiam się czy obrałem dobrą ścieżką. Zasada działania mojego programu jest pozornie prosta lecz podatna na błędy, ponieważ "wczytuję" wprowadzoną liczbę do pojedynczych char, a następnie zamieniam ją na int, dokonuję działań i konwertuję do char, po czym wyświetlam. Czy istnieje jakiś lepszy sposób?
  • REKLAMA
  • #2 8162603
    gaskoin
    Poziom 38  
    a mógłbyś coś więcej napisać? jak wprowadzasz dane chociazby... W tworzeniu czasem warto działać zgodnie z zasadą - zrob najpierw byle żeby działało, a potem zrób żeby było ładnie :)
  • #3 8162635
    IronMac
    Poziom 9  
    Dane wprowadza się dwoma przyciskami: jednym wybieramy cyfrę, a drugim przesuwamy rząd. Działać to działa, ale na okrągło konwertować typy zmiennych... fuj... ; )

    Edit:

    Od razu zapytam. Jak w AVR Studio przy debugowaniu podglądać wartości zmiennych?
  • REKLAMA
  • #4 8162823
    gaskoin
    Poziom 38  
    nie pamietam, bo juz dawno zwolnilem AVR Studio, ale bylo tam bodajze cos takiego jak Watch i z tego co pamietam nietrudno to bylo znaleźć, btw co za problem zamiast chara wybierać inta, skoro i tak na LCD wywalasz wartosci wziete z tablicy ? liczby jako chary sa przesunięte o 48. Mowiac po polsku '0' to 48, '1' to 49 itd
  • REKLAMA
  • #5 8162832
    IronMac
    Poziom 9  
    "btw co za problem zamiast chara wybierać inta, skoro i tak na LCD wywalasz wartosci wziete z tablicy ?"

    Mógłbyś rozwinąć tą myśl?
  • #6 8162867
    gaskoin
    Poziom 38  
    to może zdradź więcej szczegółów na temat swojego programu, bo to był tylko jak widać mój nietrafny domysł
  • #7 8162951
    IronMac
    Poziom 9  
    Ok zrozumiałem o co Ci chodziło. Zaczynam pisać cały program od nowa. Jak zrobilibyście wczytywanie do int liczby skoro wprowadzamy do kalkulatora po jednej cyfrze?
  • #8 8163013
    gaskoin
    Poziom 38  
    skoro masz tylko dwa przyciski to ja to widze tak:

    ustawiasz krok = 1

    po nacisnieciu przycisku 1 - do zmiennej w ktorej przechowujesz swoja liczbe dodajesz aktualny krok liczby.
    po nacisnieciu przycisku 2 - zwiekszasz krok o 10

    pomiędzy muszą być warunki np na to ze jak bedziesz mial 95 i nacisniesz przycisk 2, zebys nie dostal 105 tylko 5 (chyba ze chcesz inaczej) no i oczywiscie aktualizacje LCD

    operować możesz na intach, w standardowych bibliotekach C masz funkcje ITOA która zamienia integera na odpowiadający jej w ascii char (wlasciwie tablice charow)
  • REKLAMA
  • #9 8163069
    IronMac
    Poziom 9  
    wielkie dzięki ; )
  • #10 8171039
    rpal
    Poziom 27  
    Jeśli będziesz używał tylko char albo int to ten twój kalkulator będzie bardzo ułomny bo ograniczy się w porywach do 255 albo 65535, no chyba że o to właśnie chodzi. Poza tym nigdy nie bedziesz wiedział kiedy nie przekroczysz zakresu zmiennej choćby w wyniku pomnożenia 100 przez 700, i co wtedy ? Ja bym się bardziej skupił na konktroli wprowadzanych liczb do bufora tekstowego a jakiego rodzaju ma być zmienna liczbowa to rzecz wtórna bo i tak wiadomo że z maksymalnie duża np. long int .
  • #11 8171945
    gaskoin
    Poziom 38  
    rpal napisał:
    Ja bym się bardziej skupił na konktroli wprowadzanych liczb do bufora tekstowego a jakiego rodzaju ma być zmienna liczbowa to rzecz wtórna bo i tak wiadomo że z maksymalnie duża np. long int .


    itoa działa dobrze też dla uint32_t
  • #12 8172986
    rpal
    Poziom 27  
    Kolego ja o zupie a ty o d... nie zrozumielismy się najwidocznie pisałem że nie zgadam się z zasadniczym podejściem do kontrukcji programu a nie o konwersji liczby do znaku :)
  • #13 8176857
    gaskoin
    Poziom 38  
    dlaczego nie? co w niej jest złego ? :) bo tego nie napisałeś
REKLAMA