Assembler - 5. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Assembler - 5. lekceAssembler - 5. lekce

 

Assembler - 5. lekce

Google       Google       30. 8. 2005       20 619×

• Vnější přerušení
• Neprobrané registry..

Reklama
Reklama
Vnější přerušení


Po vnějším ovlivnění určitého bitu portu procesor ihned skončí příkaz a přejde na adresu přerušení (03H a 13H) a po vykonání programu přerušení se příkazem RETI vrátí tam, kde zrovna skončil v hlavním programu, ovšem nejdřív je zapotřebí povolit přerušení, to se nastavuje v osmi bitovém registru IE, významy jednotlivých bitů jsou popsány v závěru lekce.

µprocesor, který my budeme používat má dvě vnější přerušení:
INT0 a INT1 a jsou vyvedené na portu P3 na druhém a třetím bitu.


Ukázka níže vytváří "maják" s osmi LED diodami které jsou připojené na port P2 a rychlost otáčení měníme změnou úrovně na portu P3.2 - zpomalení a P3.3 - zrychlení

Ukázka: ORG 0
RYCHLOST EQU 30H
JMP START
ORG 03H ;ADRESA PRERUSENI P3.2
MOV RYCHLOST,#15 ;PROGRAM PRERUSENI
RETI ;NAVRAT DO HLAVNÍHO PROGRAMU

ORG 13H ;ADRESA PRERUSENI P3.3
MOV RYCHLOST,#5 ;PROGRAM PRERUSENI
RETI ;NAVRAT DO HLAVNÍHO PROGRAMU

START: ;HLAVNI PROGRAM
MOV IE, #10000101 ;POVOLENI PRERUSENI
MOV TMOD,#1 ;NASTAVENI MODU CASOVACE
SETB TR0 ;POVOLENI CASOVACE
MOV RYCHLOST,#5 ;ZAKLADNI RYCHLOST

MOV A, #0FFH

ROTACE: MOV P0, A
RLC A
CALL CAS
JMP ROTACE


CAS: MOV R5, RYCHLOST ;CASOVAC
ZPET: JBC TF0, DAL
SJMP ZPET
DAL: DJNZ R5, ZPET
RET
END


Příklad si opět můžete vyzkoušet v simulátoru As51, abyste nemuseli tak dlouho čekat, dejte středník před CALL ZPOZDENI a už budete vidět, jak akumulátor rotuje. Pokud budete chtít simulovat vnější přerušení, pak jen zmáčknete F5 a najedete na port P3 a přepíšete ho na FB – interup 0, nebo F7 – interup 1, poté se vrátíte k trasování F10-kou, jednou odtrasujete a v programu vám to odskočí na adresu 03H nebo 13H, poté můžete zpět přepsat P3 na FF, aby to po skončení programu přerušení neskočilo zase na přerušení, záleží jak je nastavený TCON.


Neprobrané registry

Pokud chcete mít přehled v nastavení, nebo aktuálního stavu čehokoli v mikroprocesoru, pak čtěte pozorněji. V programu AS51 v hlavním nabídkovém menu v položce VIEW první a druhá položka nás nebude zajímat, protože to slouží k prohlížení externích pamětí, ale další položkou pod názvem REGISTER BANK se dá přepínat banky registru R0 – R7 využívá se to třeba, když v podprogramu využíváte registry, které už používáte někde jinde v programu.

Poslední dvě položky 1st a 2nd Remember obsahují stejné detailní zobrazení jednotlivých registrů v pravém dolním okénku s názvem ZOOM.


IE – Interrup enable
EA Je-li v 1, pak globálně povoluje přerušení
ES Povolení přerušení od sériové linky (23H)
ET1 Povolení přerušení přetečením časovače 1 (1BH)
EX1 Povolení přerušení externím zdrojem přerušení INT1 (13H)
ET0 Povolení přerušení přetečením časovače 0 (0BH)
EX0 Povolení přerušení externím zdrojem přerušení INT0 (03H)

IP - Interrup priority (které přerušení je důležitější)
PX0 Externí 0
PT0 Timer0
PX1 Externí 1
PT1 Timer1
PS Sériový port

