NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Ovládání trezoru - C

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Ráďa Weiss
Člen
Avatar
Ráďa Weiss:6.10.2015 17:08

Dobrý den, mám za úkol vytvořit program v C, který bude řídit obsluhu trezoru. Na 4-segmentovém displeji budu mít čísla, které budu pomocí tlačítek nahoru, dolu, set, mode ovládat. Naučil jsem se posílat na jakýkoliv displej jakékoliv číslo - ovšem pouze když to přepíšu v kódu. Teď to jen potřebuji propojit s funkcí tlačítek. Postup by byl následující: Při zapnutí se na displeji zobrazí nuly. Pak pomocí tlačítka mode bych měl jednotlivé segmenty, tlačítky nahoru a dolu bych měnil hodnotu čísla a tlačítkem set bych potvrdil danou kombinaci a trezor by se otevřel. Můžete mi prosím pomoc s funkcemi těch tlačítek a zároveň je zprovoznit? Zasílám zdroják pro lepší orientaci. Děkuji.

#include <stdio.h>
#include <conio.h>
#include <dos.h>

unsigned int P1 = 0x300;        // adresa portu P1
unsigned int P2 = 0x301;        // adresa portu P2
unsigned char A1 = 0xFE;        // maska pro display A1 a tlacitko
unsigned char A2 = 0xFD;        // maska pro display A2 a tlacitko
unsigned char A3 = 0xFB;        // maska pro display A3 a tlacitko
unsigned char A4 = 0xF7;        // maska pro display A4 a tlacitko
int cislo[10] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; // hodnoty pro displej

int main(void)
{
        while (1)
        {
                outportb(P2, A1);       // aktivace displeje A1
                outport(P1, cislo[0])   // zobrazeni nuly na aktivovanem displeji
        }
}
 
Odpovědět
6.10.2015 17:08
Avatar
Sony Nguyen
Tvůrce
Avatar
Sony Nguyen:6.10.2015 21:50

Dobrý den,

potřebujete nějakou funkci na zjištění vstupu, což by se mohlo jmenovat getport, inport, getoutput nebo nějak podobně. Pokud nevíte jak zapojit tlačítka, tak by mohl být návod v Arduino tutoriálech. S kódem Vám přímo asi nepomůžu, ale můžu Vám zhruba naznačit ten "systém", jak bych to udělal já.

//Nastavení adres
//vynulování segmentu apod.

//nekonečný cyklus
        //pokud je stisknuto tlačítko doleva, tak změň pozici aktivního segmentu
        //obdobně s tlačítkem doprava
        //pokud je stisknuto tlačítko nahoru, tak přičti 1 k číslu na aktuálním segmentu
        //obdobně s tlačítkem dolů
        //pokud je stisknuto SET, tak zkontroluj kombinaci a pokud je správná, tak nějak otevři trezor, popřípadně vynuluj obrazovku zase

Snad pomohlo :)

Dodatky:

  • u těch adres na začátku bych přidal klíčové slovo "const" je to vhodnější :)
  • pole "cislo" obsahuje čísla od 0 až 9 jen jsou zapsané v hexadecimálním tvaru, tudíž můžete nahradit "outport(P1, cislo[0]) " tímto "outport(P1, 0) " a také Vám tam chybí středník
Editováno 6.10.2015 21:50
 
Nahoru Odpovědět
6.10.2015 21:50
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.