1. Suskaičiuoti kiek vienetų yra baite, kiekį nusiųsti į 101 ląstelę. MOV DPTR, #100H MOV R0, #08 MOV R1, #0 MOVX A, @DPTR PER2: RLC A JNC PER1 INC R1 PER1: DJNZ R0, PER2 INC DPTR MOV A, R1 MOVX @DPTR, A END 2. Užpildyti atminties registrą skaičiumi 11. Apr =40h, N=20. MOV R1, #40H MOV R0, #20 GR: MOV @R1, 11H INC R1 DJNZ R0, GR 3. Sudėti du daugiabaičius skaičius 10 baitu ilgis; 41h pirmas skaičius, 51h antras skaičius. MOV R0, #41H MOV R1, #51H MOV R2, #10 CLR C GR: MOV A, @R0 ADDC A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R2, GR INC R0 MOV A, #0 MOV ACC.0, C MOV @R0, A 4. Rasti 1 baito skaičiaus be ženklo masyve reikšme. Masyvas 52h (bazinis adresas), 51h – skaičiaus reikšme, 50h – masyvo ilgis. MOV R0, 50H MOV R1, #52H MOV A, 51H GR: CJNE A, 52H, PER SETB C JMP PAB PER: INC R1 MOV 52H, @R1 DJNZ R0, GR CLRC PAB: END 5. Ištrinti atminties (40h, 50h) sritį. MOV R0,#40h ;nustatomas pradinis adresas MOV R1,#10h ;nustatomas elementų kiekis ciklas: MOV @R0,#0 ;išvalyti baitą INC R0 DJNZ R1,ciklas; grįžti jei ne visi END 6. Duotas Masyvas 3 ir 4 skiltyse yra “1”. Reikia juos ištrinti (0200 – 03FF). NUO EQU O200H IKI EQU 03FF MOV DPL, #LOW (NUO) MOV DPH, #HIGH (NUO) MOV R0, #0 MOV R1, #0 Trinimas: MOV A,@DPTR CLR C ANL A, #00011000B ; jei skaičius 3 ir 4 skiltyje vienetai SUBB A, #00011000B ; tokius skaičius reikia ištrinti JNZ NETRINTI MOV A, #00H MOV @DPTR, A Netrinti: INC DPTR MOV A, DPL XRL A, #low (IKI) JNZ TRINIMAS MOV A, DPH XRL A, #high (IKI) JNZ TRINIMAS END 7. Paimti duomenis iš lenteles esančios programų atmintyje. MOV PSW,#01000B ;pirmojo reg. banko nustat. MOV R0, #8 ;nust. registru skaitikli MOV DPTR, #1000h ;pradinio adreso nustatymas MOV R1,#0 ;pirmojo registro adreso nustatymas ciklas: MOV A,@R1 MOVX @DPTR,A ;talpinti į atmintį INC R1 ;sekantis registras INC DPTR ;sekantis atminties adresas DJNZ R0,ciklas END 8. Paimti duomenis iš lenteles esančios programų atmintyje. Imti: INC A MOVC A, @A+PC RET Lent: DB 1 DB 2 DB 3 DB 4 9. Sudėti du skaičius. Dėmenys patalpinti vidinėje duomenų atmintyje, o jų adresai registruose R0 ir R1. Demenu ilgis registre R2. Jei skaičiai be ženklo, tai perpildymą rodys požymis C, jei su ženklu - F. CLR C ciklas: MOV A,@R0 ;pasikrauti pirmąjį dėmenį ADDC A,@R1 ;sudėti MOV @R0,A ;talpinti rezultatą INC R0 INC R1 DJNZ R2,ciklas END 10. Daugiabaitį skaičių, patalpinta vidinėje duomenų atmintyje, padauginti iš konstantės 123. Tegu skaičiaus pradžios adresas yra reg. R0, o jo ilgis reg. R1. MOV A,#0 ciklas: ADD A,@R0 ;paimti pirmąjį dauginamąjį MOV B,#123 ;paimti konstantę MUL AB ;sudauginti MOV @R0,A ;rezultato jaunesniojo baito talpinimas INC R0 ;adreso padidinimas MOV A,B XCH A,@R0 ;sekančio sandaugos baito formavimas DJNZ R1,ciklas ;karoti iki visi baitai bus padauginti iš konstantės. END 11. Akumuliatoriuje esanti skaičių pakeisti į dvejetainį – dešimtainį kodą. MOV B,#100 DIV AB ;nustatome šimtų skaičių MOV R0,A ;talpiname vyriausiąjį skaičių XCH A,B;liekana perduodame i akumuliatorių MOV B,#10 DIV AB ;nustatome dešimčių skaičių SWAP A ;dešimtis talpiname vyriausioje tetradoje ADD A,B END 12. Per prievado P1.0 išvada perduoti baitą nuosekliu būdu. MOV R2,#8 ciklas: RRC A ;i pernešimo skilti patalpiname akumuliatoriaus jaun. skilti MOV P1.0, C ;išsiunčiame bitą DJNZ R2,ciklas ;kartojame iki išsiusime visus bitus. 13. AJMP BEGIN ORG 0BH MOV TL0,#LOW(15535) MOV TH0,#HIGH(15535) INC R0 RETI ORG 100H BEGIN: MOV TMOD,%00000001B MOV TH0,#HIGH(15535) MOV TL0,#HLOW(15535) MOV R0,#0 SETB IE.1 SETB IE.7 WAIT0: JNB P3.2,WAIT0 SETB TCON4 WAITC: JC P3.2,WAITC CLR TCON.4 END 14. Suskaičiuoti kiek skaičių didesnių už 37h. NUO EQU 1000H ;pradžios adresas IKI EQU 40FFH ;pabaigos adresas MOV DPL,#low(NUO) MOV DPH,#high(NUO) MOV R0,#0 ;sumos jaunų MOV R1,#0 ;vyresnis baitas KIEKIS: MOVX A,@DPTR CLR C SUBB A,#37h JC APEIK INC R0 MOV A,R0 ;jei po inkremento ORL A,#0 ;R0 = 0, vadinasi JNZ APEIK;reikia įvertinti INC R1 ;pernešimą APEIK: INC DPTR MOV A,DPL XRL A,#low(IKI) JNZ SUMUOK MOV A,DPH XRL A,#high(IKI) JNZ SUMUOK END 15. Perkopijuoti 200h-3F2h, 500h-8F2h. NUO EQU 200h ;duomenų pradžios adresas IKI EQU 3F2h ;duomenų pabaigos adresas III EQU 500h ;duomenų nukopijavimo pradžios adresas MOV DPL, #low(NUO) MOV DPH, #high(NUO) MOV R0, #low(III) MOV R1, #high(III) KOPIJUOK: MOVX A,@DPTR MOV R2,A ; sukeičiame vietomis registrą DPTR ir registru poros R1,R0 turinius MOV A,DPL MOV DPL,R0 MOV R0,A MOV A, DPH MOV DPH,R1 MOV R1,A ;------------------- ;nukopijuojame duomenis ;padidiname nukopijuojame ;duomenų rodykles turini MOV A,R2 MOV @DPTR,A INC DPTR ;------------------- ;sukeičiame vietomis ;registrą DPTR ir registru ;poros R1,R0 turinius MOV A,DPL MOV DPL,R0 MOV R0,A MOV A, DPH MOV DPH,R1 MOV R1,A ;------------------- ;kartojame, kol DPTR IKI INC DPTR MOV A,DPL XRL A,#low(IKI) JNZ KOPIJUOK MOV A,DPH XRL A,#HIGH (IKI) JNZ KOPIJUOK MOV DPL, #low(444h) MOV DPH, #high(444h) MOV A,R0 MOV @DPTR,A END 16. Rasti skaičių didesnį už 42h ir iš tų didesnių rasti max (0200-03FF). NUO EQU 0200h IKI EQU 03FFh MOV DPL, #low(NUO) MOV DPH, #high(NUO) MOV R1, #42h ;max, jei max skaičius bus didesnis už 42h jis bus surastas, jei tokio skaičiaus nebus, tai po paieškos max = 42h IESKOK:MOVX A,@DPTR ; CLR C ; SUBB A,R1 ; JC DIDESNIS ;A IKI MOV A,DPL XRL A,#low(IKI) JNZ IESKOK MOV A,DPH XRL A,#HIGH (IKI) JNZ IESKOK END. 17. Ligini skaičių, kurio antroje skiltyje yra "1" 2k.0200-02FF. NUO EQU 1000h IKI EQU 40FFh MOV DPL, #low(NUO) MOV DPH, #high(NUO) DIDINIMAS: MOVX A,@DPTR ;Skaičius būna lyginis, kai jo jauniausiame bite būna 0 kitu atveju skaičius nelyginis ANL A,#00000101B ;maskuojami visi skaičiaus bitai iškyrus 0 ir 2 XRL A,#00000100B ;XOR operacijos rezultatas lygus nuliui, tik tada kai abu operandai yra lygus JNZ NEDIDINK MOVX A,@DPTR MOV R0,A ADD A,R0 MOVX @DPTR,A NEDIDINK: INC DPTR ;kartojame, kol DPTR IKI MOV A,DPL XRL A,#low(IKI) JNZ IESKOK MOV A,DPH XRL A,#HIGH (IKI) JNZ IESKOK END 18. Rasti masyvo skirt. min ir max. NUO EQU 1000h IKI EQU 40FFh MOV DPL, #low(NUO) MOV DPH, #high(NUO) MOVX A,@DPTR MOV R0,A ;min MOV R1,A ;max IESKOK: MOVX A,@DPTR ; CLR C ; SUBB A,R0 ; JNC DIDELIS ;A > min MOVX A,@DPTR MOV R0,A DIDELIS: MOVX A,@DPTR ; CLR C ; SUBB A,R1 ; JC DIDESNIS ;A IKI MOV A,DPL XRL A,#low(IKI) JNZ IESKOK MOV A,DPH XRL A,#HIGH (IKI) JNZ IESKOK ;skaičiuojamas skirtumas gaunamas akumuliatoriuje CLR C MOV A,R1 SUBB A,R0 ;skirtumas max-min=A END 19. (2000-3FFF) rasti elementų sk. kurie 3 skiltyje turi "0". NUO EQU 2000h IKI EQU 3FFFh MOV DPL,#low(NUO) MOV DPH,#high(NUO) MOV R0,#0 MOV R1,#0 KIEKIS: MOVX A,@DPTR ANL A,#00001000B JZ APEIK INC R0 MOV A,R0 ORL A,#0 JNZ APEIK INC R1 APEIK: INC DPTR MOV A,DPL XRL A,#low(IKI) JNZ SUMUOK MOV A,DPH XRL A,#high(IKI) JNZ SUMUOK END 20. Duotas masyvas. Anuliuoti skaičių nuo 28 iki 58. NUO EQU 1000H IKI EQU 40FFH MOV DPL,#low(NUO) MOV DPH,#high(NUO) MOV R0,#0 MOV R1,#0 KIEKIS: MOVX A,@DPTR CLR C SUBB A,#27h JC APEIK ;jei A 58h ;jei skaičius tarp 28h ir 58h reikia jį apnulinti MOV A,#0 MOVX @DPTR,A APEIK: INC DPTR MOV A,DPL XRL A,#low(IKI) JNZ SUMUOK MOV A,DPH XRL A,#high(IKI) JNZ SUMUOK END 21. Adresų srityje sudėti visus skaičius. NUO EQU 1000h ;pradžios adresas IKI EQU 40FFh ;pabaigos adresas MOV DPL, #low(NUO) MOV DPH, #high(NUO) MOV R0, #0 MOV R1, #0 MOV R2, #0 SUMUOK: MOVX A,@DPTR ;Paimame iš atminties baitą ADD A,R0 ;jį pridedame prie sumos MOV R0,A ;ir įvertiname pernešimus į MOV A,R1 ;vyresniuosius sumos baitus ADDC A,#0 MOV R1,A MOV A,R2 ADDC A,#0 MOV R2,A INC DPTR MOV A,DPL ;kartojame, kol DPTR IKI XRL A,#low(IKI) JNZ SUMUOK MOV A,DPH XRL A,#HIGH (IKI) JNZ SUMUOK END 22. Rasti skaičius iš intervalo 42h-7Fh suma. NUO EQU 1000H IKI EQU 40FFH MOV DPL,#low(NUO) MOV DPH,#high(NUO) MOV R0,#0 MOV R1,#0 MOV R2,#0 KIEKIS: MOVX A,@DPTR CLR C SUBB A,#42h JC APEIK ;jei A 7Fh MOVX A,@DPTR ;Paimame iš atminties baitą ADD A,R0 ;ji pridedame prie sumos MOV R0,A ;ir įvertiname pernešimus į MOV A,R1 ;vyresniuosius sumos baitus ADDC A,#0 MOV R1,A MOV A,R2 ADDC A,#0 MOV R2,A APEIK: INC DPTR MOV A,DPL XRL A,#low(IKI) JNZ SUMUOK MOV A,DPH XRL A,#high(IKI) JNZ SUMUOK END 23. Rasti skaičių mažesnių už 80h suma. NUO EQU 1000h ;pradzios IKI EQU 40FFh ;pabaigos adr. MOV DPL, #low(NUO) MOV DPH, #high(NUO) MOV R0, #0 MOV R1, #0 MOV R2, #0 SUMUOK: MOVX A,@DPTR ;patikriname ar atminties baitas CLR C;didesnis nei 80h SUBB A,#80h JNC APEIK MOVX A,@DPTR;Paimame iš atminties baitą ADD A,R0 ;ji pridedame prie sumos MOV R0,A ;ir įvertiname pernešimus į MOV A,R1 ;vyresniuosius sumos baitus ADDC A,#0 MOV R1,A MOV A,R2 ADDC A,#0 MOV R2,A APEIK: INC DPTR MOV A,DPL ;kartojame, kol DPTR IKI XRL A,#low(IKI) JNZ SUMUOK MOV A,DPH XRL A,#HIGH (IKI) JNZ SUMUOK END 24. Rasti min ir max skaičius. NUO EQU 1000h IKI EQU 40FFh MOV DPL, #low(NUO) MOV DPH, #high(NUO) MOVX A,@DPTR MOV R0,A ;min MOV R1,A ;max IESKOK:MOVX A,@DPTR CLR C SUBB A,R0 JNC DIDELIS ;A > min MOVX A,@DPTR MOV R0,A DIDELIS:MOVX A,@DPTR CLR C SUBB A,R1 JC DIDESNIS ;A IKI XRL A,#low(IKI) JNZ IESKOK MOV A,DPH XRL A,#HIGH (IKI) JNZ IESKOK END 25. Sudėti du dešimtainius skaičius. Sudedami dešimtainiai skaičiai 1234+5678=R1,R0 MOV A,#34h ;sudedame jauniausias skaičių dalis ADD A,#78h DA A ;dešimtainių korekcija MOV R0,A MOV A,#12h ;sudedame vyriausias skaičių dalis įvertindami pernešimą iš jaunesnių dalių sumos ADDC A,#56h DA ;desimtaine korekcija MOV R1,A END 26. Suskaičiuoti kiek skaičių mažesnių už 20. NUO EQU 1000H IKI EQU 40FFH MOV DPL,#low(NUO) MOV DPH,#high(NUO) MOV R0,#0 MOV R1,#0 KIEKIS: MOVX A,@DPTR CLR C SUBB A,#20h JC APEIK INC R0 MOV A,R0 ORL A,#0 JNZ APEIK INC R1 APEIK: INC DPTR MOV A,DPL XRL A,#low(IKI) JNZ SUMUOK MOV A,DPH XRL A,#high(IKI) JNZ SUMUOK END 27. Neigiamus skaičius ištrinti ir įrašyti "0". NUO EQU 1000H IKI EQU 40FFH MOV DPL,#low(NUO) MOV DPH,#high(NUO) MOV R0,#0 MOV R1,#0 TRINIMAS: MOVX A,@DPTR ANL A,#80h ;jei skaičius neigiamas jo vyriausias bitas = 1 JNZ Teigiamas MOV A,#00h MOVX @DPTR,A Teigiamas: INC DPTR MOV A,DPL XRL A,#low(IKI) JNZ TRINIMAS MOV A,DPH XRL A,#high(IKI) JNZ TRINIMAS END 28. Surasti max ir įrašyti į 444h. NUO EQU 1000h IKI EQU 40FFh MOV DPL, #low(NUO) MOV DPH, #high(NUO) MOVX A,@DPTR MOV R1,A ;max IESKOK:MOVX A,@DPTR CLR C SUBB A,R1 JC DIDESNIS ;A IKI XRL A,#low(IKI) JNZ IESKOK MOV A,DPH XRL A,#HIGH (IKI) JNZ IESKOK MOV DPL, #low(444h) MOV DPH, #high(444h) MOV A,R1 MOV @DPTR,A END 29. Surasti min ir įrašyti i 444h. NUO EQU 1000h IKI EQU 40FFh MOV DPL, #low(NUO) MOV DPH, #high(NUO) MOVX A,@DPTR MOV R0,A ;min IESKOK: MOVX A,@DPTR CLR C SUBB A,R0 JNC DIDELIS ;A > min MOVX A,@DPTR MOV R0,A DIDELIS: INC DPTR MOV A,DPL;kartojame, kol DPTR IKI XRL A,#low(IKI) JNZ IESKOK MOV A,DPH XRL A,#HIGH (IKI) JNZ IESKOK MOV DPL, #low(444h) MOV DPH, #high(444h) MOV A,R0 MOV @DPTR,A END 30. “2.5”. MOV R1,#63H COUNT2: MOV R2,#31H COUNT1: DJNZ R2,COUNT1 DJNZ R1,COUNT2 END “2.6”. AJMP BEGIN ORG 0BH CLR TCON.4 DEC R1 RET I ORG 100H BEGIN: MOV R1,0C8H MOV TMOD,#01H MOV TL0,#LOW(NOT(10000-1)) MOV TH0,#HIGH(10000-1) SETB TCON.4 SETB IE.1 SETB IE.7 DAR_NE: MOV A,R1 XRL A,H00H JNZ DAR_NE END 31. “3.6”. DEBOUT N EQU 10H DEBOUNC: NESUJUNGTAS: MOV A,#N KARTOTI: JNB P1.3,NESUJUNGTAS DEC A JNZ KARTOTI 32. “3.7”. DEBOUNC: WAITC: JNB P1.3,WAITC ACALL DELAY RET DELAY: MOV R1,#63H COUNT2: MOV R2,#31H COUNT1: DJNZ R2,COUNT1 DJNZ R1,COUNT2 RET END 33. “3.8”. MOV TMOD,##00000101B MOV TL0,#0 MOV TH0,#0 SETB TCON.4 MOV R1.#63.H COUNT2: MOV R2,#31H COUNT1: DJNZ R2,COUN1 DJNZ R1,COUNT2 CLR TCON.4 END 34. “3.9”. IMPULSA1: SETB P1.3 ACALL DELAY CLRB P1.3 ACALL DELAY ACALL DELAY ACALL DELAY JMP IMPULSAI DELAY: MOV R1,#63H COUNT2: MOV R2,#31.H COUNT1: DJNZ R2,COUNT1 DJNZ R1,COUNT2 RET END 35. Max 15001700h ištrinti iš lątelės 1245 ir įrašyti 0. MOV DPTR,#1500h PR: MOV A,@DPTR JNE A,#R0,ŠOK ;log 0 forma ŠOK: JC NETINKA ;nes neformuoja log “1” CJNE A,#45h ;šok1, jei >45 suformuoja log”1” ŠOK1: JC NETINKA CLR A ;nunulina A MOVX @DPTR, A ;jei NETINKA INC DPTR MOV A,DPH CJNE A,#17,PR ;ar paskutinis END 36. Masyvas 50005500h didžiausių ir mažiausių sk. Sumą. MOV R0,#0h MOV RL,#FFh MOV DPTR,#5000h ;1 masyvo elementas PR: MOVX A,@DPTR CJNE A,R0,XX XX: JC PP ;jei įrašyti PP: CJNE A,R1,KT KT: JNC PAB ;jei > į pabaigą MOV R1,A PAB: INC DPTR MOV A,DPH CJNE A,#55H,PR MOV A,R0 ADD A,R1 END 37. Masyvo 17002500h sk, kurį 4 skiltį įrašo “1”, o antroj ”0” ir patalpina į 30h ląstelę. MOV R0,#30h MOV DPTR,#1200h PR: MOV A,DPH CJNE A,#25h,T ;lygina su 12:25 JMP baigti ;jei >baigti T: MOVX A,@DPTR JNB ACC4,K ;jei ne “1” į K JB ACC2,R ;jei ne “0” į K MOV @R0,A ;įrašo į Rg INC R0 ;didina R0 K: INC DPTR ;didina DPTR JMP PR ;į pradžią Baigti: END 38. Masyvo 62009500h rasti lyginių sk. max ir patalpinti į 6000h į ląstelę. MOV DPTR,6200h MOV R0,0h R: MOV A,DPH CJNE A,#95h,T JMP Baigti T: MOVX A,@DPTR ;įrašo į akumą RRC A ;perstumia, jei B PER: INX H ;didiname vienetu reg. MOV A,H ;AA JNC MAX MOV R2,R3 INC DPTR JMP GR MAX: MOV A,R4 SUBB A,R5 JC XX MOV R5,R4 XX: INC DPTR JMP GR1 PAB: MOV A,R5 SUBB A,R5 MOV R6,A SETBvPCON 0 43. Masyv 20005000. MOV #2000H MOV #FFh PR: MOVX A,@DPTR JNB ACC3,T ;tikrina ar 0 GR: INC DPTR MOV A,DPH CJNE A,#50h,PR ;jei nepaskut. tai į PR JMP PAB T: JNB ACC4,X ;jei ne 0 pereiti JMP GR X: MOVX A,@DPTR CJNE A,R2,XX ;A lygina su R2 XX: JC MIN (JNC MAX) ;jei min pereiti JMP GR MIN: MOVX R2,@DPTR JMP GR PAB: END 44. Masyv 20003000h, kur 34 skiltyje yra. MOV DPTR,#2000h MOV R2,#FFh (00h, max) PR: MOVX A,@DPTR JNB ACC3,X ;Jei 0 pereiti JNB ACC4,X GR: INC DPTR MOV A,DPH CJNE A,#50h,PR JMP PAB X: MOV A,@DPTR CJNE A,R2,XX XX: JC MIN (JNC MAX) JMP GR PAB: END 45. 23005300h sk. Sumą. MOV DPTR,2300h MOV R2,#0h MOV R3,#0h PR: MOV A,DPH ;nusk. vyriausių skiltį CJNE A,#5300h,X ;lygina ar paskutinis JMP PAB X: CLR C ;nunulina C MOVX A,@DPTR ;įrašo į A ADDC A,R2 MOV R2,A ;sumą į R2 JC XX ;pereina į XX INC DPTR ;didinti JMP PR XX: INC R3 ;didina R3 registrą JMP PR ;į pradžią PAB: END 46. Masyvą 15001700h rasti sk. didesnį už 66 max. MOV R0,#00F MOV DPTR,#1500h ;nust. masyv. prad. adr. PR: MOVX A,@DPTR CJNC A,#66h,N N: JC PAB CJNE A,R0,X ;Lyginam A su R0 X: JC PAB ;jei įrašo PAB: INC DPTR MOV A,DPTH CJNE A,#17h,PR END 47. Į IDA perduoti bankų 1-3 turinius, pradinis IDA adresas 4000H. MOV PSW,#0h ; MOV R1,#18h ; MOV DPTR,#4000h ; MOV R0,#8 ; BACK: MOV A,@R0 ; MOVX @DPTR,A ; INC R0 ; INC DPTR ; DJNZ R1,BACK ; END ; 48. Sudaryti programą, kuri skaičiuotų loginę funkciją Y=X1UX2∩((X3∩X4)UX5)∩X6 MOV C,P1.3 ; ANL C,P1.4 ; ORL C,P1.5 ; ANL C,P1.2 ; ANL C,P1.6 ; ORL C,P1.1 ; MOV P1.0,C ; END ; 49. Sudaryti programą, kuri priimtų per prievadą P1 duomenų masyvą iš periferinio įtaiso ir patalpintų į IDA. MOV DPTR,#2000h ; PER: MOV A,P1 ; XRL A,#00001111B ; ORL A,#11000000B ; MOVX @DPTR,A ; INC DPTR ; DJNZ R0,PER ; END ; 50. Sudaryti programą, kuri realizuotų 10ms vėlinimo trukmę. MOV R0,#101 ; COUNT1: MOV R1,#48 ; COUNT: DJNZ R1,COUNT ; DJNZ R0,COUNT1 ; END ; 51. Sudaryti programą, kad ji realizuotų 2 s vėlinimo trukmę. CLR IE.7 ; MOV TMOD,#00001001B ; MOV TH0,#00 ; MOV TL0,#00 ; MOV R0,#30 ; GR1 SETB TCON.4 ; GR: JNB TCON.5,GR ; CLR TCON.5 ; DJNZ R0,GR1 ; END ; 52. Parašyti programą, galinčią išmatuoti laiko intervalus 0.1 - 10 s ribose. CLR IE.7 ; MOV TMOD,#0001001B ; MOV TH0,#0 ; MOV TL0,#0 ; MOV R0,#0 ; WAITC: JNB P3.2, WAITC ; SETB TCON.4 ; GR: JNB TCON.5, WAITO ; INC R0 ; CLR TCON.5 ; WAITO: JNB P3.2, GR ; CLR TCON.4 ; END ; 53. Programa pašalina kontaktų virpėjimo įtaką. a) BACK: MOV R3,#15 ; CHECK: MOV C,P3.1 ; JNC BACK ; DJNZ R3,CHECK ; END ; b) BACK: MOV C,P3.1 ; JNC BACK ; ACALL DELAY ; DELAY: MOV R3,#15 ; GR: DJNZ R3,GR ; RET ; END ; 54. Programa skaičiuoja impulsus laiko intervalas formuojamas programiniu būdu, o impulsus skaičiuoja taimeris. MOV R3,#50 ; CLR IE.7 ; SETB TMOD.1 ; MOV TL0,#00 ; MOV TH0,#00 ; WAIT1: JNB P3.2,WAIT1 ; WAIT2: JB P3.2,WAIT2 ; SETB TCON.4 ; CLR TCON.4 ; DJNZ R3,WAIT1 ; END 55. Programa skaičiuoja impulsus, laiko intervalą skaičiuoja taimeris, o impulsus skaičiuojame programiniu būdu. MOV R3,#50 ; MOV R4,#0 ; CLR IE.7 ; CLR TMOD.2 ; GO: MOV TL0,#00 ; MOV TH0,#00 ; WAIT1: JNB P3.2,WAIT1 ; SETB TCON.4 ; WAIT2: JB P3.2,WAIT2 ; CLR TCON.4 ; INC R4 ; DJNZ R3,GO ; END ; 56. Programa suformuoja ir išveda per prievadą P1 VŽ=0A6H. BACK: MOV A,#255 ; ANL A,#0A6H ; MOV P1,A ; ACALL DELAY ; SJMP BACK ; DELAY: MOV R3,#10 ; GO: MOV R0,#30 ; COUNT: DJNZ R0,COUNT ; DJNZ R3,GO ; RET ; END ; 57. Programa formuoja nenutrūkstančią impulsų seką. RAEP: SETB C; MOV P1.3,C ; ACALL DELAY1 ; CLR C ; MOV P1.3,C ; ACALL DELAY2 ; SJMP RAEP ; DELAY1: MOV R0,#25 ; COUNT1: DJNZ R0,COUNT1 ; RET ; DELAY2: MOV R0,#75 ; COUNT2: DJNZ R0,COUNT2 ; RET ; END ; TURINYS: 1. Suskaičiuoti kiek vienetų yra baite, kiekį nusiųsti į 101 ląstelę. 2. Užpildyti atminties registrą skaičiumi 11. Apr =40h, N=20. 3. Sudėti du daugiabaičius skaičius 10 baitu ilgis; 41h pirmas skaičius, 51h antras skaičius. 4. Rasti 1 baito skaičiaus be ženklo masyve reikšme. Masyvas 52h (bazinis adresas), 51h – skaičiaus reikšme, 50h – masyvo ilgis. 5. Ištrinti atminties (40h, 50h) sritį. 6. Duotas Masyvas 3 ir 4 skiltyse yra “1”. Reikia juos ištrinti (0200 – 03FF). 7. Paimti duomenis iš lenteles esančios programų atmintyje. 8. Paimti duomenis iš lenteles esančios programų atmintyje. 9. Sudėti du skaičius. Dėmenys patalpinti vidinėje duomenų atmintyje, o jų adresai registruose R0 ir R1. Demenu ilgis registre R2. Jei skaičiai be ženklo, tai perpildymą rodys požymis C, jei su ženklu - F. 10. Daugiabaitį skaičių, patalpinta vidinėje duomenų atmintyje, padauginti iš konstantės 123. Tegu skaičiaus pradžios adresas yra reg. R0, o jo ilgis reg. R1. 11. Akumuliatoriuje esanti skaičių pakeisti į dvejetainį – dešimtainį kodą. 12. Per prievado P1.0 išvada perduoti baitą nuosekliu būdu. 13. 14. Suskaičiuoti kiek skaičių didesnių už 37h. 15. Perkopijuoti 200h-3F2h, 500h-8F2h. 16. Rasti skaičių didesnį už 42h ir iš tų didesnių rasti max (0200-03FF). 17. Ligini skaičių, kurio antroje skiltyje yra "1" 2k.0200-02FF. 18. Rasti masyvo skirt. min ir max. 19. (2000-3FFF) rasti elementų sk. kurie 3 skiltyje turi "0". 20. Duotas masyvas. Anuliuoti skaičių nuo 28 iki 58. 21. Adresų srityje sudėti visus skaičius. 22. Rasti skaičius iš intervalo 42h-7Fh suma. 23. Rasti skaičių mažesnių už 80h suma. 24. Rasti min ir max skaičius. 25. Sudėti du dešimtainius skaičius. 26. Suskaičiuoti kiek skaičių mažesnių už 20. 27. Neigiamus skaičius ištrinti ir įrašyti "0". 28. Surasti max ir įrašyti į 444h. 29. Surasti min ir įrašyti i 444h. 30. “2.5”.“2.6”. 31. “3.6”. 32. “3.7”. 33. “3.8”. 34. “3.9”. 35. Max 1500¸1700h ištrinti iš lątelės 12-45 ir įrašyti 0. 36. Masyvas 5000¸5500h didžiausių ir mažiausių sk. Sumą. 37. Masyvo 1700¸2500h sk, kurį 4 skiltį įrašo “1”, o antroj -”0” ir patalpina į 30h ląstelę. 38. Masyvo 6200¸9500h rasti lyginių sk. max ir patalpinti į 6000h į ląstelę. 39. Duotas skaičių masyvas 2700¸3500h lyginius skaičius, kurie 4 skiltyje turi “1” padidinti 4. 40. Duotas masyvas 200¸800h .Kurie ddesni už 66h surasti max. 41. Duotas masyvas 1300h-1500h. Ištrinti skaičius, kurie patenka į diapazoną nuo 12 iki 45h. 42. MAX 2000-5000 tarp max ir min. 43. Masyv 2000¸5000. 44. Masyv 2000¸3000h, kur 3-4 skiltyje yra. 45. 2300¸5300h sk. Sumą. 46. Masyvą 1500¸1700h rasti sk. didesnį už 66 max. 47. Į IDA perduoti bankų 1-3 turinius, pradinis IDA adresas 4000H. 48. Sudaryti programą, kuri skaičiuotų loginę funkciją Y=X1UX2∩((X3∩X4)UX5)∩X6 49. Sudaryti programą, kuri priimtų per prievadą P1 duomenų masyvą iš periferinio įtaiso ir patalpintų į IDA. 50. Sudaryti programą, kuri realizuotų 10ms vėlinimo trukmę. 51. Sudaryti programą, kad ji realizuotų 2 s vėlinimo trukmę. 52. Parašyti programą, galinčią išmatuoti laiko intervalus 0.1 - 10 s ribose. 53. Programa pašalina kontaktų virpėjimo įtaką. 54. Programa skaičiuoja impulsus laiko intervalas formuojamas programiniu būdu, o impulsus skaičiuoja taimeris. 55. Programa skaičiuoja impulsus, laiko intervalą skaičiuoja taimeris, o impulsus skaičiuojame programiniu būdu. 56. Programa suformuoja ir išveda per prievadą P1 VŽ=0A6H. 57. Programa formuoja nenutrūkstančią impulsų seką.
Šį darbą sudaro 3881 žodžiai, tikrai rasi tai, ko ieškai!
★ Klientai rekomenduoja
Šį rašto darbą rekomenduoja mūsų klientai. Ką tai reiškia?
Mūsų svetainėje pateikiama dešimtys tūkstančių skirtingų rašto darbų, kuriuos įkėlė daugybė moksleivių ir studentų su skirtingais gabumais. Būtent šis rašto darbas yra patikrintas specialistų ir rekomenduojamas kitų klientų, kurie po atsisiuntimo įvertino šį mokslo darbą teigiamai. Todėl galite būti tikri, kad šis pasirinkimas geriausias!
Norint atsisiųsti šį darbą spausk ☞ Peržiūrėti darbą mygtuką!
Mūsų mokslo darbų bazėje yra daugybė įvairių mokslo darbų, todėl tikrai atrasi sau tinkamą!
Panašūs darbai
Kiti darbai
Atsisiuntei rašto darbą ir neradai jame reikalingos informacijos? Pakeisime jį kitu nemokamai.
Pirkdamas daugiau nei vieną darbą, nuo sekančių darbų gausi 25% nuolaidą.
Išsirink norimus rašto darbus ir gauk juos akimirksniu po sėkmingo apmokėjimo!