MEMAHAMI PROGRAM.docx

  • Published on
    10-Nov-2015

  • View
    215

  • Download
    4

Embed Size (px)

Transcript

PERCOBAAN 1

PEMROGRAMAN MIKROKONTROLER ATMEL 89S51

I. PENDAHULUAN

I.1 A Taxonomy of the Cognitif DomainTujuan domain ranah kognitif berhubungan dengan tampilan kemampuan pengetahuan dan pengembangan kemampuan serta pengembangan keterampilan intelektual ( Bloom 1956:7). Taksonomi atau penggolongan tujuan ranah kognitif hasil pengembangan Bloom dan kawan-kawan mengemukakan adanya enam kelas / tingkat dari tingkatan yang terendah menuju tingkatan yang tertinggi, yaitu :

C1.Pengetahuan ( knowledge )C2.Pengertian, faham, pemahaman ( comprehension )C3.Pemakaian ( application )C4.Analisa , uraian, kupasan, pemeriksaan ( analysis )C5.Perpaduan, pembentukan ( systhesis )C6.Evaluasi, penilaian ( evaluation)

C1C2C3C4C5C6

II.PROGRAM

1.Display LED

$mod51; ?START: MOV P0,#11110000b; Menghidupkan 4 buah LEDSJMP START; ?END; ?

C1C2C3C4C5C6

2.Subroutine Waktu Tunda atau Delay

$mod51;?

ORG 0h:?START: MOV P0,#11111111b; Kirim data biner 11111111 ke ; PORT 0 CALL DELAY ; Memanggil waktu tunda MOV P0,#00000000b; Kirim data biner 00000000 ke PORT 0 CALL DELAY ; Memanggil waktu tunda SJMP START;?DELAY: MOV R1,#255;?DEL1: MOV R2,#255;?DEL2: DJNZ R2,DEL2;? DJNZ R1,DEL1;? RET;? END;?C1C2C3C4C5C6

3.Instruksi SETB dan CLR$mod51;? ORG 0h;?START: CLR P0.0 ; Mengirimkan logika 0 ke P0.0 SJMP START; jump ke label START END;?

C1C2C3C4C5C6

4.LED kedip-kedip

$mod51;? ORG 0h;?START: CLR P0.0 ; Kirim logika 0 ke P0.0 CLR P0.1 ; Kirim logika 0 ke P0.1 CLR P0.2 ; Kirim logika 0 ke P0.2 CLR P0.3 ; Kirim logika 0 ke P0.3 CLR P0.4 ; Kirim logika 0 ke P0.4 CLR P0.5 ; Kirim logika 0 ke P0.5 CLR P0.6 ; Kirim logika 0 ke P0.6 CLR P0.7 ; Kirim logika 0 ke P0.7 CALL DELAY; Memanggil waktu tunda SETB P0.0 ; Kirim logika 1 ke P0.0 SETB P0.1 ; Kirim logika 1 ke P0.1 SETB P0.2 ; Kirim logika 1 ke P0.2 SETB P0.3 ; Kirim logika 1 ke P0.3 SETB P0.4; Kirim logika 1 ke P0.4 SETB P0.5 ; Kirim logika 1 ke P0.5 SETB P0.6 ; Kirim logika 1 ke P0.6 SETB P0.7 ; Kirim logika 1 ke P0.7 SJMP START; lompat ke label START

DELAY: MOV R1,#255;?DEL1: MOV R2,#255;?DEL2: DJNZ R2,DEL2;? DJNZ R1,DEL1;? RET;? END;?

C1C2C3C4C5C6

5.Instruksi RL/RR

$mod51;? ORG0H;?START: MOVA,#11111110b;? MOV R0,#7 ;?KIRI: MOVP2,A ;? CALL DELAY ;? RL A ;? DEC R0 ;? CJNE R0,#0,KIRI ;? MOV R0,#7 ;?KANAN: MOV P2,A ;? CALL DELAY ;? RR A ;? DEC R0 ;? CJNE R0,#0,KANAN ;? SJMP START ;? DELAY: MOV R1,#255 ;?DEL1: MOV R2,#255 ;?DEL2: DJNZ R2,DEL2 ;? DJNZ R1,DEL1 ;? RET ;? END ;?

C1C2C3C4C5C6

6.Push Button Switcheds

$mod51;?

ORG 0h;?START: MOV A, P2 ;Ambil data dari P2 dan Simpan ke A CPL A ;Komplemen/ Invert terhadap A MOVP0, A ;Kirim data A ke P0 SJMP START;? END;?

