Rozwiązania zadań z asemblera (źródło forum starszego rocznika) ad1.

 start0: 
 mov tmod,#00010000b 
 mov th1,#217 
 mov tl1,#0 
 setb tr1 
 start: 
 jnb tf1,start 
 clr tf1 
 cpl P2.0 
 mov th1,#217 
 ajmp start 
 end 

wpisuje tu 217 bo 10ms to 10000 a więc około 39*256, 256-39=217, 256-256=0, wiec 217 wpisuje do th1, a 0 do tl1. Troszkę to takie okrężne i może ktoś Ci to lepiej wytlumaczy Dr. Mysińskiemu mój tok rozumowania chyba się nie do końca podobał ale zaliczył.

ad1 by Wojtek: Idealnie odmierzone 10ms (ustawialne przez odejmowanie od 65536 zadanego okresu czasu i zapisanie tego do zmiennej max - 10000 impulsow to 10ms)

 max equ 65536-10000
 start:
 mov tmod, #00010000b
 mov tl1,#low(max)
 mov th1,#high(max)
 setb tr1
 test:
 jnb tf1, test
 cpl p2.0
 orl tl1,#low(max)
 mov th1,#high(max)
 clr tf1
 sjmp test
 end

ad2.

 start0: 
 mov tmod, #00010000b 
 mov th1, #217 
 mov tl1, #0 
 setb et1 
 setb ea 
 setb tr1 
 start: 
 ajmp start 
 org 1bh 
 cpl P2.0 
 mov th1, #217 ; tu już tl1 nie ustawiam bo i tak po przepełnieniu jest 0 
 reti 
 end 

ad 2. by andrewgrgn

 LJMP    START
 
 ORG    0001BH
 MOV    TH1,#217        ;wpisanie wartości 217
 CPL    P2.0            ;zmiana stanu P2.0
 
 ORG     100H
 START:
 MOV    TMOD,#0001000b        ;Timer 1 tryb 1
 MOV    TH1,#217
 MOV    TL1,#0
 SETB    TR1            ;start Timera 0
 SETB    EA
 SETB    ET1
 SJMP    $                ;koniec pracy programu głównego

ad 2 by Wojtek Podobnie jak w zad1, tylko z obsługą przerwania.

 licznik equ       65536-10000
 org 00h
 ljmp start
 org 1bh ;przerwanie licznika 1
 ljmp neguj
 start:
 mov tmod, #00010000b
 mov th1, #high(licznik)
 mov tl1, #low(licznik)
 setb et1
 setb ea
 setb tr1
 petla:
 sjmp petla
 neguj:
 cpl p2.0
 orl tl1, #low(licznik)
 mov th1, #high(licznik)
 reti
 end

ad3.

 start0: 
 setb P2.0 
 start: 
 mov C,P1.0 
 orl C,P1.1 
 jc start0 
 clr P2.0 
 ajmp start 
 end 

ad4. by andrewgrgn

 LJMP    START
 
 ORG     100H
 START:
 MOV    50H,30H
 MOV    51H,31H
 MOV    52H,32H
 MOV    53H,33H
 MOV    54H,34H
 MOV    55H,35H
 MOV    56H,36H
 MOV    57H,37H
 MOV    58H,38H
 MOV    59H,39H
 MOV    5AH,3AH
 MOV    5BH,3BH
 MOV    5CH,3CH
 MOV    5DH,3DH
 MOV    5EH,3EH
 MOV    5FH,3FH
 AJMP   START

ad5.

 start: 
 mov A,R1 
 add A,R3 
 mov R1,A 
 mov A,R0 
 addc A,R2 
 mov R0,A 

ad6.

 LJMP    START
 
 ORG     100H
 START:
 MOV    A,P1
 ADD A,P2
 ADD A,P3
 ADD A,P4
 MOV 31H,A  ;przykładowa komórka pamięci RAM
 AJMP START

ad7. by andrewgrgn

 LJMP    START
 
 ORG     100H
 START:
 MOV    A,40H
 SUBB A,30H
 MOV 31H,A
 AJMP START

ad8.

 start0: 
 clr P2.0 
 start: 
 mov C,P1.0 
 anl C,P1.1 
 jnc start0 
 setb P3.0 
 ajmp start 
 end 

ad. 9

 start: 
 mov TH1, 0FAh	 ;ustawienie predkosci na 9600 bodow
 lcall inrs	 ;pobierz bajt z portu
 cjne A, #10, not10	;jesli A!=10 to skocz do not10
 setb P1.0
 jmp koniec
 not10:
 clr P1.0
 koniec:
 end
 
Zalogowany jako: test (test)
studia/przedmioty/mim/egzamin1_2009_2010/asembler.txt · ostatnio zmienione: 2012/01/31 00:01 przez wojtek
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki