Top Banner
PEMROGRAMAN MIKROKONTROLER ATMEL 89S51 I. PENDAHULUAN I.1 A Taxonomy of the Cognitif Domain Tujuan 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) C1 C2 C3 C4 C5 C6 92
29

MEMAHAMI PROGRAM.docx

Nov 10, 2015

Download

Documents

AbdMuinDgMulisa
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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; kolom 1 = P2.5 Col0 bit P2.6; kolom 0 = P2.6 ;==================================== keydata equ 70h; data output = memori 70H keybounc equ 71h; data anti bounching = memori 71H keyport equ P2; keypad menggunakan port 2 ;======================================== org 0h; alamat awal memori program berada pada 0000H mov P2,#11111111b; set semua bit pada port 2 dengan logic 1start: call keypad4x3 ; ambil data dari sub rutin scanning keypad 4X3 Mov A,keydata ;A = keydata Cjne A,#0FFh,send;? sjmp start ; LOOPING FOREVERsend: Mov P0,A ;P0 = A Sjmp start ; LOOPING FOREVER PART 2 ;==================================== ; subroutine scan keypad 4x3 ;====================================Keypad4x3: mov keybounc,#50 ;keybounc = 50 mov keyport,#0FFh ;keyport=P2= FFH clr col2 ; col2 = 0 (kolom 2 diberi logic 0)

;========================keyRow0_C2: jb row0,keyRow1_C2; bila baris0 kolom2 tidak ada tombol ;ditekan, scan baris1 kolom2. djnz keybounc,KeyRow0_C2; bila ada tombol ditekan, kerjakan anti ;bounching mov keydata,#0FEh ;Siapkan data output 11111110B, FEH ;(tombol 1) ret ;======================================KeyRow1_C2: jb row1,keyRow2_C2; bila baris1 kolom2 tidak ada tombol ;ditekan, scan baris2 kolom2. djnz keybounc,keyRow1_C2; bila ada tombol ditekan, kerjakan anti ;bounching mov keydata,#0FBh ; Siapkan data output 11111011B, FBH ;(tombol 4) Ret;? ;===========================================keyRow2_C2: jb row2,keyRow3_C2; bila baris2 kolom2 tidak ada tombol ;ditekan, scan baris3 kolom2. djnz keybounc,keyRow2; bila ada tombol ditekan, kerjakan anti ;bounching mov keydata,#0F8h ; Siapkan data output 11111000B, F8H ;(tombol 7) ret; ;=========================================keyRow3_C2: jb row3,keyRow0_C1; bila baris3 kolom2 tidak ada tombol ditekan, scan baris0 kolom1. djnz keybounc,keyRow3_C2; bila ada tombol ditekan, kerjakan anti bounching mov keydata,#0F0h ; Siapkan data output 11110000B, F0H (tombol *) ret;==========================================KeyRow0_C1: setb col2; kolom2 diberi logic 1 clr col1; kolom2 diberi logic 0 jb row0,keyRow1_C1; bila baris0 kolom1 tidak ada tombol ;ditekan, scan baris1 kolom1. djnz keybounc,KeyRow0_C1; bila ada tombol ditekan, kerjakan anti ;bounching mov keydata,#0FDh ; Siapkan data output 11111101B, FDH ;(tombol 2) ret;? ;========================================KeyRow1_C1: jb row1,keyRow2_C1; bila baris1 kolom1 tidak ada tombol ;ditekan, scan baris2 kolom1. djnz keybounc,keyRow1_C1; bila ada tombol ditekan, kerjakan anti ;bounching mov keydata,#0FAh ; Siapkan data output 11111010B, FAH ;(tombol 5) ret;? ;==========================================keyRow2_C1: jb row2,keyRow3_C1; bila baris2 kolom1 tidak ada tombol ;ditekan, scan baris3 kolom1.