C1C2C3C4C5C6

7.Nyala LED geser kanan-kiri

$mod51;?

ORG 0h;?CekP20: JB P2.0, CekP21 ; Menguji bit P2.0, apakah ;berlogika'1' CALLRLeft ; Jika P2.0=0, maka LED putar kiriCekP21: JB P2.1,CekP20 ; Menguji bit P2.1, apakah ; berlogika '1' CALL RRight ; Jika P2.1=0, maka LED putar ;kanan SJMP CekP20 ; jump forever to CekP2.0

;========================================;Subrutin ini digunakan untuk menggerakkan LED Ke Kanan;========================================RLeft: MOV A,#11111110b;send data to AccRLeft1: MOV P0,A ;send data to P0 CALLDELAY ;;call delay time JB P2.1,RLeft2 ;Menguji bit P2.1, apakah berlogika ;'1' SJMP EndRLeft ;Jika P2.1=0, maka lompat ke ;EndRLeft RLeft2 :RL A;? SJMP RLeft1;? EndRLeft: RET;?;;======================================;Subrutin ini digunakan untuk menggerakkan LED Ke Kiri;======================================RRight: MOV A,#01111111b;send data to AccRRight1: MOV P0,A ;send data to P0 CALL DELAY ;call delay time JB P2.0,RRight2 ;Menguji bit P2.0, apakah berlogika ;'1' SJMP EndRRight ;Jika P2.0=0, maka lompat ke ;EndRRight RRight2: RR A;? SJMP RRight1;? EndRRight: RET;?

;=======================================;subroutine delay time;=======================================DELAY: MOV R1,#255;?DEL1:MOV R2,#255;?DEL2: DJNZ R2,DEL2;? DJNZ R1,DEL1;? RET;? END;?

C1C2C3C4C5C6

8.Setting Up/Down dan Enter dengan display LED

$mod51;?

ORG 0h;?start:;? mov R7,#1 ;inisialisasi data settingSetup:mov A,R7 ;simpan data R7 ke A cpl A ;komplemen A, mov P0,A ;output data ke LED jnb p2.0,getout;bilasw1(P2.0) ditekan maka getout ;(selesai) jb P2.1,SetDn ;bila sw2(P2.1) ditekan maka INC R7 inc R7 ;R7:=R7+1 acall delay ;waktu tunda, antar penekanan tombol cjne R7,#100d,setup;deteksi apakah setting=100d mov R7,#1 ;reset R7 -> 1 sjmp Setup;?

SetDn: mov A,R7 ;simpan data R7 ke A cpl A ;komplemen A, mov P0,A ;output data ke LED jnb P2.0,getout; bila sw1(P2.0) ditekan maka getout ;(selesai) jb p2.2,Setup ;bila sw2(P2.1) ditekan maka INC R7 dec R7 ;R7:=R7-1 acall delay ;waktu tunda lama penekanan tombol cjne R7,#0d,setDn;deteksi apakah setting=0d mov R7,#1d ;reset R7 -> 1 sjmp Setdn;?getout:;? sjmp getout;? delay: mov R0,#255;?delay1: mov R2,#255;? djnz R2,$;? djnz R0,delay1;? Ret;? End;?

C1C2C3C4C5C6

9.Kode karakter pada display LED 7 Segment

DesimalData-data segmenDataHeksa Desimal

P2.7-P2.6gP2.5fP2.4eP2.3dP2.2cP2.1bP2.0a

011000000C0 ?

111111001F9 ?

210100100A4 ?

310110000B0 ?

41001100199 ?

51001001092 ?

61000001082 ?

71111100 0F8 ?

81000000080 ?

91001000090 ?

10.Menampilkan karakter pada display LED 7 Segment

$mod51;?

ORG 0H;?START:MOVP0,#0FEH;Aktifkan digit paling kananMOVP2,#0C0H;tampilkan karakter 0CALL DELAY;panggil program delayMOVP2,#0F9H;tampilkan karakter 1CALLDELAY;?MOVP2,#A4H;tampilkan karakter 2CALLDELAY;?MOVP2,#B0H;tampilkan karakter 3CALLDELAY;?MOVP2,#99H;tampilkan karakter 4CALLDELAY;?MOVP2,#92H;tampilkan karakter 5CALLDELAYMOVP2,#82H;tampilkan karakter 6CALLDELAY;?MOVP2,#0F8H;tampilkan karakter 7CALLDELAY;?MOVP2,#80H;tampilkan karakter 8CALLDELAY;?MOVP2,#90;tampilkan karakter 9CALLDELAY;?SJMPSTART;ulangi proses dari awal

