logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Przepisanie kodu z Bascom na ASM dla AT89C2051 - ustawienie P1.7

buli196 03 Wrz 2010 09:37 1401 3
REKLAMA
  • #1 8470721
    buli196
    Poziom 12  
    Posty: 45
    Pomógł: 1
    Ocena: 1
    Witam,
    Proszę o pomoc w przepisaniu kodu z języka bascom na asm. Program ma za zadanie ustawić odpowiednia stan (niski/wysoki) na wyjściu P1.7 po sprawdzeniu pinów P1.1 i P1.3. Kod programu niestety muszę mieć w asm ( z którego jestem praktycznie zielony ).
    Wstawiam poniżej część kodu, która nie wiem jak napisać w asm (program może pracować w pętli).
    
    sub spraw
    
    if p1.1=0 and p1.3=0 then
    	reset p1.7
    		else 
    		if p1.1=1 and p1.3=0 then
    		set p1.7
    				else 
    				if p1.1=1 and p1.3=1 then
    				reset p1.7
    					else 
    					if p1.1=0 and p1.3=1 then
    					reset p1.7
    						else 
    						wait 3
    						
    						
    					end if
    				end if
    		end if
    end if
    call spraw
    


    Proszę poprawić tytuł!
    Robak
  • REKLAMA
  • #2 8471156
    tronics
    Poziom 38  
    Posty: 5067
    Pomógł: 358
    Ocena: 840
    Nikt nie napisze tego za ciebie, w każdym razie nie powinien. Proponuję ci zapoznać się z instrukcją JNB oraz JB, jak i CLR i SETB. Oraz ewentualnie RET. Cały ten podprogramik to kilka linijek asma, jakoś wątpię by kompilator BASCOMa zrobił to tak samo.
  • REKLAMA
  • #3 8495073
    buli196
    Poziom 12  
    Posty: 45
    Pomógł: 1
    Ocena: 1
    Napisałem taki kod czy któś może go sprawdzić
    
      $mod51
    
      START:
      		CMP P1.1, 0& P1.3, 0
    		JNE  SPR2
    		JE setb P1.7
    		LJMP START
    		
    	SPR2:
    		CMP P1.1, 0& P1.3, 1
    		JNE	SPR3
    		JE setb P1.7
    		LJMP START
    		
    	SPR3:
    		CMP P1.1, 1& P1.3, 1
    		JNE	SPR4
    		JE setb P1.7
    		LJMP START
    		
    	SPR4:
    		CMP P1.1, 1& P1.3, 0
    		JE CLR P1.7
    		LJMP START
    		
    END
    
  • #4 8495192
    tronics
    Poziom 38  
    Posty: 5067
    Pomógł: 358
    Ocena: 840
    Źle. Czemu do otwarcia butelki używasz łoma? Jak używasz tych odwołań to pewnie masz macro.inc albo coś w tym stylu. I po co?
    Zrób tablicę stanów wejść i wyjść w formie
    P1.1 .. .. .. ..
    P1.2 .. .. .. ..
    P1.7 .. .. .. ..
    I wszystkie możliwe przypadki (raptem 4)
    Potem zastanów się jaka to funkcja logiczna (a jest taka), potem zajrzyj do dokumentacji atmela doc4316.pdf jak tą funkcję na '51 zrobić dla 2 bitów. W tym wypadku potrzebne ci będą jeszcze tylko JC/JNC. Można to też zrobić inaczej jak proponowałem ci na początku (z jb/jnb) ale widzę że i to zbyt dużo.
REKLAMA