Avtor:
Miha Filipič
1. Naloga
2. Pristop k problemu
3. Shema
4. Program
Izdelati programski del, ki bo ob vklopu ploterja postavil pero v začetni položaj – izhodišče. Izdelati tudi programski del, ki bo omogočal krmiljenje ploterja preko tipk, ki so del ploterja.
Ob vklopu je potrebno pero pripeljati v začetni položaj,
ki je deločen v horizontalni (x) koordinati s senzorjem (opto zaporo) –
skrajni desni položaj. V vertikanli koordinati (y) naj ne pride do nobene
spremembe – uporabnik z vstavitvijo papirja sam nastavi začetni položaj.
Kot je iz sheme razvidno se komunikacija odvija preko DPRA in DPRB.
DPRA:
|
|
||||||
|
|
|
|
|
|
|
|
DPRB: krmiljenje koračnih motorjev.
SUBRUTINA VOZI - inicijalizacija
VOZI | psha | ;klic inicial. z labelo VOZI | |
pshb | |||
pshx | |||
ldaa | #%00000001 | ;dvigni pero | |
staa | _DPRA | ||
ldaa | MOTX | ||
lsla | ;smer desno rotiraj levo | ||
bcc | NASL | ;pazi na C | |
inca | |||
NASL | staa | MOTX | |
ldab | #%11110000 | ;spodnji 4 biti MOTX so pomembni | |
andb | _DPRB | ||
stab | _DPRB | ||
anda | #%00001111 | ;izpisi le spodnje 4 bite na _DPRB | |
oraa | _DPRB | ;zgornji 4 biti morajo biti nespremenjeni | |
staa | _DPRB | ||
ldaa | #$FF | ||
PAVZ | deca | ;pavza za to da motor dohaja | |
bne | PAVZ | ||
pulx | |||
pulb | |||
pula | |||
rts |
Program izvede naslednje: dvigne pero, in začne rotirati koračni motorček x smeri v levo, tako da se pero pomika v desno – proti opto zapori.
Funkcijo VOZI se kliče na začetku glavnega programa in
sicer tako dolgo dokler ni opto zapora prekinjena preide PA2 v visoko logicno
stanje “1”:
;***********************************************************
;********************** MAIN PROGRAM ***********************
;***********************************************************
MAIN | |||
INIJ | jsr | VOZI | |
ldab | _DPRA | ;nalozi _DPRA | |
andb | #%00000100 | ;in ga testiraj ce je opto zapora prekinjena | |
beq | INIJ | ;ce ni vozi dalje | |
… | ; naprej glavni program … |
SUBRUTINA TIPKE
Ploter dobi off-line ukaz če pritisnemo
srednjo tipko. S tem prekinemo izvajane ukazov, ki jih ploter sprejema
od računalnika. Sedaj lahko s tipkami T1, T2, T4 in T5 premikamo papir
in glavo – pero ploterja. S pritiskom na srednjo tipko in nato ne da bi
jo spustili še na tipko T2 ali T4 pero
ploterja spustimo oziroma dvignemo. Printer gre v on-line stanje če pritisnemo
srednjo tipko in ne da bi jo spustili še spodnjo tipko. Srednja tipka tako
služi kot pekinitvena tipka in nato kot kontrolna tipka za dodatne funkcije
tipk.
TIPKE | psha | ||
pshb | |||
pshx | |||
ldaa | _DPRA | ;nalozi DPRA v akumulator | |
bita | #%01100000 | ;testira ce sta pritisnjeni T3 in T4 | |
beq | PUP | ;skoci na PUP – pen up | |
bita | #%00110000 | ;testira ce sta pritisnjeni T3 in T2 | |
beq | PDN | ;skoci na PDN – pen down | |
bita | #%10100000 | ;testira ce sta pritisnjeni T3 in T5 | |
beq | TSTART | ;skoci na TSTART – on line | |
bita | #%10000000 | ;testira ce je pritisnjena tipka T5 | |
beq | TSPOD | ;skoci na TSPOD – premik papirja | |
bita | #%01000000 | ;testira ce je pritisnjena tipka T4 | |
beq | TDESNO1 | ;skoci na TDESNO1 – premik peresa | |
bita | #%00100000 | ;testira ce je pritisnjena tipka T3 | |
beq | TSRED | ;skoci na TSRED – off line | |
bita | #%00001000 | ;testira ce je pritisnjena tipka T1 | |
beq | TZGOR | ;skoci na TSPOD – premik papirja | |
bita | #%00010000 | ;testira ce je pritisnjena tipka T2 | |
beq | TLEVO1 | ;skoci na LEVO1 – premik peresa | |
clr | KBDKEY | ;tipka ni bila pritisnjena | |
pulx | |||
pulb | |||
pula | |||
rts | |||
PUP | ldaa | _DPRA | ;nalozi DPRA |
oraa | #%00000001 | ;maskiraj zadnji bit – postane “1” | |
staa | _DPRA | ;penUP – dvigni pen | |
ldaa | #$FF | ;tipka je bila pritisnjena | |
staa | KBDKEY | ||
pulx | |||
pulb | |||
pula | |||
rts | |||
PDN | ldaa | _DPRA | ;nalozi DPRA |
anda | #%11111110 | ;maskiraj zadnji bit – postane “0” | |
staa | _DPRA | ;penDOWN | |
ldaa | #$FF | ;tipka je bila pritisnjena | |
staa | KBDKEY | ||
pulx | |||
pulb | |||
pula | |||
rts | |||
TSRED | ldaa | UKAZ | ;nalozi UKAZ |
staa | TUKAZ | ;shrani ga v TUKAZ | |
ldaa | #%00000001 | ; vrednost “00000001” - STOP | |
staa | UKAZ | ;zapisi v UKAZ | |
ldaa | #$FF | ;tipka je bila pritisnjena | |
staa | KBDKEY | ||
pulx | |||
pulb | |||
pula | |||
rts | |||
TSTART | ldaa | #%00000000 | ;vrednost “00000000” |
staa | UKAZ | ;zapisi v UKAZ – brise STOP bit | |
ldaa | #$FF | ;tipka je bila pritisnjena | |
staa | KBDKEY | ||
pulx | |||
pulb | |||
pula | |||
rts | |||
TLEVO1 | bra | TLEVO | ;podaljšanje skoka na TLEVO |
TDESNO1 | anda | #%00000100 | ;ce opto zapora ni prekinjena |
beq | TDESNO | ;skoci naprej na TDESNO | |
bra | TIPKK | ;skoci na konec subrutine | |
TZGOR | ldaa | MOTY | ;polozaj motorja Y |
lsla | ;rotiranje | ||
bcc | NEXTGD | ;tako da se bo | |
inca | ;papir pomikal stran od uporabnika | ||
bra | NEXTGD | ||
TSPOD | ldaa | MOTY | ;polozaj motorja Y |
lsra | ;rotiranje | ||
bcc | NEXTGD | ;tako da se bo papir | |
oraa | #%10000000 | ;pomikal k uporabniku | |
NEXTGD | staa | MOTY | ;NASLAVLJANJE DPRB ZA MOTORJE |
ldab | #%00001111 | ;zgornji 4 biti MOTY so pomembni | |
andb | _DPRB | ||
stab | _DPRB | ||
anda | #%11110000 | ;spremeni le zgornje 4 bite na _DPRB | |
oraa | _DPRB | ;spodnji 4 biti morajo ostati isti | |
staa | _DPRB | ||
ldaa | #$FF | ;tipka je bila pritisnjena | |
staa | KBDKEY | ||
bra | TIPKK | ;skok na konec subrutine | |
TLEVO | ldaa | MOTX | ;nalozi MOTX |
lsra | ;smer levo rotiraj desno | ||
bcc | NEXTLD | ||
oraa | #%10000000 | ;pazi na C | |
bra | NEXTLD | ||
TDESNO | ldaa | MOTX | |
lsla | ;smer desno rotiraj levo | ||
bcc | NEXTLD | ;pazi na C | |
inca | |||
NEXTLD | staa | MOTX | ;NASLAVLJANJE DPRB ZA MOTORJE |
ldab | #%11110000 | ;spodnji 4 biti MOTX so pomembni | |
andb | _DPRB | ||
stab | _DPRB | ||
anda #%00001111 | ;izpisi le spodnje 4 bite na _DPRB | ||
oraa | _DPRB | ;zgornji 4 biti morajo biti nespremenjeni | |
staa | _DPRB | ||
LZAP | ldaa | #$FF | ;labela LZAP ni uporabljena |
staa | KBDKEY | ; tipka je bila pritisnjena | |
bra | TIPKK | ||
TIPKK | pulx | ;konec subrutine | |
pulb | |||
pula | |||
rts |
Tekst je napisal Miha Filipič
Stran je uredil Miha Krejan
32. Marec 1999