DELAY:MOVR0,#0FFH;?LOOP:MOVR1,#0FFH;?LOOP1:DJNZR1,LOOP1;?DJNZR0,LOOP;?RET;?END;?

C1C2C3C4C5C6

11.Menampilkan karakter lain pada display LED 7 Segment

$mod51;?ORG 0H;?START:MOVR3,#0AH;data pembatasMOVP0,#0FEH;aktifkan digit paling kananMOVDPTR,#KARAKTER;simpan data karakter ke DPTRLOOP2:CLR A;?MOVC A,@A+DPTR;ambil data ke AccumulatorMOVP2,A;keluarkan ke port 2CALL DELAY;panggil program delayINCDPTR;siapkan karakter berikutnyaDJNZR3, LOOP2;?SJMPSTART;?

DELAY:MOVR0,#0FFH;?LOOP:MOVR1,#0FFH;?LOOP1:DJNZR1,LOOP1;?DJNZR0,LOOP;?RET;?KARAKTER:DB 11000000B,11111001B,10100100B,10110000BDB 10011001B,10010010B,10000010B,11111000BDB 10000000B,10010000B;DB 00111111B,00000110B,01011011B,01001111B;DB 01100110B,01101101B,01111101B,00000111B;DB 01111111B,01101111BEND

C1C2C3C4C5C6

12.Program Scanning Display LED 7 SegmentApa bedanya Scanning dan Scamming ?$mod51;?ORG 0H;?START:MOV R3,#06H;data pembatas jumlah digit 7 segmenMOVR4,#0FEH;data pengendali digitMOVA,R4;?MOV P0,A;?

LOOP3:MOVDPTR,#KARAKTER;?CLR A;?MOVC A,@A+DPTR;?MOVP2,A;?CALL DELAY;?MOVP2,#00H;?INCDPTR;?MOVA,R4;?RL A;?MOVP0,A;?MOVR4,A;?DJNZ R3,LOOP3;?SJMPSTART;?

DELAY:MOVR0,#0FH;?LOOP:MOVR1,#FFH;?LOOP1:DJNZR1,LOOP1;?DJNZR0,LOOP;?RET;?

KARAKTER:DB 00111111B,00000110B,01011011B;?DB 01001111B,01100110B,01101101B;?END;?

C1C2C3C4C5C6

13. Operasi Full Step Stepping Motor $mod51;?Org 0h;?START:MOV P0,#00001000B;?CALLDELAY;?MOVP0,#00000100B;?CALLDELAY;?MOVP0,#00000010B;?CALLDELAY;?MOVP0,#00000001B;?CALLDELAY;?JMPSTART;?

DELAY:MOVR0,#0FFH;?LOOP:MOVR1,#0FFH;?LOOP1:DJNZR1,LOOP1;?DJNZR0,LOOP;?RET;?END;?

C1C2C3C4C5C6

14. Operasi Half Step Stepping Motor$mod51;?Org 0h;?START:MOVP0,#00001000B;?CALLDELAY;?MOVP0,#00001100B;?CALLDELAY;?MOVP0,#00000100B;?CALLDELAY;?MOVP0,#00000110B;?CALLDELAY;?MOVP0,#00000010B;?CALLDELAY;?MOVP0,#00000011B;?CALLDELAY;?MOVP0,#00000001B;?CALLDELAY;?MOVP0,#00001001B;?CALLDELAY;?JMPSTART;?

DELAY:MOVR0,#0FFH;?LOOP:MOVR1,#0FFH;?LOOP1:DJNZR1,LOOP1;?DJNZR0,LOOP;?RET;?END;?

C1C2C3C4C5C6

15. Operasi High Torque

$mod51;?Org 0h;?START:MOVP0,#00001100B;?CALLDELAY;?MOVP0,#00000110B;?CALLDELAY;?MOVP0,#00000011B;?CALLDELAY;?MOVP0,#00001001B;?CALLDELAY;?JMPSTART;?

DELAY:MOVR0,#0FFH;?LOOP:MOVR1,#0FFH;?LOOP1:DJNZR1,LOOP1;?DJNZR0,LOOP;?RET;?END;?

C1C2C3C4C5C6

16. Keypad 4X3

$mod51;? row0 bit P2.0; baris 0 = P2.0 row1 bit P2.1; baris 1 = P2.1 row2 bit P2.2; baris 2 = P2.2 row3 bit P2.3; baris 3 = P2.3 Col2 bit P2.4; kolom 2 = P2.4 Col1 bit P2.5;