PP - Návrh MIT aplikace: Porovnání verzí
Skočit na navigaci
Skočit na vyhledávání
Založena nová stránka: Zadání Dokumentace bude obsahovat: # Zadání # Blokové schéma # Výpis programu s komentáři # Seznam HW, SW # Zdroj informací |
Bez shrnutí editace |
||
Řádek 8: | Řádek 8: | ||
# Seznam HW, SW | # Seznam HW, SW | ||
# Zdroj informací | # Zdroj informací | ||
Vzor: | |||
K portu P1 mikropočítače je připojen modul 8xLED, k portu P3 modul 8xDIP. Napište a odlaďte program, který zajistí blikání té diody, která bude vybrána dolními třemi bity přepínače (na dalších bitech nezáleží): | |||
000 …………… bliká dioda na P1.0 | |||
001 …………… bliká dioda na P1.1 | |||
: | |||
111 …………… bliká dioda na P1.7 | |||
Vybraná dioda bude svítit 0,8 s a zhasnuta bude 0,5 s. Uvažujte kmitočet oscilátoru 12 MHz. | |||
[[Soubor:MCU-blok-schema-01.png|8051 s LED a DIP]] | |||
<source lang="asm"> | |||
; ************************************************************** | |||
; blikani diody vybrane dolnimi tremi bity na DIP prepinaci | |||
; ************************************************************** | |||
;include REG51.INC | |||
org 0 | |||
;--------------------------------------------------------------- | |||
start: mov a,p3 ; nacteni stavu prepinace | |||
anl a,#00000111b ; maskovani nepouzivanych bitu | |||
prevod: mov b,a ; uschovani prectene informace | |||
mov r0,a ; poradi blikajici diody do r0 | |||
inc r0 ; v r0 pocet rotaci | |||
mov a,#10000000b ; pocatecni byte do akumulatoru | |||
;--------------------------------------------------------------- | |||
rotuj: rl a ; prevod bin. kodu na kod 1 z 8 | |||
djnz r0,rotuj | |||
mov r7,a ; uschovani kodu 1 z 8 do r7 | |||
;--------------------------------------------------------------- | |||
rozsv: mov a,r7 | |||
xrl p1,a ; rozsviceni odpovidajici diody | |||
;acall z_08s | |||
;orl p1,a ; zhasnuti diody | |||
;acall z_05s | |||
mov a,p3 ; nove nacteni stavu prepinace | |||
anl a,#00000111b ; maskovani | |||
cjne a,b,prevod ; zadana nova kombinace? - ano, novy prevod | |||
sjmp rozsv ; ne, rozsviceni teze diody | |||
;-------------------------------------------------------------- | |||
z_08s: mov r3,#8 ; zpozdovaci podprogram | |||
sjmp cek1 | |||
z_05s: mov r3,#5 | |||
cek1: mov r2,#200 | |||
cek2: mov r1,#250 | |||
djnz r1,$ | |||
djnz r2,cek2 | |||
djnz r3,cek1 | |||
ret | |||
;-------------------------------------------------------------- | |||
end | |||
</source> |
Verze z 7. 9. 2017, 12:28
Dokumentace bude obsahovat:
- Zadání
- Blokové schéma
- Výpis programu s komentáři
- Seznam HW, SW
- Zdroj informací
Vzor:
K portu P1 mikropočítače je připojen modul 8xLED, k portu P3 modul 8xDIP. Napište a odlaďte program, který zajistí blikání té diody, která bude vybrána dolními třemi bity přepínače (na dalších bitech nezáleží):
000 …………… bliká dioda na P1.0 001 …………… bliká dioda na P1.1 : 111 …………… bliká dioda na P1.7
Vybraná dioda bude svítit 0,8 s a zhasnuta bude 0,5 s. Uvažujte kmitočet oscilátoru 12 MHz.
; **************************************************************
; blikani diody vybrane dolnimi tremi bity na DIP prepinaci
; **************************************************************
;include REG51.INC
org 0
;---------------------------------------------------------------
start: mov a,p3 ; nacteni stavu prepinace
anl a,#00000111b ; maskovani nepouzivanych bitu
prevod: mov b,a ; uschovani prectene informace
mov r0,a ; poradi blikajici diody do r0
inc r0 ; v r0 pocet rotaci
mov a,#10000000b ; pocatecni byte do akumulatoru
;---------------------------------------------------------------
rotuj: rl a ; prevod bin. kodu na kod 1 z 8
djnz r0,rotuj
mov r7,a ; uschovani kodu 1 z 8 do r7
;---------------------------------------------------------------
rozsv: mov a,r7
xrl p1,a ; rozsviceni odpovidajici diody
;acall z_08s
;orl p1,a ; zhasnuti diody
;acall z_05s
mov a,p3 ; nove nacteni stavu prepinace
anl a,#00000111b ; maskovani
cjne a,b,prevod ; zadana nova kombinace? - ano, novy prevod
sjmp rozsv ; ne, rozsviceni teze diody
;--------------------------------------------------------------
z_08s: mov r3,#8 ; zpozdovaci podprogram
sjmp cek1
z_05s: mov r3,#5
cek1: mov r2,#200
cek2: mov r1,#250
djnz r1,$
djnz r2,cek2
djnz r3,cek1
ret
;--------------------------------------------------------------
end