Autor Zpráva
Vladosik
Profil
Ahoj. Nejdřív trochu omáčky okolo, kdyžtak přeskočte.
Umíte někdo základní programovací jazyk Assembler, jak říká náš učitel? Potřebuji pomoc se školní prací.
Každý z naší skupiny ve škole měl udělat ke konci semestru program, jenže jazyk uměl jen jeden z nás a ten odešel během roku pracovat. Během té doby to naprogramoval všem spolužákům, ale já byl flaxní a byl až na konci seznamu, nakonec se na mě nedostalo.
Zkusil mi jen něco napsat, bohužel to vyhazuje jeden nebo dva Errory. Já to vůbec neumím a nevím jak to napravit. Opravný termín se mi už blíží.

Nyní tedy k tomu programu.
Pokud je tu někdo, kdo Assembler ovládá a mrknul by mi na to, budu rád a zachráněn:-)
Kód je zde:


include reg51.inc

start: jnb P1.0,A_down ;test tlac A pri "0" skok na návěští, jinak další řádek
jnb P1.1,B_down ;test tlac B pri "0" skok na návěští, jinak další řádek

sjmp start ;skok na návěští start

A_down: jnb R4.0,light_switch; pokud uz je tlacitko ulozeno v pameti rozsvit/zhasni

;pokud neni tlacitko ulozeno v pameti
acall delay ; pockej a pak..skok na podprogram zpoždění
jb P1.0,start; ..pokud uz neni tlacitko stisknuto neprovadej nic
mov R4,#00000000; ale pokud je stale stisknuto, uloz tlacitko do pameti
sjmp start

B_down:
; analogicka fce jako u A_sepnut
jnb R5,0,light_switch

acall delay
jb P1.1,start
mov R5,#00000000
sjmp start

light_switch:
cpl P1.2 ; rozsviceni/zhasnuti osvetleni
sjmp start

;------------------------------------
; podprogram zpozdeni

delay: mov R1,#200
delay_1: mov R2,#200
delay_2: mov R3,#200
delay_3: djnz R3,delay_3
djnz R2,delay_2
djnz R1,delay_1
ret

end


Jakou to hází chybu je vidět na tomto obrázku.

Děkuji za případnou pomoc.
Mike8748
Profil
a radky 15 a 25 jsou ktery?
Mike8748
Profil
B_down:

; analogicka fce jako u A_sepnut

jnb R5,0,light_switch


- preklep, mas tam carku misto tecky u R5
Vladosik
Profil
Mike8748
Zajímavé, i na obrázku je vidět, že tam tečku mám, nevím kde se stala chyba, že zde na diskusi ze zobrazila carka...

Omlouvam se, myslel jsem ze je na obrazku videt, o ktere se jedna radky.
Radek 15 je
A_down:	jnb R4.0,light_switch; registr, do ktereho se uklada jestli uz bylo tlacitko stisknuto nebo ne (stejne jako R5), podle toho rozsvit/zhasni

Radek 25 je
jnb R5.0,light_switch

(Ta tecka tam skutecne je)
Mike8748
Profil
hmm, tak uz asi vim

jnb je mozny pouzit pouze na promeny z BIT prostoru (adresa 20h az nekam, uz nevim)

registry jsou pred tim(0 az 1fh), takze proto to nejde

muzes to skusit nahradit konstrukci

cmp r4,#0
jz light_switch

(stejne neni duvod testovat R4 a 5 pouze na prvni bit, kdyz pri zapisu zapisujes 0 do celyho registru)
Vladosik
Profil
Mike8748
Díky. Co přesně mám nahradit?
Tím
jz light_switch
jsem nahradil ten radek 25 a chybu uz to nehlasi.
A tím
cmp r4,#0
jsem nahradil ten radek 15, ale hazi to Syntax Error.
Mike8748
Profil
radek 15, misto jnb R4.0,light_switch;
das

cmp r4,#0
jz light_switch


radek 25, misto jnb R5.0,light_switch

cmp r5,#0
jz light_switch

Vaše odpověď

Mohlo by se hodit

Příspěvky nesouvisející s webem budou odstraněny.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0