djnz keybounc,keyRow2_C1; bila ada tombol ditekan, kerjakan anti ;bounching mov keydata,#0F7h ; Siapkan data output 11110111B, F7H ;(tombol 8) ret;? ;=====================================keyRow3_C1: jb row3,keyRow0_C0; bila baris3 kolom1 tidak ada tombol ;ditekan, scan baris0 kolom0. djnz keybounc,keyRow3_C1; bila ada tombol ditekan, kerjakan anti ;bounching mov keydata,#00h ; Siapkan data output 00000000B, 00H ;(tombol 0) ret;?

;============================================keyRow0_C0: setb col1; kolom1 diberi logic 1 clr col0; kolom0 diberi logic 0 jb row1,keyRow2_C0; bila baris0 kolom0 tidak ada tombol ;ditekan, scan baris1 kolom0. djnz keybounc,KeyRow0_C0; bila ada tombol ditekan, kerjakan anti ;bounching mov keydata,#0FCh; Siapkan data output 11111100B, FCH ;(tombol 3) ret ;? ;===========================================KeyRow1_C0: jb row1,keyRow2_C0; bila baris1 kolom0 tidak ada tombol ;ditekan, scan baris2 kolom0. djnz keybounc,keyRow1_C0; bila ada tombol ditekan, kerjakan anti ;bounching mov keydata,#0F9h ; Siapkan data output 11111001B, F9H ;(tombol 6) ret;? ;========================================keyRow2_C0: jb row2,keyRow3_C0; bila baris2 kolom0 tidak ada tombol ;ditekan, scan baris3 kolom0. djnz keybounc,keyRow2_C0; bila ada tombol ditekan, kerjakan anti ;bounching mov keydata,#0F6h ; Siapkan data output 11110110B, F6H ;(tombol 9) ret;? ;===========================================keyRow3_C0: jb row3,No_key; bila baris3 kolom0 tidak ada tombol ;ditekan, kerjakan No_key.

djnz keybounc,keyRow3_C0; bila ada tombol ditekan, kerjakan anti ;bounching mov keydata,#0Fh ; Siapkan data output 00001111B, 0FH ;(tombol #) ret;? ;=======================================Nokey: mov keydata,#0FFh ;? ret;? end;?

C1C2C3C4C5C6

PINNameFunction

1VSSGround voltage

2VCC+5V

3VEEContrast voltage

4RSRegister Select0 = Instruction Register1 = Data Register

5R/WRead/ Write, to choose write or read mode0 = write mode1 = read mode

6EEnable0 = start to lacht data to LCD character1= disable

7DB0LSB

8DB1-

9DB2-

10DB3-

11DB4-

12DB5-

13DB6-

14DB7MSB

15BPLBack Plane Light

16GNDGround voltage

17. Liquid Cristal Display ( LCD ) Init_lcd: mov r1,#00000001b ;Display clear call write_inst ;EN=pulse dan RS=0 mov r1,#00111000b ;Function set, ;Data 8 bit,2 line font 5x7 call write_inst ;Set bit EN=pulse dan RS=0 mov r1,#00001100b ;Display on, ;cursor off,cursor blink off call write_inst ;EN=pulse dan RS=0 mov r1,#00000110b ;Entry mode, Set increment call write_inst;? ret;?

C1C2C3C4C5C6

18. Menulis sebuah Karakter pada LCD $mod51;? org 0h;? call init_LCD;? start: mov R1,#80h ; Lokasi Display RAM, Row=1 Col=1 call write_inst;? mov R1,#'A' ; Cetak Karakter A call write_data;? stop: sjmp stop;?Init_lcd: mov r1,#00000001b ;Display clear call write_inst;? mov r1,#00111000b ;Function set,Data 8 bit,2 line font 5x7 call write_inst;? mov r1,#00001100b ;Display on, ;cursor off,cursor blink off call write_inst;? mov r1,#00000110b ;Entry mode, Set increment call write_inst;? ret;? ;======================================Write_inst: clr P3.6 ; P3.6 = RS =0 mov P0,R1 ; P0 = D7 s/d D0 = R1 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr P3.7 ; P3.7 =EN = 0 ret;? ;===================================Write_data: setb P3.6 ; P3.6 = RS =1 mov P0,R1 ; P0 = D7 s/d D0 = R1 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr p3.7 ; P3.7 =EN = 0 ret;? ;================================ delay: mov R0,#0;? delay1:mov R7,#0fh;? djnz R7,$;? djnz R0,delay1;? ret;? end

