Programy pro ovládání portů

Úkol: Vytvořte na portu P1.1 obdélníkový tvar signálu o periodě 200us, poměr impulz : mezera=1:1
Možné řešení: program využívá přerušovací systém mikroprocesoru (přerušení od časovače).
Pro všechny následující příklady platí:
Pro vytvoření přesné periody signálu je nutno zavést korekci doby vykonávání instrukcí, které obsluhují přerušení!
Pokud bychom chtěli realizovat program bez využití přerušovacího systému, je nutné v hl. programu vytvořit odpovídající zpoždění (nejlépe cyklem).
        ORG 0
        JMP START
        ORG 30H
START:  MOV TMOD,#00000010B     ;časovač 0, mód 2
        MOV TH0,#155            ;interval 100us při 12MHz
        MOV TL0,#155
        SETB EA                 ;povolení přerušení od časovače 0
        SETB ET0
        SETB TR0                ;spuštění časovače
KONEC:  JMP KONEC               ;nekonečná smyčka
;OBSLUHA PRERUSENI OD CASOVACE 0
        ORG 0BH
        JMP PRERUS
        ORG 50H
PRERUS: CPL P1.1                ;negace stavu portu
        RETI
END

Úkol: Vytvořte na bitu portu P1.1 takovýto signál (v závislosti na průběhu P1.0 dle obrázku). Jde např. o ekvivalent zpožděného přítahu relé.

Průběh signalů
Možné řešení: program využívá přerušovací systém mikroprocesoru (přerušení od časovače)
        ORG 0
        JMP START
        ORG 30H
START:  MOV TMOD,#00000010B     ;časovač 0, mód 2
        MOV TH0,#55             ;interval 200us při 12MHz
        MOV TL0,#55
        SETB EA                 ;povolení přerušení od časovače 0
        SETB ET0
TEST:   JB P1.0,NASTAV          ;test P1.0 na log.1
        CLR TR0                 ;při P1.0 v log.0 zastavení časovače,
        CLR P1.1                 nulování P1.1 a znovunastavení hodnoty
        MOV TH0,#55              časovače
        JMP TEST
NASTAV: SETB TR0                ;při P1.0 v log.1 zapnutí časovače
        JMP TEST
KONEC:  JMP KONEC
;
;OBSLUHA PRERUSENI
        ORG 0BH
        JMP PRERUS
        ORG 50H
PRERUS: SETB P1.1                ;po 200us nastaví P1.1 do log.1
        RETI
END

Úkol: Vytvořte na bitu portu P1.0 takovýto signál. Např. po stisku tlačítka START(P1.1) se začne na bitu P1.0 generovat obdélníkový signál.
Průběhy signálů
Možné řešení: program využívá přerušovací systém mikroprocesoru (přerušení od obou časovačů)
        ORG 0
        JMP ZACAT
        ORG 30H
ZACAT:  MOV TMOD,#00010010B      ;časovač 1-mód 1, časovač 0-mód 2
        CLR P1.0
        CLR P1.1
TEST:   JB P1.1,START            ;test log.1 na P1.1
        JMP TEST
START:  MOV TH1,#11111110B       ;interval 500us
        MOV TL1,#00001100B
        SETB EA
        SETB ET1
        SETB TR1
TEST2:  JB 2FH.7,START2
        JMP TEST2
START2: MOV TL0,#205             ;interval 50us
        MOV TH0,#205
        SETB ET0
        SETB TR0
KONEC:  JMP KONEC
;
;OBSLUHA PRERUS
;
        ORG 1BH
        JMP OBSLUHA1
        ORG 60H
OBSLUHA1: SETB 2FH.7
        CPL P1.0
        CLR TR1	
        RETI
;
        ORG 0BH
        JMP OBSLUHA2
        ORG 70H
OBSLUHA2: CPL P1.0
        RETI
END

Úkol: Vytvořte na daných bitech portu P1 následující průběhy signálů
Průběhy signálů
Možné řešení: program využívá přerušovací systém mikroprocesoru (přerušení od časovače)
ORG 0
        JMP START
        ORG 30H
START:  MOV R0,#0
        MOV R1,#0
        MOV TMOD,#00000010B
        MOV TL0,#205
        MOV TH0,#205
        SETB EA
        SETB ET0
        SETB TR0
KONEC:  JMP KONEC
;
;OBSLUHA PRERUSENI
;
        ORG 0BH
        JMP OBSL1
        ORG 60H
OBSL1:  CPL P1.0
        INC R0
        INC R1
        CJNE R0,#2,TEST2
        CPL P1.1
        MOV R0,#0
TEST2:  CJNE R1,#4,NAVRAT
        CPL P1.2
        MOV R1,#0
NAVRAT: RETI
END
Zpět na hlavní stránku

Copyright © Michal Fuksa 2001