PSW
CY Carry flag
AC Auxiliary carry
F0 Flag0 - pro volné použití
RS1 Register bank selector bit1
RS0 Register bank selector bit0
OV Overflow flag
-
P Parity flag. Každá instrukce jej nastaví dle počtu jedniček v A

SCON - Nastavení sériového rozhraní


Registry které nejsou bitově adresovatelné:
(je třeba je naplnit celé jedním bajtem v kuse)

PCON - Power control register
SMOD Po resetu v 0, při nastavení do 1, zvýší přenosovou rychlost sériového portu na dvojnásobek.
GF1 General purpose flag bit - libovolné použití.
GF0 General purpose flag bit - libovolné použití.
PD Power down bit. Nastavením přejde do power down módu, není u neCMOS 51 implementován.
IDL Idle mode bit. Nastavením přejde do power idle módu, není u neCMOS 51 implementován.

TCON - Program status word
TF1 Nahozením do 1 oznámí, že nám přetekl timer1.
TR1 Nahozením do 1 povolíme timer1, shozením do 0 ho zastavíme.
TF0 Nahozením do 1 oznámí, že nám přetekl timer0.
TR0 Nahozením do 1 povolíme timer0, shozením do 0 ho zastavíme.
IE1 External interrupt 1 edge flag. Nastaví se při shození pinu /INT1 do nuly.
IT1 Interrupt 1 type control bit. nastavení, jestli k externímu přerušení dojde
sestupnou hranou nebo nízkou úrovní na pinu /INT1.
IE0 External interrupt 0 edge flag. Nastaví se při shození pinu /INT0 do nuly.

TMOD -(nižší bity jsou od časovače 0)
GATE Je-li v 1, pak běží čítač/časovač jen je-li pin /INT1 ve vysoké úrovni (a je nastaven TR1=1 v TCON), je-li v 0, pak běží jen v závislosti na TR1.
C/T Přepínání mezi čítačem a časovačem. Je-li 0, pak pracuje jako časovač, je-li 1 pak jako čítač.
M1 Výběr módu 1.
M0 Výběr módu 0.


DU :
Vytvořte program, který rozbliká LED na portu P2 a nultém bitu. Rychlost bude 1 sekunda, ta se ovšem bude měnit pomocí vnějšího přerušení v rozsahu 0,5 až 1 sekunda po 0,1s. Tak že jedním přerušením se sníží rychlost o 0,1 a druhým se navýší. Bude zapotřebí zajistit aby rychlost byla pouze v tomto rozsahu. Rychlost bude zobrazována na P2.2-7, tedy pokud rychlost bude 0,7 pak bude v jedničce P2.2-4 a pokud bude rychlost 0,5 pak bude v jedničce pouze P2.2 .

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
Autor programuje v Assembleru, zajímá se o elektroniku a tunning PC.

Nové články

Reklama
Reklama
Obrázek ke článku Blockchain & Bitcoin konference

Blockchain & Bitcoin konference

V pátek 19. 5. 2017 se v pražském konferenčním centru Andel’s konala Blockchain & Bitcoin konference. Řada odborníků a podnikatelů v oboru blockchainu a kryptoměn představila možnosti budoucího směřování tohoto oboru. Speakeři většinou rusky mluvící provenience prezentovali řešení svých firem založená na technologii blockchainu.

Obrázek ke článku Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Bezpečnostní tým Cisco Talos odhalil celkem 4 kampaně dosud neobjeveného malwaru, který dostal jméno KONNI. Ten se dokázal úspěšně maskovat od roku 2014. Zpočátku se malware zaměřoval pouze na krádeže citlivých dat. Za 3 roky se ale několikrát vyvinul, přičemž jeho současná verze umožňuje útočníkovi z infikovaného počítače nejenom krást data, ale i mapovat stisky na klávesnici, pořizovat screenshoty obrazovky či v zařízení spustit libovolný kód. Pro odvedení pozornosti oběti zasílali útočníci v příloze také obrázek, zprávu a výhružkách severokorejského režimu či kontakty na členy mezinárodních organizací.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý