Inicijalizacija ploterja in krmiljenje preko tipk

Avtor:
Miha Filipič

VSEBINA

1.    Naloga
2.    Pristop k problemu
3.    Shema
4.    Program



 
 

1. Naloga

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.



Vsebina


2. Pristop k problemu

    1. Inicijalizacija

    2. 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.

    3. Tipke
Preko petih tipk na ploterju je potrebno realizirati krmiljeneje naslednjih funkcij: Ker je zahteva po realizaciji osmih funkcij tipk pa je le pet, sem se odlocil da bo ena tipka služila tudi kot kontrlolna tipka – ki bo drugim tipkam določala funkcijo (tako kot tipka Shift, Ctrl in Alt na PC tipkovnici).
Vsebina

3. Shema

Kot je iz sheme razvidno se komunikacija odvija preko DPRA in DPRB.

DPRA:
 
MSB
           
LSB
spodnja
desna
srednja
leva
zgornja
senzor
/
pero

 

DPRB: krmiljenje koračnih motorjev.
 
 

Vsebina


4. Program

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

 

Vsebina


GLAVNA STRAN

Tekst je napisal Miha Filipič
Stran je uredil Miha Krejan

32. Marec 1999