1. Triwiyanto - Jurusan Teknik Elektromedik A Software Oriented
Device
2. Triwiyanto - Jurusan Teknik Elektromedik
3. Triwiyanto - Jurusan Teknik Elektromedik uC Device
Programmer APAKAH MIKROKONTROLLER ? uC: sebuah komputer didalam
chip untuk mengontrol peralatan elektronik Sebuah device memerlukan
komponen-komponen pendukung seperti IC TTL dan CMOS dapat
direduksi/diperkecil dan akhirnya terpusat serta dikendalikan oleh
mikrokontroler ini
4. Triwiyanto - Jurusan Teknik Elektromedik KENAPA MENGGUNAKAN
MIKROKONTROLLER ? Dengan penggunaan mikrokontroler ini maka :
Sistem elektronik akan menjadi lebih ringkas Rancang bangun sistem
elektronik akan lebih cepat karena sebagian besar dari sistem
adalah perangkat lunak yang mudah dimodifikasi Pencarian gangguan
lebih mudah ditelusuri karena sistemnya yang kompak
5. Triwiyanto - Jurusan Teknik Elektromedik APA MANFAATNYA ?
Dengan menguasainya kita dapat menerapkan : 1. Dalam kehidupan
sehari-hari: a. Toaster b. Mesin Cuci c. Microwave dll. 2. Di
bidang peralatan kedokter: a. Incubator baby b. Phototherapy c.
Autoclave d. Photometer dll. 3. Di bidang industri a. Pengaturan
proses produksi b. Pengaturan Motor, Robotika, Telekomunikasi
dll.
6. Triwiyanto - Jurusan Teknik Elektromedik BAGAIMANA CARANYA?
Desain Program Assembly (MIDE-51) Org 0h mov A,10000000b mov P0,A
end 0001110101 0101010101 0101010101 0101010101 Compile (MIDE-51)
PROGRAM Download (ProgISP Soft.) 01000101001 01111000100
01001010100 00111101010 Test
7. Triwiyanto - Jurusan Teknik Elektromedik BAGAIMANA CARA
MEMPELAJARINYA ? 1.Belajar sendiri (otodidak), Anda bisa
mempelajari sendiri mikrokontroler dengan panduan buku dan
peralatan yang diperlukan, mulailah dari contoh-contoh sederhana.
2.Melalui lembaga Pendidikan, cara kedua ini bisa Anda dapatkan
baik melalui pendidikan formal seperti sekolah, perguruan tinggi,
maupun pendidikan non formal (kursus, pelatihan, les dan
sejenisnya).
8. Triwiyanto - Jurusan Teknik Elektromedik Microcontroller A
smaller computer On-chip RAM, ROM, I/O ports... Example: Motorolas
6811, Intels 8051, Zilogs Z8 and PIC 16X, AVR A single chip
Microcontroller :
9. Triwiyanto - Jurusan Teknik Elektromedik 1. MIKROKONTROLER
AT89S51 ISP ( In System Programmable ) 1.1. Karakteristik
Kompatibel dengan produk MCS-51 4K byte In System Programmable Flas
Memory Dapat dilakukan pemrograman 1000 tulis dan hapus Range catu
daya 4,0V s/d 5,0V Operasi statis: 0 Hz s/d 33 MHz Tiga Tingkat
Program memory lock 128 x 8 bit RAM internal 32 Programmable Jalur
I/O Dua 16 bit Timer/ Counter Enam Sumber Interupsi Full Duplex
Serial Channel Low Power Idle dan Mode Power Down Watcht Dog Timer
Fast Programming Time Fleksibel ISP programming
10. Triwiyanto - Jurusan Teknik Elektromedik 1.2. Konfigurasi
PIN
11. Triwiyanto - Jurusan Teknik Elektromedik CPU On-chip RAM
On-chip Flash ROM 4 I/O Ports Timer 0 Serial PortOSC Interrupt
Control External interrupts Timer 1 Timer/Counter Bus Control TxD
RxDP0 P1 P2 P3 Address/Data Counter Inputs 1.3. ARSITEKTUR
12. Triwiyanto - Jurusan Teknik Elektromedik Comparison of the
8051 Family Members Feature 8031 89C51 89S51 ROM (bytes) 0K 4k 4k
RAM (bytes) 128 128 128 Timers 2 2 2 I/O pins 32 32 32 Serial port
1 1 1 Interrupt sources 6 6 6 Programming ROM Ext Parallel Serial/
ISP
13. Triwiyanto - Jurusan Teknik Elektromedik DIRECT/ INDIRECT
ADDRESSING 128 RAM LOWER DIRECT ADDRESSING 128 RAM SFR 0 7F H 80 H
FF H INDIRECT ADDRESSING 128 RAM UPPER 80 H FF H 4 K ROM INTERNAL
0000 H 0FFF H RAM INTERNAL P0 /EA ALE P2 /RD /WR 8951 Register
Nilai ( biner ) ACC 00000000 B 00000000 PSW 00000000 SP 00000111
DPTR 00000000 P0-P3 11111111 IP 00000000 IE 00000000 TMOD 00000000
TCON 00000000 THO 00000000 TL0 00000000 TH1 00000000 TL1 00000000
SCON 00000000 1.4. Memori map in 89s51 family
14. Triwiyanto - Jurusan Teknik Elektromedik Contoh Program LOC
OBJ LINE ASSEMBLY 0000 1 org 0h 0000 00 2 nop 0001 E5B0 3 start:
mov a,p3 0003 F590 4 mov p1,a 0005 80FA 5 sjmp start 0006 6 end
Memori Program ( ROM ) Contoh hasil kompilasi tersebut menjelaskan
1. Data 00 di save ke alamat 0000H 2. Data B0 di save ke alamat
0001H 3. Data E5 di save ke alamat 0002h 4. Data 90 di save ke
alamat 0003H 5. Data F5 di save ke alamat 0004H 6. Data FA di save
ke alamat 0005H 7. Data 80 di save ke alamat 0006H
15. Triwiyanto - Jurusan Teknik Elektromedik CY AC FO RS1 RS0
OV - P REGISTER PSW Carry flag CY PSW.7 Auxilarry carry flag AC
PSW.6 General purpose F0 PSW.5 Register Bank Select RS1 PSW.4
Register Bank Select RS0 PSW.3 Over Flow OV PSW.2 General purpose -
PSW.1 Parity P PSW.0 RS1 RS0 Bank Address 0 0 0 00H-07H 0 1 1
08H-0FH 1 0 2 10H-17H 1 1 3 18H-1FH Memori Data (RAM) RO
R7R6R5R4R3R2R1 RO R7R6R5R4R3R2R1 RO R7R6R5R4R3R2R1 RO
R7R6R5R4R3R2R1 OOH 12H11H1OH OFH O7H O8H 18H 16H15H14H13H
OEHODHOCHOBH O6HO5HO4HO3HO2HO1H OAHO9H 1EH1DH1CH 1FH1AH19H 1BH 17H
20 H 2F H BIT-ADDRESSABLE SPACE 30 H 7F H RAM SERBAGUNA BANK 0 BANK
3 BANK 2 BANK 1 P0 P2 SCON SBUF P1 TH1TH0TL1TL0TMODTCON
PCONDPHDPLSP B ACC PSW IP P3 IE 80 H 87 H 88 H 90 H 98 H A0 H A8 H
B0 H B8 H D0 H E0 H F0 H 8F H 8951
18. Triwiyanto - Jurusan Teknik Elektromedik 2. Set Instruction
Assembly MOV P0,A ;mov A to port 0 MOV A,#72H ;A=72H MOV A, #r ;A=r
OR 72H MOV R4,#62H ;R4=62H MOV DPTR,#7634H ;DPTR=7634 Note 1: MOV
A,#30H MOV A,30H Note 2: MOV A,R3 MOV A,3 2.1. Instruksi copy data
MOV dest, source ; dest = source
19. Triwiyanto - Jurusan Teknik Elektromedik SETB C ; C=1 SETB
P0.0 ;bit 0 from Port 0 =1 SETB P3.7 ;bit 7 from port 3 =1 SETB
ACC.2 ;bit 2 from ACCUMULATOR =1 Note: CLR instruction is as same
as SETB i.e:CLR P0.0 ;P0.0=0 But following instruction is only for
CLR: CLR A ;A=0 2.2. Instruksi I/O Satu Bit SETB bit ; bit=1 CLR
bit ; bit=0
20. LED ( light emmiting diode ) Triwiyanto - Jurusan Teknik
Elektromedik
21. Triwiyanto - Jurusan Teknik Elektromedik Percobaan 1.1.
Menghidupkan/ Mematikan LED dengan perintah MOV Start: mov
P0,#00001111b sjmp start end Start: mov P0,#11111110b call delay
mov P0,#11111101b call delay sjmp start Delay: mov R0,#255 Del1:
nop; nop; nop; nop; djnz R0,Del1 ret end
22. Triwiyanto - Jurusan Teknik Elektromedik Percobaan 1.2.
Menghidupkan/ Mematikan LED dengan perintah SETB dan CLR Start: CLR
P0.0 ; P0.0=0 sjmp start end Start: CLR P0.0; P0.0=0 call delay
SETB P0.0; P0.0=1 call delay sjmp start Delay: mov R0,#255 Del1:
nop; nop; nop; nop; djnz R0,Del1 ret end
24. Triwiyanto - Jurusan Teknik Elektromedik Instruksi
Perkalian MUL AB ;B|A = A*B DIV AB ;A = A/B, B = A mod B MOV A,#25H
MOV B,#65H EX: MUL AB ;25H*65H=0E99 ;B=0EH, A=99H MOV A,#25 MOV
B,#10 EX: DIV AB ;A=2, B=5 Instruksi Pembagian
25. Triwiyanto - Jurusan Teknik Elektromedik EXAMPLE: MOV
R5,#89H ANL R5,#08H Mov A,#11000000b RR A ;[A]=01100000b Example:
INC R7 ;[R7]=[R7]+1 DEC A ;[A]=[A]-1 DEC 40H ; [40]=[40]-1 DEC byte
;byte=byte-1 INC byte ;byte=byte+1 Instruksi Decrement dan
Increment ANL - ORL XRL-CPL RR RL RRC RLC Instruksi Logika
26. Triwiyanto - Jurusan Teknik Elektromedik Table Instruksi
Aritmatika Mnemonic Operation Addressing Mode Exect. Dir Ind Reg
Imm Timer uS Add A, A=A+ V V V V 1 Addc A, A=A++C V V V V 1 Subb A,
A=A--C V V V V 1 Inc A A=A+1 Accumulator Only 1 Inc =+1 V V V 1 Inc
DPTR DPTR=DPTR+1 Data Pointer Only 2 Dec A A=A-1 Accumulator Only 1
Dec =-1 V V V 1 Mul AB B:A=BxA Accumulator and B Only 4 Div AB
A=Int[A/B] B=Mod[A/B] Accumulator and B only 4 DAA Dec Adjust
Accumulator Only 1
28. Triwiyanto - Jurusan Teknik Elektromedik Example: D7 D6 D5
D4 D3 D2 D1 D0 RL A ;rotate left A Contoh: ORG 0H START: MOV
A,#00000001B PUTAR: RL A SJMP PUTAR END A = 00000010 A = 00000100 A
= 00001000 : A = 10000000 A = 00000001 A = dst. CY D7 D6 D5 D4 D3
D2 D1 D0 RLC A ;rotate left and carry A Contoh: ORG 0H START: MOV
A,#00000001B PUTAR: RLC A SJMP PUTAR END A = 00000010 A = 00000100
: : A = 10000000 C=1 A = 00000000 A = 00000001 dst. RR A ;rotate
right A RRC A ;rotate right ;and carry A
29. Triwiyanto - Jurusan Teknik Elektromedik Mnemonic Operation
Addressing Mode Exect. Dir Ind Reg Imm uS Anl A, A=A and V V V V 1
Anl ,A =anl A V V V V 1 Anl ,#data =and #data V V V V 1 Orl A, A=A
or Accumulator Only 1 Orl ,A =orl A V V V 1 Orl ,#data = or #data
Data Pointer Only 2 Xrl A, A=A xor Accumulator Only 1 Xrl,A =xor A
V V V 1 Xrl ,#data =xor #data Accumulator and B Only 4 CLR A A=00h
Accumulator only 1 CPL A A= not A Accumulator only 1 RL A Rotate A
left 1 bit Accumulator only 1 RLC A Rotate A left trough Carry
Accumulator only 1 RR A Rotate A right 1 bit Accumulator only 1 RRC
Rotate A right trough carry Accumulator only 1 SWAP A Swap nibbles
in A Accumulator only 1
30. 1. Implementasikan AND dan NOT 2. Implementasikan ORL dan
ADC 3. Implementasikan NOT dan XOR 4. Sebuah A berisi 38h, lakukan
geser data kekiri RL sebanyak 3x dan hasilnya di AND kan dengan 36h
5. Sebuah A berisi 78d, geser ke kanan RR 4x hasil tambahkan dg 10h
Triwiyanto - Jurusan Teknik Elektromedik
31. Triwiyanto - Jurusan Teknik Elektromedik 2.5. LOOP and JUMP
Instructions DJNZ ( Decrement & Jump if Not Zero ) Ex.: write a
program to clear ACC, then add 3 to the accumulator ten time
Solution: MOV A,#0; MOV R2,#10 AGAIN: ADD A,#03 DJNZ R2,AGAIN
;repeat until R2=0 (10 times) MOV R5,A CJNE (Compare & Jump if
Not Equal ) Ex.: to detect, wheather the A= #8 Get: Mov A, P1 Cjne
A,#8, get end
32. Triwiyanto - Jurusan Teknik Elektromedik SJMP and LJMP:
LJMP(long jump) Jump to any memory location from 0000 to FFFFH.
SJMP(short jump) Jump to the relative address range of 00-FFH is
divided into forward and backward jumps, that is , within -128 to
+127 bytes of memory relative to the address of the current
PC.
33. Triwiyanto - Jurusan Teknik Elektromedik Other conditional
jumps : Instruksi Keterangan Waktu(us) JZ Jump if A=0 1 JNZ Jump if
A/=0 1 DJNZ Decrement and jump if A/=0 2 CJNE A,#byte, label Jump
if A/=byte 2 CJNE reg,#data,label Jump if byte/=#data 2 JC Jump if
CY=1 1 JNC Jump if CY=0 1 JB Jump if bit=1 1 JNB Jump if bit=0 1
JBC Jump if bit=1 and clear bit 1
34. Triwiyanto - Jurusan Teknik Elektromedik CALL Instructions
which is used to call a subroutine. LCALL(long call) LCALL can be
used to call subroutines located anywhere within the 64K byte
address space of the 8051. ACALL(long call) ACALL can be used to
call subroutines located anywhere within the 2K byte address space
of the 8051. CALL(a flexible call) ACALL can be used to call
subroutines located anywhere within the address space of the
8051.
35. SWITCH PUSH BUTTON Triwiyanto - Jurusan Teknik Elektromedik
Percobaan 2.1. Menghidupkan LED melalui SW, dengan instruksi MOV
Start: mov A, P2 mov P0, A sjmp start end Percobaan 2.2.
Menghidupkan/ mematikan LED melalui satu buah SW, dengan instruksi
JB setb P0.0 Start: jb P2.0,start nop;nop;nop cpl P0.0 sjmp start
end
36. Triwiyanto - Jurusan Teknik Elektromedik Percobaan 2.3.
Menghidupkan dan mematikan LED melalui dua buah SW, dengan
instruksi JB. Start: JB P2.0, led_off MOV P0,#00000000b SJMP start
Led_off: JB P2.1, start MOV P0,#11111111b SJMP start END Start: JB
P2.0, led_off CLR P0.0 SJMP start Led_off: JB P2.1, start SETB P0.0
SJMP start END
37. Triwiyanto - Jurusan Teknik Elektromedik Percobaan 2.3.
Menghidupkan LED melalui SW, dengan instruksi JB. Rencanakan
program untuk mendeteksi saklar P2.7, apabila ditekan maka LED P0.0
sd P0.3 Nyala dan yang lain padam, dan bila saklar P2.6 ditekan
maka LED P0.4 sd P0.7 nyala dan yg lain padam. ?
38. Triwiyanto - Jurusan Teknik Elektromedik Immediate
Addressing Mode MOV A,#65H MOV A,#A MOV R6,#65H MOV DPTR,#2343H MOV
P1,#65H Example : Num EQU 30 MOV R0,Num MOV DPTR,#data1 ORG100H
data1: db Surabaya 2.6. Addressing Modes
39. Triwiyanto - Jurusan Teknik Elektromedik Register
Addressing Mode MOV Rn, A ;n=0,..,7 ADD A, Rn MOV DPL, R6 MOV DPTR,
A MOV Rm, Rn
40. Triwiyanto - Jurusan Teknik Elektromedik Direct Addressing
Mode Although the entire of 128 bytes of RAM can be accessed using
direct addressing mode, it is most often used to access RAM loc. 30
7FH. MOV R0, 40H MOV 56H, A MOV A, 4 ; MOV A, R4 MOV 6, 2 ; copy R2
to R6 ; MOV R6,R2 is invalid ! SFR register and their address MOV
0E0H, #66H ; MOV A,#66H MOV 0F0H, R2 ; MOV B, R2 MOV 80H,A ; MOV
P1,A
41. Triwiyanto - Jurusan Teknik Elektromedik Register Indirect
Addressing Mode In this mode, register is used as a pointer to the
data. MOV A,@Ri ; move content of RAM loc.Where address is held by
Ri into A MOV @R1,B ;( i=0 or 1 ) In other word, the content of
register R0 or R1 is sources or target in MOV, ADD and SUBB
insructions. Example: Write a program to copy a block of 10 bytes
from RAM location sterting at 30h to RAM location starting at 60h.
Solution: MOV R0,#30h ; source pointer MOV R1,#60h ; dest pointer
MOV R2,#10 ; counter L1:MOV A,@R0 MOV @R1,A INC R0 INC R1 DJNZ
R2,L1
42. Triwiyanto - Jurusan Teknik Elektromedik Indexed Addressing
Mode And ROM Access This mode is widely used in accessing data
elements of look-up table entries located in the program (code)
space ROM at the 8051 MOVC A,@A+DPTR A= content of address A +DPTR
from ROM Note: Because the data elements are stored in the program
(code ) space ROM of the 8051, it uses the instruction MOVC instead
of MOV. The C means code.
43. Triwiyanto - Jurusan Teknik Elektromedik Example: Assuming
that ROM space starting at 250h contains Hello., write a program to
transfer the bytes into RAM locations starting at 40h. Solution:
ORG 0 MOV DPTR,#MYDATA MOV R0,#40H L1: CLR A MOVC A,@A+DPTR JZ L2
MOV @R0,A INC DPTR INC R0 SJMP L1 L2: SJMP L2
;------------------------------------- ORG 250H MYDATA:DB Hello,0
END Notice the NULL character ,0, as end of string and how we use
the JZ instruction to detect that.
44. Triwiyanto - Jurusan Teknik Elektromedik Example: Write a
program to get the x value from P1 and send x2 to P2, continuously
. Solution: ORG 0 MOV DPTR, #TAB1 L01: MOV A,P1 MOVC A,@A+DPTR MOV
P2,A SJMP L01 ;----------------------------------------------------
ORG 300H TAB1: DB 0,1,4,9,16,25,36,49,64,81 END
45. 7 SEGMEN Triwiyanto - Jurusan Teknik Elektromedik
46. Triwiyanto - Jurusan Teknik Elektromedik C B A Y7 Y6 Y5 Y4
Y3 Y2 Y1 Y0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1
1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1
1 1 1 1 : : : 1 1 1 0 1 1 1 1 1 1 1 Tabel Kebenaran 74LS138
Percobaan 3.1. Display Huruf A Display huruf A pada 7 segmen ke 8
Start: MOV P0,#10001000b CLR P3.5 CLR P3.6 CLR P3.7 SJMP Start END
Percobaan 3.2. Display Huruf Ab Display huruf Ab pada 7 segmen ke 8
& 7 Start: mov P0, #10001000b clr P3.5 clr P3.6 clr P3.7 call
delay mov P0, #10000011b setb P3.5 clr P3.6 clr P3.7 call delay
sjmp Start Delay: ----------------------- -----------------------
ret end
47. Triwiyanto - Jurusan Teknik Elektromedik Interaksi 7 segmen
dengan SW Percobaan 3.3. Apabila 8 buah SW terhubung ke P2.0 sd
P2.7 rencanakan program untuk mencetak karakter A bila P2.0
ditekan, dan mencetak karakter b bila P2.1 ditekan. karA: JB
P2.0,karB mov P0, #10001000b clr P3.5 clr P3.6 clr P3.7 karB: JB
P2.1, karA mov P0, #10000011b clr P3.5 clr P3.6 clr P3.7 sjmp karA
end
48. Triwiyanto - Jurusan Teknik Elektromedik Liquid Crystal
Display PIN Name Function Discription 1,16 VSS Ground 2 VCC Power
Supply 3 VEE Contras 4 RS Register Select 0: D7..D0, interpreted as
commands 1: D7..D0, interpreted as data 5 R/W Read/ Write 0: write
data, 1: read data 6 E Enable 1 to 0: data/command are transferred
to lcd 14..7 D7..D0 Data 15 BPL Back Pane Light cahaya
background
49. Triwiyanto - Jurusan Teknik Elektromedik 4.1. LCD Screen 1.
LCD Screen terdiri dari 2 baris dan 16 kolom karakter 2. Setiap
karakter terdiri 5x8 dot matrix 3. Kontras dapat menggunakan
pembagi tegangan atau menggunakan potensio
50. Triwiyanto - Jurusan Teknik Elektromedik 4.2. DDRAM DDRAM
memory is used for storing characters that should be displayed. The
size of this memory is sufficient for storing 80 characters. One
part of these locations is directly connected to the characters on
display.
51. Triwiyanto - Jurusan Teknik Elektromedik 4.3. Basic Command
Command RS RW D7 D6 D5 D4 D3 D2 D1 D0 Exec Time(us) Clear display 0
0 0 0 0 0 0 0 0 1 1.64 ms Cursor home 0 0 0 0 0 0 0 0 1 X 1.64 ms
Entry mode set 0 0 0 0 0 0 0 1 I/D S 40 us Display on/off 0 0 0 0 0
0 1 D U B 40 us Cursor/display shift 0 0 0 0 0 1 D/C R/L X X 40 us
Function set 0 0 0 0 1 DL N F X X 40 us Set DDRAM address 0 0 1 X X
X X X X X 40 us Set CGRAM address 0 0 0 1 X X X X X X 40 us Write
to CG/DDRAM 1 0 X X X X X X X X 40 us Read fr. CG/DDRAM 1 1 X X X X
X X X X 40 us
52. Triwiyanto - Jurusan Teknik Elektromedik 3.4. Inisialisasi
LCD Karakter 0 0 0 0 1 DL N F X X Function Set DL : Set Data Length
(1= data length 8 bit, 0= data length 4 bit ) N : Set jumlah baris
( 1= 2 line display, 0=1 line display) F : Set Character font (1= 5
x 10 dots; 0= 5 x 7 dots ) 0 0 0 0 0 0 0 1 I/D S Entry Mode Set RS
R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 RS R/W DB7 DB6 DB5 DB4 DB3 DB2
DB1 DB0 I/D : Set increment/ decrement ( 1= increment, 0= decrement
) S : Display Sift ( 1=on, 0=off ) Display On/ Off Control RS R/W
DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 D C B B : Cursor
blink ( 1= blink on,0=blink off ) C : Cursor display (1=cursor on,
0=cursor off) D : display On ( 1= display on)
53. Triwiyanto - Jurusan Teknik Elektromedik Cursor or Display
Sift Shifts the cursor position or display to the right or left
without writing or reading display data. This function is used to
corect or search for the display RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1
DB0 0 0 0 0 0 1 D/C R/L X X Note : x = Dont care D/C R/L Note 0 0
Shift cursor position to the left 0 1 Shift cursor position to the
right 1 0 Shift the entire display to the left 1 1 Shift the entire
display to the right
54. Triwiyanto - Jurusan Teknik Elektromedik 0 0 1 A A A A A A
A Clear Display RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Dengan
menuliskan instruksi tersebut maka semua tamplan akan reset 0 0 0 0
0 0 0 0 0 1 A : Lokasi memori display 0000000 1111111 ( 00 h 7F h )
Instruksi Pemilihan RAM 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D
0E 0F . 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F . Ram
Display Address ( in Hexa ) RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Baris 1 Baris 2
55. Percobaan 4.1. Rencanakan program untuk mencetak sebuah
karakter A pada baris 1 kolom 1 Triwiyanto - Jurusan Teknik
Elektromedik org 0h call init_LCD start: mov R1,#80h call
write_inst mov R1,#'A' call write_data stop: sjmp stop Init_lcd:
mov r1,#00000001b; Disp clear call write_inst mov r1,#00111000b;
Function Set call write_inst mov r1,#00001100b; Disp.on call
write_inst mov r1,#00000110b ;Entry mode call write_inst ret
Write_inst: clr P3.6 ; RS =0 mov P0,R1 setb P3.7 ; EN=1 call delay
clr P3.7 ; EN =0 ret Write_data: setb P3.6 mov P0,R1 setb P3.7 call
delay clr p3.7 ret ; delay: mov R0,#0 delay1: mov R7,#0fh djnz R7,$
djnz R0,delay1 ret end
56. Triwiyanto - Jurusan Teknik Elektromedik Percobaan 4.2.
Rencanakan program untuk mencetak kalimat Selamat Datang pada baris
1 org 0h call init_LCD Start: call write_char Stop: sjmp stop ;
write_char: mov dptr,#word1 mov r3,#16 mov r1,#80h call write_inst
; write1: clr a movc a, @a+dptr mov r1,A inc dptr call write_data;
djnz r3,write1 ret Write_inst: ( lihat percb. Sebelumnya) ret ;
Write_data: ( lihat percb. Sebelumnya) ret ; Init_LCD: ( lihat
percb. Sebelumnya) ret ; Delay: ( lihat percb. Sebelumnya) ret
word1: DB ' Selamat Datang'; end
57. Triwiyanto - Jurusan Teknik Elektromedik 5. Analog to
Digital Converter 0804 VCC D1 3V G 74LS244 P3.2 10k P3.3 P3.4 VCC
10 10k VCC VCC 150p 13 2 13 2 10k 8 R6 220 ADC0804 6 7 9 11 12 13
14 15 16 17 18 19 4 5 1 2 3 +IN -IN VREF/2 DB7 DB6 DB5 DB4 DB3 DB2
DB1 DB0 CLKR CLKIN INTR CS RD WR 20P1.7..P1.0 PROG RUN/ EN ADC 6 5
4 3 2 1 maksVV INREF 2 1 255 MAKSV V IN RESOLUSI Pin ADC 0804
Fungsi /INTR End of conversion, active low /WR Start conversion,
pulse transition /RD Read data D0 s/d D7 Data /CS Chip Select,
active low CLK IN/ CLK R Clock Oscilator Vref Tegangan referensi
Vin Tegangan input
58. Triwiyanto - Jurusan Teknik Elektromedik Percobaan 5.1.
Rencanakan program untuk menampilkan data ADC0804 ke LCD karakter
2x16, seperti yang ditunjukkan pada gambar. ratusan equ 30h puluhan
equ 31h satuan equ 32h org 0h call init_LCD call write_char start:
call ADC call Bin2Dec call Write2LCD sjmp start ; ADC: clr P3.3 nop
setb P3.3 eoc: jb P3.2,eoc clr P3.4 mov A,P1 setb P3.4 ret
Write2LCD: mov r1,#089h call write_inst mov a,ratusan add a,#30h
mov r1,a call write_data ; mov r1,#08ah call write_inst mov
a,puluhan add a,#30h mov r1,a call write_data ; mov r1,#08bh call
write_inst mov a,satuan add a,#30h mov r1,a call write_data ret
Bin2Dec: mov b,#100d div ab mov ratusan,a mov a,b mov b,#10d div ab
mov puluhan,a mov satuan,b ret ; write_char: mov dptr,#word1 mov
r3,#16 mov r1,#80h acall write_inst ; write1:clr a movc a,@a+dptr
mov r1,A inc dptr acall write_data djnz r3,write1 ret Init_lcd: ret
; Write_data: ret ; Write_inst: . ret ; Delay: .... ret word1: DB
Data : ' end
59. Triwiyanto - Jurusan Teknik Elektromedik
60. Triwiyanto - Jurusan Teknik Elektromedik Watch out !, you
may miss my overflow every 10s. If you get sleep COUNTER UP/DOWN UP
4 BIT Co 74193 D3 D2 D1 D0 What a number to be loaded to my
register, so I can get pulse out every 10 s on Co My heart beat
periode is 1 Hz now Think smart, you must load data : 16-10 = 6 or
0110 b on me COUNTER UP Clock 16 BIT TF1 TH1(D15..D8) TL1(D7..D0) I
just finished My work out. So, my heart Beat is 1 MHz, Now If you
loaded, TL1 =00 TH1 =00, then you, need 65536 pulse. To Get
overflow on my TF1 If my periode input clock is 1 u Then I wil
interupt you, after 1 uS x 65536 = 0.065536 s Load
61. Triwiyanto - Jurusan Teknik Elektromedik COUNTER UP Clock
16 BIT TF1 TH1(D15..D8) TL1(D7..D0) Clock = 1 Mhz 0E0h0B1h Over
flow, after 20000 us = 0.02 s To get over flow after 20000 uS or
0.02 s : 65536 20000 = 45536 or 0B1E0 h To get over flow after
10000 uS or 0.01 s : 65536 10000 = 55536 or 0D8F0 h Data to be
loaded to TL1 and TH1 Register 9. Basic Timer/ Counter
62. Triwiyanto - Jurusan Teknik Elektromedik MODE COUNTER OR
TIMER XTALL/ 12 G C/T M1 M0 G C/T M1 M0 TF1 TR1 TF0 TR0 IE1 IT1 IE0
IT0 TL1 TH1 TMOD TCON 0 = S1 keatas 1 = S1 kebawah S1 0 = S2 buka 1
= S2 tutup S2 Limpahan Timer/ Counter T1/ P3.5 INT1/ P3.3 89C51
Timer1 Timer 0 Pemilihan Mode: Counter or Timer Mulai mencacah
Overflow on TFx
63. Triwiyanto - Jurusan Teknik Elektromedik M1 M0 OPERATING 0
0 Mode 0: 13 bit Timer/ Counter 0 1 Mode 1: 16 bit Timer/ Counter 1
0 Mode 2: 8 bit auto reload Timer/ Counter. THx menerima data yang
akan direload ke TLx setiap kali TLx overflow 1 1 Mode 3: 8 bit
Timer/ Counter by TL0. TH0 merupakan 8 bit Timer yang dikontrol
dari Timer 1 Gate C/T M1 M0 Gate C/T M1 M0 TIMER 1 TIMER 0 TMOD
REGISTER
64. Triwiyanto - Jurusan Teknik Elektromedik TF1 TR1 TF0 TR0
IE1 IT1 IE0 IT0 TCON REGISTER ( BIT ADDRESSABLE REGISTER) TIMER 1
TIMER 0 TIMER 1 TIMER 0 BIT SYMBOL FUNCTION TCON.7 TF1 Timer 1
overflow flag. Set by harware on timer/counter overflow. Clear by
hardware when processor vectors to interupt routine, or clearing by
software TCON.6 TR1 Timer 1 run control bit. Set/cleared by
software to turn timer/counter on/off TCON.5 TF0 Idem timer 0
TCON.4 TR0 Idem timer 0 TCON.3 IE1 Interupt 1 Edge flag, set by
harware when external interrupt edge detected. Cleared when
interupt processed TCON.2 IT1 Interrupt 1 type control bit. Set/
Cleared by software to specify falling edge/ low level triggered
external interupt TCON.1 IE0 Idem timer 0 TCON.0 IT0 Idem timer
0
65. Triwiyanto - Jurusan Teknik Elektromedik MODE 1 : TIMER 16
BIT ON TIMER 1 XTALL/ 12 0 0 0 1 0 0 0 0 TF1TR1 TL1 TMOD TCON 0 =
S1 keatas 1 = S1 kebawah S1 0 = S2 buka 1 = S2 tutup S2 T1/ P3.5
INT1/ P3.3 89C51 COUNTER 16 BIT TH1 P1.0 OSCILOSCOPE Please load a
number to my register ( TL1, TH1) tobe counted, by MOV TH1,#0D8h
MOV TL1,#0EFh
66. Triwiyanto - Jurusan Teknik Elektromedik XTALL/ 12 0 0 1 0
0 0 0 0 TF1TR1 TL1( 8 BIT ) TMOD TCON 0 = S1 keatas 1 = S1 kebawah
S1 0 = S2 buka 1 = S2 tutup S2 T1/ P3.5 INT1/ P3.3 89C51 COUNTER 16
BIT TH1 (8 BIT) P0.0 OSCILOSCOPE LATCH MODE 2 : 8 BIT AUTO-RELOAD
Reload data 8 bit on TH1 RUN as TIMER SETB TR1 to Start RUN
68. Triwiyanto - Jurusan Teknik Elektromedik Percobaan 6.1.
Rencanakan program untuk menghitung clock eksternal dengan
menggunakan fungsi Counter pada TIMER 0, tampilkan pada display 7
segmen dengan nilai desimal : 000 sd. 255. Hubungkan pin T0/P3.4/
pin 14 pada IC 89s51 ke clock generator
69. Triwiyanto - Jurusan Teknik Elektromedik hundreds equ 30h
Tens equ 31h Units equ 32h Org 0h Mov TMOD,#00000100b Setb TR0 Get:
Mov A, TL0 Call Bin2Dec Call Display7Segmen Sjmp Get ; Bin2Dec: mov
b,#100d div ab mov hundreds,a mov a,b mov b,#10d div ab mov tens,a
mov units,b ret Display7Segmen: clr P3.5 clr P3.6 clr P3.7 mov A,
Hundreds mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A call delay ;
setb P3.5 clr P3.6 clr P3.7 mov A, Tens mov DPTR,#Data7segmen movc
A,@A+DPTR mov P0,A call delay clr P3.5 ; setb P3.6 clr P3.7 mov A,
units mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A call delay ret
delay: mov R1,#25 del1: mov R2,#25 del2: djnz R2,del2 djnz R1,del1
ret ; Data7segmen: db 11000000b,11111001b, 10100100b,10110000b,
10011001b db 10010010b,10000010b, 11111000b,10000000b, 10010000b ;
end
70. Triwiyanto - Jurusan Teknik Elektromedik 05.00 BANGUN PAGI
06.00 SARAPAN 07.00 KULIAH 15.00 KERJAKAN TGS. 18.00 MAIN 19.00
BELAJAR ? 21.00 TIDUR RUTINITAS dan PRIORITAS KARENA INTERUPSI
73. Triwiyanto - Jurusan Teknik Elektromedik EA X X ES ET1 EX1
ET0 EX0 LSBMSB INTERRUPT ENABLE REGISTER ( IE ) BIT SYMBOL FUNCTION
IE.7 EA Disables all interrupts.If EA=0, no interrupt will be
acknoledged. If EA=1,each interrupt source is individually enabled/
dis.by software IE.6 - Reserved IE.5 - Reserved IE.4 ES Enables or
dis. the serial port interrupt, if ES=0, -> disabled IE.3 ET1
Enables or dis. the timer 1 overflow interrupt, if ET1=0 ->
disabled IE.2 EX1 Enables or dis. External interrupt 1.If EX1=0
-> disabled IE.1 ET0 Enables or dis. the timer 0 overflow
interrupt, if ET0=0 -> disabled IE.0 EX0 Enables or dis.
External interrupt 0.If EX0=0 -> disabled
74. Triwiyanto - Jurusan Teknik Elektromedik X X X PS PT1 PX1
PT0 PX0 LSBMSB INTERRUPT PRIORITY REGISTER ( IP ) BIT SYMBOL
FUNCTION IP.7 - Reserved IP.6 - Reserved IP.5 - Reserved IP.4 PS
Defines the serial port interrupt. PS=1 programs it to the higher
priority IP.3 PT1 Defines the timer 1 IP.2 PX1 Defines the external
1 IP.1 PT0 Defines the timer 0 IP.0 PX0 Defines the external 0
75. Triwiyanto - Jurusan Teknik Elektromedik VEKTOR INTERUPSI
Source Vector Address IE0 0003H TF0 000BH IE1 0013H TF1 001BH RI +
TI 0023H
76. Triwiyanto - Jurusan Teknik Elektromedik Interupsi
Eksternal 0 Org 0h Sjmp Start Org 03h Ljmp AdaInterupsiEkst0 Start:
call InitInterupsiEkst0 ; Forever: setb P1.0 `sjmp Forever ;
InitInterupsiEks0: Setb P1.0 Setb IT0; hi to low Setb EX0; en ext
int 0 Setb EA; en global ret AdaInterupsiEkst0: Clr P1.0 reti end
INT0 P1.0 Rencanakan program untuk menanggapi sebuah interupsi pada
INT0 transisi hi-lo, sehingga bila ada interupsi maka P1.0 = 0 dan
kembali lagi P1.0=1.
77. Triwiyanto - Jurusan Teknik Elektromedik Interupsi TF0 Org
0h Sjmp Start Org 0Bh Ljmp AdaInterupsiTF0 Start: call
InitInterupsiTF0 ; Forever: sjmp Forever ; InitInterupsiTF0: Setb
P1.0 Setb ET0 Setb EA call LoadData ret LoadData: Mov TMOD,#.......
Mov TL0,#.... Mov TH0,#.... Setb TR0 ret AdaInterupsiTF0: Clr P1.0
call Loaddata reti end TF0 P1.0 Rencanakan program untuk menanggapi
sebuah interupsi yang dibangkitkan oleh Timer0,Mode 1 melalui bit
TF0, sehingga bila tidak ada interupsi P1.0 = 1, dan ada interupsi
P1.0 =0. Interupsi akan dibangkitkan setiap 50.000 us.
78. Latihan Triwiyanto - Jurusan Teknik Elektromedik 1.
Rencanakan program untuk menanggapi interupsi pada INT0 level,
sehingga bila: 1. Ada interupsi: buzer bunyi 2. Tidak ada interupsi
: Display A Tentukan: a. subrutin InitIntExt0 b. Subrutine Display
A, c. Keseluruhan 2. Rencanakan program untuk menanggapi interupsi
pada INT Transisi, sehingga bila: 1. Ada interupsi: buzer bunyi 2.
Tidak ada interupsi : Display O Tentukan: a. subrutin InitIntExt1
b. Subrutine Display O, c. Keseluruhan 3. Rencanakan program untuk
melayani interupsi dari TIMER 0 mode 2 sebagai TIMER, dan melayani
interupsi setiap 250 uS, bila: 1. Tidak ada interupsi : Display L
2. Ada Interupsi : buzer berbunyi Tentukan: a. Init Interupsi Timer
b. Subrutine Display L c. Rutin Keseluruhan
79. Triwiyanto - Jurusan Teknik Elektromedik
80. Triwiyanto - Jurusan Teknik Elektromedik The Power of
Serial Comm. RS232 SINKRON KOMUNIKASI 1. Dua buah divais
diinisialisasi atau disinkronisasi menggunakan clock yang sama dan
secara kontinu dapat mengirimkan atau menerima karakter untuk tetap
sinkron. 2. Komunikasi sinkron mempunyai kecepatan yang lebih
tinggi bila dibandingkan dengan asinkron, karena tidak ada
penambahan bit, untuk menandai permulaan dan akhiran byte data. 3.
Port Serial pada PC adalah asinkron divais, sehingga hanya support
untuk komunikasi serial asinkron D0 D6D5D4D3D2D1 D7DATA CLOCK
81. Triwiyanto - Jurusan Teknik Elektromedik ASINKRON
KOMUNIKASI 1. Asinkron berarti tanpa sinkronisasi, sehingga tidak
diperlukan pengiriman sinyal clock. 2. Akan tetapi, pada setiap
awalan dan akhiran harus ditandai dengan bit start dan bit stop. 3.
Start bit menunjukkan, bahwa data akan segera dikirim atau
diterima, dan bit stop menyatakan akhiran dari sinyal. 4. Keperluan
penambahan pengiriman dua bit ini akan menyebabkan komunikasi
asinkron akan lebih lambat bila dibandingkan dengan komunikasi
sinkron. 5. Pada jalur asinkron, kondisi idle dinyatakan sebagai
nilai 1 ( yang juga disebut sebagai keadaan mark )
82. Triwiyanto - Jurusan Teknik Elektromedik PANJANG KABEL KOM.
RS232 1. Standart RS232 menyarankan batasan panjang kabel 50 feet (
1 m = 3,3 feet ) 2. Sesungguhnya kita dapat mengabaikan standard
ini, karena kabel dapat lebih panjang dari 10.000 feet pada
baudrate sampai 19200 bps, jika kita menggunakan kabel yang
berkualitas dan terlindungi. Baudrate BPS Shielded Cable Length
(feet) Unshielded Cable Length (feet) 9600 250 100 4800 500 250
2400 2000 500 1200 3000 500 300 4000 1000 110 5000 1000
83. Triwiyanto - Jurusan Teknik Elektromedik Standart RS232
RS232 LEVEL
84. Triwiyanto - Jurusan Teknik Elektromedik Interfacing Serial
Port pada Mikrokontroller Interfacing port serial lebih sulit
dibandingkan dengan port parallel. Pada beberapa peralatan telah
memiliki port serial untuk berkomunikasi dengan komputer atau
peralatan lain. Apa keuntungan menggunakan serial komunikasi ? 1.
Kabel serial dapat lebih panjang dibandingkan kabel parallel. Port
Serial mentransmisikan logika 1 dengan tegangan ~ -25V dan logika 0
dengan tegangan ~ +25V. Dibandingkan parallel : 0 dan 5 V. Cable
Loss bukan menjadi masalah utama pada transmisi data secara serial.
2. Anda tidak memerlukan kabel yang banyak, dibandingkan parallel.
Hanya perlu 3 kabel, bandingkan dengan cara parallel, sehingga
biaya lebih murah.
85. Triwiyanto - Jurusan Teknik Elektromedik Port Serial pada
Mikrokontroller YOU CAN CONTROL YOUR DEVICE FROM REMOTE PLACE, JUST
BY THREE CABLE Start Stop P3.0/ RXD P3.1/ TXD T1OUT R1IN GND R1OUT
T1IN RS232 89C51 RD(2) TD(3) GND (5) COMM 1,COMM 2 Etc. ( DB 9 ) My
job is to convert RS232 level to TTL Logic Level 2400 bps
86. Triwiyanto - Jurusan Teknik Elektromedik Port Serial PC Pin
Assignment Description 1 DCD Data carrier detect 2 RXD Receive data
3 TXD Transmit data 4 DTR Data terminal ready 5 GND Signal ground 6
DSR Data set ready 7 RTS Request to send 8 CTS Clear to send 9 RI
Ring indicator Base Address: -3F8 h -2F8 h
88. Triwiyanto - Jurusan Teknik Elektromedik SERIAL PORT DAPAT
DIOPERSIKAN DALAM 4 MODE 1. Mode O : Mode Sinkron, data dikirim dan
diterima melalui P3.0, dan menyalurkan clock melalui P3.1 2. Mode 1
:10 bit are transmitted ( through TxD ) or receive (through RxD), a
start bit (0), a 8 bit data ( LSB first ), and a stop bit (1). On
receive, the stop bit goes into RB8 in SFR SCON. The baud rate is
variable. 3. Mode 2 : 11 bit are transmitted ( through TxD ) or
receive ( through RxD ), a start bit (0), a 8 bit data ( LSB first
), 9th bit and a stop bit (1). 4. Mode 3 : idem mode 2, baudrate
dapat diatur SBUF merupakan SFR (Special Function Register) yang
terletak pada memori-data internal dengan nomor $99. SBUF mempunyai
kegunaan ganda, data yang disimpan pada SBUF akan dikirim keluar
MCS51 lewat port seri, sedangkan data dari luar MCS51 yang diterima
port seri diambil dari SBUF pula D7 D6 D5 D4 D3 D2 D1 D0 SBUF -
SERIAL BUFFER REGISTER
89. Triwiyanto - Jurusan Teknik Elektromedik SM2 Enables the
multiprocessor communication feature in Modes 2 and 3. In Mode 2 or
3, if SM2 is set to 1, then Rl will not be activated if the
received 9th data bit (RB8) is 0. In Mode 1, if SM2=1 then RI will
not be activated if a valid stop bit was not received. In Mode 0,
SM2 should be 0. REN Enables serial reception. Set by software to
enable reception. Clear by software to disable reception. TB8 The
9th data bit that will be transmitted in Modes 2 and 3. Set or
clear by software as desired. RB8 In Modes 2 and 3, is the 9th data
bit that was received. In Mode 1, it SM2=0, RB8 is the stop bit
that was received. In Mode 0,RB8 is not used TI Transmit interrupt
flag. Set by hardware at the end of the 8th bit time in Mode 0, or
at the beginning of the stop bit in the other modes, in any serial
transmission. Must be cleared by software. RI Receive interrupt
flag. Set by hardware at the end of the 8th bit time in Mode 0, or
halfway through the stop bit time in the other modes, in any serial
reception (except see SM2). Must be cleared by software. SM0 SM1
SM2 REN TB8 RB8 TI RI SCON - SERIAL PORT CONTROL REGISTER SM0 SM1
MODE Keterangan Baudrate 0 0 0 0 0 1 1 1 1 1 2 3 Sinkron UART 8 BIT
UART 9 BIT UART 9 BIT TETAP (fosc/12) VARIABEL TETAP (fosc/32 dan
fosc/64) VARIABEL
90. Triwiyanto - Jurusan Teknik Elektromedik Menggunakan Timer
1 untuk membangkitkan Baud Rate Ketika timer 1 digunakan untuk
membangkitkan clock baud rate, baud rate pada mode 1 dan 3 adalah
ditentukan oleh laju overflow timer 1 dan nilai dari SMOD.
Penentuan baud rate untuk mode 1 dan 3 adalah sebagai berikut:
Interupsi timer 1 harus disable pada aplikasi ini. Pada kebanyakan
aplikasi, timer ini dioperasikan sebagai timer, dengan mode auto
reload mode 2. Pada kasus ini baud rate diberikan dengan rumus
sebagai berikut:
91. Triwiyanto - Jurusan Teknik Elektromedik Baudrate untuk
Timer1 sebagai generator Baudrate Baud Rate Frekuensi Kristal SMOD
Nilai Isi Ulang TH1 Baud rate Aktual 9600 12 MHz 1 F9h 8923 2400 12
MHz 0 F3h 2400 1200 12 MHz 0 F6h 1202 -SMOD -- GF1 GF0 PD IDL PCON
- POWER CONTROL REGISTER NOTE: Baudrate untuk mode 2 bergantung
pada nilai bit SMOD pada register PCON. Jika SMOD=0, baudratenya
1/64 frekuensi oscilator, jika SMOD=1 maka baudratenya 1/32
frekuensi oscilator
92. Triwiyanto - Jurusan Teknik Elektromedik Percobaan 7.1
Rencanakan program untuk mengendalikan LED melalui port serial
communication Bahasa pemrograman: Delphi, Visual Basic, C dll File:
*.HEX
93. Triwiyanto - Jurusan Teknik Elektromedik { pemrograman
Delphi } procedure TForm1.Button1Click(Sender: TObject); var
data:byte; count:integer; begin data:=255-1 count:=1;
comport1.write(data,count); end; ; procedure
TForm1.Button2Click(Sender: TObject); var data:byte; count:integer;
begin data:=255-2 count:=1; comport1.write(data,count); end; ;
Program Assembly org 0h nop Gets: call initserial call inchar mov
P0,a sjmp gets ; Initserial:mov scon,#50h mov tmod,#20h mov
th1,#0F3h setb tr1 ret inchar: detect: jnb ri,detect ; clr ri mov
a,sbuf ret End
94. Triwiyanto - Jurusan Teknik Elektromedik Percobaan 7.2.
Rencanakan program untuk mengirimkan Data ADC melalui komunikasi
serial RS232 ke PC { Pemrograman Delphi } procedure
TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); var
buff:string;y:integer; begin comport1.ReadStr(buff,count);
y:=ord(buff[1]); edit1.text:=inttostr(y); end;
95. Triwiyanto - Jurusan Teknik Elektromedik Pemrograman
Assembly pada Mikrokontroller: call initserial ; start: call ADC
call Sendout sjmp start ; ADC: clr P3.3 nop nop setb P3.3 eoc: jb
P3.2,eoc clr P3.4 mov A,P1 setb P3.4 ret Sendout: detect: jnb
ti,detect clr ti mov sbuf,a ret ; initserial: mov scon,#52h mov
tmod,#20h mov th1,#0F3h; 2400 bps setb tr1 ret end
96. Triwiyanto - Jurusan Teknik Elektromedik 1. Rencanakan
program untuk komunikasi serial dengan data yang dikirim 3Bh, dalam
mode 1, dengan kecepatan 4800BPS, dan bit SMOD=1, tentukan a)Gambar
sinyal dalam format TTL, b) gambar sinyal dalam format RS232, c)
Hitung nilai TH1 bila xtall yang dipakai 11,0592 MHz. 2. Idem
dengan data yg dikirim 1Fh, kecepatan 9600, tentukan a) idem, b,
idem, c) idem dengan xtall 12MHz 3. Rencanakan program untuk
mengirimkan karakter 1, 2, dan 3 secara berturutan dari mikro ke PC
dengan kecepatan 4800, SMOD=1, xtall 11.0592 MHz, a) Tentukan TH1,
b) tentukan program untuk mengirim data2 tersebut 4. Rencanakan
program untuk menjumlahkan 3+4 dan hasilnya dikirim via serial ke
PC, dengan Baudrate 2400, Xtall: 11.0592 MHz a) Tentukan TH1, b)
tentukan program untuk mengirim data ke PC 5. Tentukan program
untuk mengambil data dari PC, yaitu karakter 1 dan 2 bila terdapat
karakter 1 maka semua LED akan OFF dan bila karakter 2 maka semua
LED akan ON ( LED terhubung ke P1 ), baudrate 1200, xtall: 12MHz,
a) tentukan TH1, b) tentukan program untuk ambil data
tersebut.
97. Triwiyanto - Jurusan Teknik Elektromedik 1. Rencanakan
sebuah sistem yang memanfaatkan TIMER, dengan menggunakan mode 2
pada TIMER0, berapakah data yang harus diloadkan ke TH0 bila
diinginkan overflow setiap 100uS, a. Bagaimanakah inisialisasi
sebagai fungsi TIMER b. bila terjadi overflow maka sebuah LED yang
terhubung ke P0.0 akan nyala, selain itu maka akan padam. 2.
Rencanakan sebuah sistem yang memanfaatkan COUNTER, dengan
menggunakan mode 2, pada TIMER1, data counter dioutputkan pada P0.
a. Bagaimanakah inisialisasi sebagai fungsi counter tersebut b.
Bagaimana instruksi untuk mendeteksi bila TL1>10 maka LED yang
terhubung ke P0 akan padam semua 3. Rencanakan sebuah interupsi
yang dibangkitkan oleh timer, pada mode 1 (13 bit), dengan kejadian
interupsi setiap 5000 us. a. Bagaimanakah inisialisasi sistem
interupsi tersebut b. Buatlah program bila terjadi interupsi maka
akan memproses 2+3 dan dikirim ke P0
98. Triwiyanto - Jurusan Teknik Elektromedik 1. Rencanakan
program untuk mendeteksi saklar SW1 dan SW2, yang masing2 terhubung
ke P2.0 dan P2.1, bila SW1 ditekan maka akan kirim karakter A via
serial, bila SW2 ditekan maka akan kirim karakter B via serial,
dengan BPS 4800, xtall 11,0592 MHz, SMOD=1, a) tentukan TH1, b)
tentukan program untuk deteksi dan kirim data. 2. Rencanakan
program idem, bila SW1 (P3.6) ditekan maka akan mengirimkan hasil
perkalian 5*7 via serial dan bila SW2(P3.7) ditekan maka akan
mengirimkan hasil pembagian 12/4 via serial dengan baudrate 2400,
xtall 11,0592 MHZ, SMOD=1, a) tentukan TH1, b) tentukan program
untuk deteksi dan kirim data Soal Latihan
99. Triwiyanto - Jurusan Teknik Elektromedik 3. Rencakan
program untuk mendeteksi interupsi eksternal transisi, pada INT1,
bila terjadi interupsi maka akan mengirim sebuah karakter A dan B
secara berturutan, via komunikasi serial. Dengan keterangan, BPS
1200, xtall 12MHz, SMOD=1, a) tentukan program untuk inisialisasi
interupsi external b) tentukan program keseluruhan ( bila sudah
diketahui subrutin: sendCHAR, InitSerial) 4. Rencanakan program
untuk menangkap interupsi TIMER 0 mode 16 bit, sebagai TIMER, bila
terjadi OverFlow setiap 50.000 us maka program akan mengirimkan
data karakter A via serial dan sebaliknya bila tidak terjadi
interupsi maka program terus menerus akan mengirimkan karakter B
via serial. (BPS: 4800, xtall 12MHz, SMOD=1) a) tentukan program
inisialisasi TIMER0 mode 16 bit b) tentukan program keseluruhan (
bila sudah diketahui subrutine: sendCHAR, dan InitSerial.
100. Triwiyanto - Jurusan Teknik Elektromedik 1. Rencanakan
rangkaian power On Reset, dan jelaskan cara kerjanya v 2.
Rencanakan program untuk mengisi data 05h ke R0 v 3. Rencanakan
program untuk mengisi data 50h ke R1 bank 1 v 4. Rencanakan program
untuk mengisi data 11d ke alamat 30h v 5. Rencanakan program untuk
mengisi data 30h ke alamat R7 bank 2 dan copykan ke R0 bank 2 v 6.
Rencanakan program untuk mengisi data 40h ke alamat R3 bank 3 dan
copykan ke R2 bank 3 7. Rencanakan program untuk mengisi data 23d
ke alamat 30h dan copykan ke alamat 40h 8. Rencanakan program untuk
mengisi data 45h ke akumulator, dan copykan ke R0 bank 1
101. Triwiyanto - Jurusan Teknik Elektromedik TERIMAKASIH A K H
I R N Y A Email : [email protected] Yahoo messanger :
[email protected] Telp : 08155126883, 03177406013