ÚLOHA č.1
6.2.2001
Tomáš Mořkovský, M4
Zadání úlohy: 1. 2. 3. 4. 5. 6. 7.
16.4.1992
Podprogram z AS51
Součást programu AS51
Podprogram DELAY.INC
diody: {{{{{{{{, 0,2 s čekat diody: zzzz{{{{, 0,2 s čekat prohodit čtveřice svítících diod, 0,2 s čekat a 3x opakovat diody: {{{{{{{z, 0,2 s čekat rotace diody vlevo až po z{{{{{{{, vždy 0,2 s čekat kroky 1-5 2x opakujte užijte podprogram s časováním
mov
R1,#00000010B
;počet spuštění
mov mov
R2,#00000011B R3,#00000111B
;počet prohození H a L bitů ;počet opakovaní pro rotaci
mov call
P1,#00000000B DEL200
;zhasnutí všech diod ;pauza - 200 ms
mov call
P1,#00001111B DEL200
;rozsvícení prvních 4 diod
mov swap mov call djnz
A,P1 A P1,A DEL200 R2,SWAPY
mov call
P1,#11111110B DEL200
mov RL mov call djnz
A,P1 A P1,A DEL200 R3,ROTACE
mov call djnz
P1,#11111111B DEL200 R1,START
;opakované spuštění
mov P1,#00000000B jmp KONEC
;zacyklení programu
START:
- konstanty časových prodlev
RB3
equ
11b
acall
DEL200
acall
DEL400
acall
DEL200
acall
DEL100
push mov
acc a,#100
acall dec cjne pop ret
DEL1MS a a,#0,DELAY acc
push orl mov djnz mov djnz pop ret
PSW PSW,#RB3 shl 3 r7,#0 r7,$ r7,#0c6h r7,$ PSW
DEL1S:
DEL800:
DEL400:
DEL200:
DEL100:
SWAPY:
DELAY: ;prohozeni 4H/4L bitů (diod) ;opakovaní prohazovaní DEL1MS:
ROTACE: ;posuv vlevo
;opakování rotace
KONEC:
include (DELAY.INC) end
;použití podprogramu s čas.
;schovej puvodni RB ;nastav Register Bank = 3
;obnov Register Bank
ÚLOHA č.2 a
13.2.2001
Tomáš Mořkovský, M4
Zadání úlohy: 1.
realizujte vlastní podprogram pro časování
CAS025MS: mov HOP025MS: djnz nop ret
CAS05MS: call call ret
R0,#124 R0,HOP025MS
;podprogram pro 0.25 ms ;124x opakování (248 ms) ;opakování ;prázdná instrukce pro 1ms ;návrat do programu
;podprogram pro 0.5 ms CAS025MS CAS025MS
;podprogram pro 1 ms
CAS1MS: call call ret
CAS05MS CAS05MS
call call call call call ret
CAS1MS CAS1MS CAS1MS CAS1MS CAS1MS
;podprogram pro 5 ms
CAS5MS:
;podprogram pro 10 ms
CAS10MS: call call ret
CAS5MS CAS5MS
;podprogram pro 20 ms
CAS20MS: call call ret
CAS10MS CAS10MS
CAS50MS: call call call ret
CAS20MS CAS20MS CAS10MS
CAS100MS: call call ret
CAS50MS CAS50MS
;podprogram pro 50 ms
;podprogram pro 0,1 s
;podprogram pro 0,2 s
CAS200MS: call call ret
CAS100MS CAS100MS
CAS500MS: call call call ret
CAS200MS CAS200MS CAS100MS
CAS1000MS: call call ret
CAS500MS CAS500MS
;podprogram pro 0,5 s
;podprogram pro 1 s
ÚLOHA č.2 b
13.2.2001
Tomáš Mořkovský, M4
Zadání úlohy:
ÚLOHA č.3
20.2.2001
Tomáš Mořkovský, M4
Zadání úlohy:
1. vytvořte program pro otestování vašeho vlastního podprogramu pro časování (viz úloha č.2 a)
1. vygenerujte 4 periody tónu 500 Hz
Pomocný výpočet: mov call
P1,#11111110B CAS5MS
;rozsvícení diody ;pauza 5 ms
f = 500 Hz
mov call
P1,#11111101B CAS10MS
;rozsvícení diody ;pauza 10 ms
mov
R4,#4
;počet period
mov call
P1,#11111011B CAS20MS
;rozsvícení diody ;pauza 20 ms
call djnz
PERIODA R4,START
;volá 1 periodu tónu
mov call
P1,#11110111B CAS50MS
;rozsvícení diody ;pauza 50 ms
jmp
KONEC
;zacyklení programu
mov call
P1,#11101111B CAS100MS
;rozsvícení diody ;pauza 0,1 s
mov call
P1,#11011111B CAS200MS
;rozsvícení diody ;pauza 0,2 s
PULPERPIP CAS100MS CAS100MS
;volá 0,5 periodu tónu ;čtvrt periody ticho ;čtvrt periody ticho
mov call
P1,#10111111B CAS500MS
;rozsvícení diody ;pauza 0,5 s
R3,#100
;100x opakuje periodu 500 Hz
mov call
P1,#01111111B CAS1000MS
;rozsvícení diody ;pauza 1 s
mov
P1,#00000000B
;rozsvícení všech diod
KONEC:
=>
T = 0,002 s
START:
KONEC:
PERIODA: call call call ret PULPERPIP: mov PPPJMP: call djnz ret
PIP R3,PPPJMP
PIP: jmp KONEC
;zacyklení programu
include (MSKCAS.ASM)
;použití podprogramu s čas.
end
setb call clr call ret
P1.0 CAS1MS P1.0 CAS1MS
include (MSKCAS.ASM) end
;perioda pro zvuk 500 Hz ;reproduktor - pip ;1 ms pauza ;reproduktor - ticho ;1 ms pauza ;použití podprogramu s čas.
ÚLOHA č.4
27.2.2001
Tomáš Mořkovský, M4
Zadání úlohy:
ÚLOHA č.6
6.3.2001
Tomáš Mořkovský, M4
Zadání úlohy: 1. při stisku klávesy "1" : zazní tón 500 Hz po dobu 0,1 s 2. při stisku klávesy "2" : zazní tón 1000 Hz po dobu 0,1 s 3. při stisku klávesy "3" : zazní tón 2000 Hz po dobu 0,1 s
1. realizujte obsazovací tón telefonu (opakujte 3x)
Pomocný výpočet: f = 500 Hz
=>
START:
T = 0,002 s
R0,#3
;počet opakování
START: call call
TON250MS DEL250MS
;250 ms tón ;250 ms ticho
call call call
TON250MS TON250MS TON250MS
;250 ms tón ;250 ms tón ;250 ms tón
call call call
DEL250MS DEL250MS DEL250MS
;250 ms ticho ;250 ms ticho ;250 ms ticho
djnz
R0,START
mov
P1,#11011111B P1.3,KLAV1 P1,#10111111B P1.3,KLAV2 P1,#01111111B P1.3,KLAV3 START
;nastavení „0“ pro 1. sloupec ;kontrola 1. Řádku, (1) ;nastavení „0“ pro 2. sloupec ;kontrola 1. Řádku, (2) ;nastavení „0“ pro 3. sloupec ;kontrola 1. Řádku, (3)
R7,#50 P3.0 CAS1MS P3.0 CAS1MS R7,ZVUK1 START
;50x opakuje periodu 500 Hz
mov
R7,#100
;100x opakuje periodu 1000 Hz
setb call clr call djnz jmp
P3.0 CAS05MS P3.0 CAS05MS R7,ZVUK2 START
mov
R7,#200
setb call clr call djnz jmp
P3.0 CAS025MS P3.0 CAS025MS R7,ZVUK3 START
mov jnb mov jnb mov jnb jmp KLAV1: mov ZVUK1: setb call clr call djnz jmp KLAV2:
KONEC: jmp KONEC
;zacyklení programu ZVUK2:
TON250MS: mov T25J: call djnz ret DEL250MS: call call ret
R4,#125 PIP R4,T25J
;ticho = pauza 125 ms CAS200MS CAS50MS
PIP: setb call clr call ret
P1.0 CAS1MS P1.0 CAS1MS
include (MSKCAS.ASM) end
;tón po dobu 125 ms ;125x opakuje periodu 500 Hz
KLAV3: ;200x opakuje periodu 2000 Hz
ZVUK3:
;perioda pro zvuk 500 Hz ;reproduktor - pip ;1 ms pauza ;reproduktor - ticho ;1 ms pauza
include (MSKCAS.ASM) ;použití podprogramu s čas.
end
;použití podprogramu s čas.
ÚLOHA č.5
6.3.2001
Tomáš Mořkovský, M4
Zadání úlohy: 1. na 7-segmentovce (Port 1) zobrazujte stisknutou klávesu (Port 3)
jmp
START
;přeskočení časové prodlevy
SEG5:
ZNOVU: call
CAS500MS
;časová prodleva pro 7-seg.
P3,#11111111B
;zhasnutí 7-seg.
mov jnb jnb jnb jnb
P1,#11011111B P1.3,SEG1 P1.2,SEG4 P1.1,SEG7 P1.0,SEGU
;nastavení „0“ pro 1. sloupec ;kontrola 1. Řádku, (1) ;kontrola 2. řádku, (4) ;kontrola 3. řádku, (7) ;kontrola 4. řádku, (U)
mov jnb jnb jnb jnb
P1,#10111111B P1.3,SEG2 P1.2,SEG5 P1.1,SEG8 P1.0,SEG0
;nastavení „0“ pro 2. sloupec ;kontrola 1. řádku, (2) ;kontrola 2. řádku, (5) ;kontrola 3. řádku, (8) ;kontrola 4. řádku, (0)
mov jnb jnb jnb jnb
P1,#01111111B P1.3,SEG3 P1.2,SEG6 P1.1,SEG9 P1.0,SEG_
;nastavení „0“ pro 3. sloupec ;kontrola 1. řádku, (3) ;kontrola 2. řádku, (6) ;kontrola 3. řádku, (9) ;kontrola 4. Řádku, (_)
jmp
ZPET
;opakování kontroly kláves
mov jmp
P3,#11000000B START
;zobrazení „0“
mov jmp
P3,#11111001B START
;zobrazení „1“
mov jmp
P3,#10100100B START
;zobrazení „2“
mov jmp
P3,#10110000B START
;zobrazení „3“
mov jmp
P3,#10011001B START
;zobrazení „4“
P3,#10010010B START
;zobrazení „5“
mov jmp
P3,#10000010B START
;zobrazení „6“
mov jmp
P3,#11111000B START
;zobrazení „7“
mov jmp
P3,#10000000B START
;zobrazení „8“
mov jmp
P3,#10010000B START
;zobrazení „9“
mov jmp
P3,#11100011B START
;zobrazení „U“
mov jmp
P3,#11110111B START
;zobrazení „_“
SEG6:
START: mov
mov jmp
SEG7:
ZPET:
SEG8:
SEG9:
SEGU:
SEG_:
include (MSKCAS.ASM) end
SEG0:
SEG1:
SEG2:
SEG3:
SEG4:
;použití podprogramu s čas.
ÚLOHA č.7 a
20.3.2001
Tomáš Mořkovský, M4
Zadání úlohy:
ÚLOHA č.7 b
20.3.2001
Tomáš Mořkovský, M4
Zadání úlohy:
1. čítač-časovač: realizujte blikání LED diody na P1: 1s (ON), 1s (OFF), užij čítač-časovač 0 Pomocný výpočet:
1. čítač-časovač: realizujte blikání LED diody na P1: 1s (ON), 1s (OFF) celkem 4x toto bliknutí opakuj, užij čítač-časovač 0 Pomocný výpočet:
- volba 16 bitového plnění časovače (ideální pro realizaci 1s) - 1s : 2^16 bit = 65536 us Æ 1s / 65536us = 15,2 - 15,2 zaokrouhlíme na 15 (počet opakování naplnění reg. TL1,TH1)
- volba 16 bitového plnění časovače (ideální pro realizaci 1s) - 1s : 2^16 bit = 65536 us Æ 1s / 65536us = 15,2 - 15,2 zaokrouhlíme na 15 (počet opakování naplnění reg. TL1,TH1)
mov setb
TMOD,#00000001B TR0
;nastaveni 1.módu č/č 0 ;spuštění č/č 0
mov
R0,#15
;počet naplnění reg. TL0,TH0
START:
clr
TF0
;vynuluje čítač plnění
HOP:
jnb djnz cpl jmp end
TF0,SEM R0,HOP P1.1 START
;přeteče-li čítač, skoč na SEM ;R0 x opakuje naplnění TL0,TH0 ;rozsvítí nebo zhasne diodu ;opakuj cyklus
SEM:
mov mov setb
R1,#8 TMOD,#00000001B TR0
;počet opak. rozsv./zhas. diody ;nastaveni 1.módu č/č 0 ;spuštění č/č 0
mov
R0,#15
;počet naplnění reg. TL0,TH0
clr
TF0
;vynuluje čítač plnění
jnb djnz cpl djnz end
TF0,SEM R0,HOP P1.1 R1,START
;přeteče-li čítač, skoč na SEM ;R0 x opakuje naplnění TL0,TH0 ;rozsvítí nebo zhasne diodu ;R1 x opak. rozsv./zhas. diody
START: HOP: SEM:
ÚLOHA č.7 c
20.3.2001
Tomáš Mořkovský, M4
Zadání úlohy:
ÚLOHA č.7 d
20.3.2001
Tomáš Mořkovský, M4
Zadání úlohy:
1. čítač-časovač: realizujte blikání LED diody na P1: 0,5s (ON), 0,5s (OFF) celkem 4x toto bliknutí opakuj, užij čítač-časovač 0 Pomocný výpočet:
1. čítač-časovač: realizujte blikání LED diody na P1: 1s (ON), 1s (OFF) celkem 4x toto bliknutí opakuj, užij čítač-časovač 1 Pomocný výpočet:
- volba 16 bitového plnění časovače (ideální pro realizaci 1s) - 1s : 2^16 bit = 65536 us Æ 0,5s / 65536us = 7,6 - 7,6 zaokrouhlíme na 8 (počet opakování naplnění reg. TL1,TH1)
mov mov setb
R1,#8 TMOD,#00000001B TR0
;počet opak. rozsv./zhas. diody ;nastaveni 1.módu č/č 0 ;spuštění č/č 0
mov
R0,#8
;počet naplnění reg. TL0,TH0
START:
- volba 16 bitového plnění časovače (ideální pro realizaci 1s) - 1s : 2^16 bit = 65536 us Æ 1s / 65536us = 15,2 - 15,2 zaokrouhlíme na 15 (počet opakování naplnění reg. TL1,TH1)
mov mov setb
R1,#8 TMOD,#00010000B TR1
;počet opak. rozsv./zhas. diody ;nastaveni 1.módu č/č 1 ;spuštění č/č 1
mov
R0,#15
;počet naplnění reg. TL1,TH1
clr
TF1
;vynuluje čítač plnění
jnb djnz cpl djnz end
TF0,SEM R0,HOP P1.1 R1,START
;přeteče-li čítač, skoč na SEM ;R0 x opakuje naplnění TL1,TH1 ;rozsvítí nebo zhasne diodu ;R1 x opak. rozsv./zhas. diody
START:
HOP:
HOP: clr
TF0
;vynuluje čítač plnění
SEM:
SEM: jnb djnz cpl djnz end
TF0,SEM R0,HOP P1.1 R1,START
;přeteče-li čítač, skoč na SEM ;R0 x opakuje naplnění TL0,TH0 ;rozsvítí nebo zhasne diodu ;R1 x opak. rozsv./zhas. diody