C1C2C3C4C5C6

19. Menulis 8 Karakter pada LCD

$mod51;?

org 0h;? call init_LCD;?start: mov R1,#80h ; Lokasi Display RAM, Row=1 Col=1 call write_inst;? mov R1,#'W';? call write_data;? mov R1,#'e';? call write_data;? mov R1,#'l';? call write_data;? mov R1,#'c';? call write_data;? mov R1,#'o';? call write_data;? mov R1,#'m';? call write_data;? mov R1,#'e';? call write_data;? stop: sjmp stop;?Init_lcd: mov r1,#00000001b ;Display clear call write_inst;? movr1,#00111000b ;Function set, Data 8 bit,2 line font 5x7 call write_inst ;? mov r1,#00001100b ;Display on, cursor off,cursor blink off call write_inst;? mov r1,#00000110b ;Entry mode, Set increment call write_inst;? ret;? ;================================Write_inst: clr P3.6 ; P3.6 = RS =0 mov P0,R1 ; P0 = D7 s/d D0 = R1 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr P3.7 ; P3.7 =EN = 0 ret;? ;=================================== Write_data: setb P3.6 ; P3.6 = RS =1 mov P0,R1 ; P0 = D7 s/d D0 = R1 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr p3.7 ; P3.7 =EN = 0 ret;? ;=================================delay: mov R0,#0;?delay1:mov R7,#0fh;? djnz R7,$;? djnz R0,delay1;? ret;? end

C1C2C3C4C5C6

20. Menulis Karakter dengan Look Up Tabel $mod51;?org 0h;? call init_LCD;?start: call write_char;? stop: sjmp stop;? ;================================write_char: mov dptr,#word1 ;DPTR = [ address word1 ] mov r3,#16 ;R3=16,number character to be display mov r1,#80h ;R1=80h,address DDRAM start position call write_inst;? ;===================================write1:clr a ; A = 0 movc a,@a+dptr ; A = [A+ DPTR] mov r1,A ; R1 = A inc dptr ; DPTR = DPTR +1 call write_data;? djnz r3,write1 ; R3 = R3-1, ret;? ;===================================Init_lcd: mov r1,#00000001b ;Display clear call write_inst ;? mov r1,#00111000b ;Function set, Data 8 bit,2 line font 5x7 call write_inst ;? mov r1,#00001100b ;Display on, cursor off,cursor blink off call write_inst;? mov r1,#00000110b ;Entry mode, Set increment call write_inst;? ret;? ;======================================Write_inst: clr P3.6 ; P3.6 = RS =0 mov P0,R1 ; P0 = D7 s/d D0 = R1 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr P3.7 ; P3.7 =EN = 0 ret;? ;====================================Write_data: setb P3.6 ; P3.6 = RS =1 mov P0,R1 ; P0 = D7 s/d D0 = R1 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time call delay ; call delay time clr p3.7 ; P3.7 =EN = 0 ret;? ;======================================delay: mov R0,#0;?delay1:mov R7,#0fh;? djnz R7,$;? djnz R0,delay1;? ret;? ;=======================================word1: DB ' Welcome Home '; Karakter yang disimpan di ROM ;======================================== end ;?

C1C2C3C4C5C6

III. KESIMPULANSejauh mana pencapaian pengetahuan Anda tentang Pemrograman Mikrokontroler Atmel 89S51 ? ( )

Nomor Soal /Level Cognitif(bobot)C1(5)C2(6)C3(7)C4(8)C5(9)C6(10)TotalBobot

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

Jumlah??????

IV. PENILAIAN

92

abcdefgP2.0P2.1P2.2P2.3P2.4P2.5P2.6+5VP0.5P0.4P0.3P0.2P0.0P0.112 V

P0.0

P0.1

P0.2

P0.3

+ 12 V

L1

L2

L3

L4

CMN

D0

D7

C2C1C00123456789...+VCCP2.0P2.1P2.2P2.3P2.4P2.5P2.6AT89S51R0R1R2R3D0D7