Forum www.polcz.fora.pl
pcz
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Laborki 1

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.polcz.fora.pl Strona Główna -> Systemy wbudowane
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
gosel




Dołączył: 28 Paź 2008
Posty: 87
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5

PostWysłany: Sob 16:39, 07 Lis 2009    Temat postu: Laborki 1

Kod:

NAME   PROGRAM
$INCLUDE (REG517.INC)   ; dolaczenie pliku definicji rejestrow procesora 80C537

PROGRAM   SEGMENT   CODE ;definicja segmentu zawierającego kod programu
BITS SEGMENT BIT ;definicja segmentu danych pamięci zewnętrznej RAM
X_VARIABLES SEGMENT XDATA ;definicja segmentu danych pamięci zewnętrznej RAM
I_VARIABLES SEGMENT IDATA ;definicja segmentu danych pamięci wewnętrznej RAM (zakres 0..0ffh)
VARIABLES SEGMENT DATA ;definicja segmentu danych pamięci wewnętrznej RAM (zakres 0..07fh - dolna połówka)


   org 0x8000 ; = równoważne z dyrektywą "CSEG AT 0x0000"
VectorTableAddr: JMP   START   ;skok na poczatek programu


   RSEG  PROGRAM   ;informacja dla linkera - następne dane to kod programu
      ;(Z tego miejsca uruchomi sie program)
START:   
   mov SP,#DNO_STOSU-1 ;ustawienie wskaźnika stosu na początek zarezerwowanego obszaru

   ;resetowanie
   mov R0, #0
   mov A, R0
   mov DPTR, #tablica
   movc A, @A+DPTR

; Petla glowna programu
PETLA:   
   mov A, R0
   mov DPTR, #tablica
   movc A, @A+DPTR
   mov P1, A
   JNB P5.0, KLAWISZ_PIERWSZY
   JNB P5.1, KLAWISZ_DRUGI
   JNB P5.2, KLAWISZ_TRZECI
   JMP PETLA
KLAWISZ_PIERWSZY:
   MOV A, R0
   CLR C
   SUBB A, #1
   JC KLAWISZ_CIAGLE_WCISNIETY
   DEC R0
   LCALL czekaj_200ms
   JMP KLAWISZ_CIAGLE_WCISNIETY
KLAWISZ_DRUGI:
   MOV R0, #0
   LCALL czekaj_200ms
   JMP KLAWISZ_CIAGLE_WCISNIETY
KLAWISZ_TRZECI:
   MOV A, R0
   CLR C
   SUBB A, #15
   JNC KLAWISZ_CIAGLE_WCISNIETY
   INC R0
    LCALL czekaj_200ms
KLAWISZ_CIAGLE_WCISNIETY:
   JNB P5.0, KLAWISZ_CIAGLE_WCISNIETY
   JNB P5.1, KLAWISZ_CIAGLE_WCISNIETY
   JNB P5.2, KLAWISZ_CIAGLE_WCISNIETY
;tutaj wiemy, że klawisz nie jest już wciśnięty
;zawartość zmiennej została zwiększona więc można powrócić do programu głównego
   JMP PETLA
 

;;;;;;;;; funkcja czekaj
czekaj_200ms:
PUSH ACC ;zachowanie zawartości akumulatora na stosie

      MOV A,#200             ;dwieście razy wywoła procedurę czekaj_1ms
petla_200ms:  LCALL czekaj_1ms 
      DJNZ ACC,petla_200ms

      POP ACC ;odtworzenie zawartości akumulatora ze stosu
      RET ;koniec procedury czekaj_200ms

czekaj_1ms:
PUSH ACC ;zachowanie zawartości akumulatora na stosie

      MOV A,#250 ;250 powtórzeń po ok. 4 mikrosekundy każde
petla_1ms:     NOP
      NOP
      NOP
      DJNZ ACC,petla_1ms

      POP ACC ;odtworzenie zawartości akumulatora ze stosu
      RET ;koniec procedury czekaj_1ms




