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

sterowanie portow w 8051 - Asembler

titu86 17 Paź 2005 20:37 2134 2
  • #1 17 Paź 2005 20:37
    titu86
    Poziom 10  

    do systemu mikroprocesorowego opartego na mikroprocesorze 8051 dolaczono 8 urzadzen sterujacych w stanie wysokim. Wybór załaczonego urzadzenia dokonuje sie poprzez klawiature podłaczoną do systemu przez port RS. W obecnej chwili mogą być załaczone wszystkie urzadzenia a numer zlaczoneg urzadzenia podawany jest z klawiatury. Prosciej chodzi o stworzenie programu ktory polega na tym ze wciskamy np 3 na klawie co powoduje sterowanie jakims tam portem zadanie niby jest proste ale jak dlamnie to kosmos ;p dlatego prosze o pomoc w roziazanau tego zadana najlepiej opisem poszczegolnych lini programu i z jako takim wyjasnieniem ;p z gory thx pozdro all

    0 2
  • #2 19 Paź 2005 22:14
    aristot
    Poziom 14  

    może jakaś propozycja co do schematu trudno programować coś czego niema. Co to znaczy klawiatura podłączona do portu rs czy masz na mysli jakiś jakiś konkretny układ scalony. Generalnie wiecej informacji

    0
  • #3 23 Paź 2005 21:47
    Zaquadnik
    Poziom 27  

    Cóż.. mało wiem o całym urządzeniu, ale proponuję następujące rozwiązanie (rozumiem, że klawiatura przesyła przez RS kod znaku ASCII).

    Code:

    ljmp 100h                             ;skok do poczatku programu

    org 23h                                ;wektor odpowiadajacy przerwaniu UART
    ajmp odbior                          ;skok do obslugi przerwania

    org 100h                               ;poczatek glownego programu
    mov SCON,#050h         ;zaladowanie ustawien do odpowiednich
    mov TMOD,#020h                  ;rejestrow
    mov TH1,#0F4h                     ;UART - 2400 b/s przy kwarcu 11,059MHz
    mov TL1,#0F4h
    setb ES                           ;odblokowanie przyjmowania przerwan od UART
    setb EA                           ;odblokowanie przyjmowania przerwan
    setb TR1                               ;uruchomienie Timera 1

    ljmp $                               ;oczekiwanie na przerwanie

    odbior:                              ;procedura obslugi przerwania
    jnb RI,$                         ;oczekiwanie na zakonczenie odbioru bajtu
    clr RI                             ;wyzerowanie znacznika konca odbioru
    mov A,SBUF                   ;przeslanie bajtu odebranego do akumulatora

    clr C                              ;wyzerowanie znacznika przeniesienia
    subb A,#30h                  ;przeksztalcenie kodu cyfry na cyfre
    mov B,A                        ;przeslanie zaw. akumulatora do B
    clr A                              ;wyzerowanie akumulatora
    setb C                           ;ustawienie znacznika C
    petla:
    rlc A                              ;przesuniecie 1 ze znacznika C na pozycje o               
                                       ;numerze z B
                                       ;czyli 1 bedzi na pozycji zczytanej z klawiatury
    djnz B,petla                  ;wykonywanie petli B liczbe razy
    mov P1,A                     ;uaktywnienie odpowiedniej linii portu 1
    reti                              ;powrot z obslugi przerwania

    end

    Mniej więcej coś takiego. Powinno zadziałać. poczytaj sobie jeszcze dokumentację od procka. Powinna rozwiać ew. wątpliwości.
    Pozdrawiam

    0