;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@ definicje stałych i zmiennych @@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;   mov P1, #00000000b
;   mov P1, #00000001b    ;gora
;   mov P1, #00000010b     ;PRAWA GORA
;   mov P1, #10000000b    ;prawy dol
;   mov P1, #00001000b    ;dol
;   mov P1, #00010000b     ;lewy dol
;   mov P1, #01000000b   ;lewa gora
;   mov P1, #00000100b    ;kropka
;   mov P1, #00100000b    ;srodek

tablica:
    db   11011011b   ;0
    db   10000010b ;1
    db   00111011b   ;2
    db   10101011b ;3
    db   11100010b   ;4
    db     11101001b ;5
    db   11111001b ;6
    db   10000011b ;7
    db   11111011b ;8
    db   11101011b ;9
    db   11110011b ;a
    db   11111000b ;b
    db   01011001b ;c
    db   10111010b ;d
    db   01111001b ;e
    db   01110001b ;f



;stałe w pamieci kodu - nie można ich zmienić
;odczyt: do DPTR należy wpisać adres zmiennej,
;do akumulatora ew. przesunięcie przesunięcie adresu
;a potem odczyt możliwy jest instrukcją MOVC
; np.   mov DPTR,#stala1
;   mov A,#0
;   movc A,@A+dptr

napis1: DB    'Dzien dobry',00H
napis2: DB    'Wcisnij przycisk',00H
napis3: DB    'Przesun suwak   ',00H
napis_w128: DB    '>=128   ',00H
napis_m128: DB    '< 128   ',00H

stala1: db 28


; zmienne w pamieci zewnętrznej RAM (XRAM)
;   - te ciagi i zmienne można zmieniać (zapis/odczyt instrukcją MOVX A,@DPTR)
   RSEG  X_VARIABLES

ZMIENNA: DS 1

ciag1:   DS 20 ;zarezerwowanie miejsca w pamiecie RAM na 20 bajtow
ciag2:   DS 10 ;zarezerwowanie miejsca w pamiecie RAM na 10 bajtow


; zmienne w pamieci wewnętrznej RAM (IRAM)
; dostęp w trybie pośrednim (za pomoca rejestru R0 lub R1)
; np. MOV R1,#ZMIENNA2
;     MOV @R1,A

   RSEG  I_VARIABLES
ZMIENNA2: DS 1
ZMIENNA3: DS 1

DNO_STOSU: DS 20h ;zarezerwowanie miejsca w pamiecie IRAM na STOS


; zmienne W DOLNEJ POŁÓWCE pamieci wewnętrznej RAM (IRAM: 0..7fh)
; dostęp w trybie BEZPOŚREDNIM lub pośrednim
; np. MOV A,#ZMIENNA4
;UWAGA - jest to najwygodniejszy sposób w assemblerze !!!

   RSEG  VARIABLES
ZMIENNA4: DS 1
ZMIENNA5: DS 1
;zmienne w obszarze BITOWO ADRESOWALNYM - bardzo wygodnew do uzywania jako flagi (stan 0 lub 1)
   RSEG BITS
ZMIENNA_BITOWA: DBIT 1
   END



Post został pochwalony 0 razy

Ostatnio zmieniony przez gosel dnia Sob 17:01, 07 Lis 2009, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Ajla




Dołączył: 23 Paź 2008
Posty: 356
Przeczytał: 0 tematów

Pomógł: 3 razy
Ostrzeżeń: 0/5

PostWysłany: Pon 12:01, 09 Lis 2009    Temat postu:

Może ktoś napisać instrukcję mniej więcej jak się tworzyło te wszystkie pliki w tym oprogramowaniu kyle? bo to bylo troche pojebane i nie pamietam co i jak

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
gosel




Dołączył: 28 Paź 2008
Posty: 87
Przeczytał: 0 tematów

Pomógł: 1 raz
Ostrzeżeń: 0/5

PostWysłany: Pon 21:20, 09 Lis 2009    Temat postu:

Kopiowaliśmy jakiś przykładowy program i usuwaliśmy zawartość pętli głównej programu

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Tomek.P




Dołączył: 07 Sty 2009
Posty: 36
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Pon 20:20, 16 Lis 2009    Temat postu:

a tem watchdog to gdzie sie wylancza ?? nie dziala mi to :/

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.polcz.fora.pl Strona Główna -> Systemy wbudowane Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
Regulamin