Microcontroller 8051
Microcontroller 8051
APAKAH MIKROKONTROLLER ?
uC :sebuah komputer didalam chip untuk mengontrol peralatan elektronik
uC
Device Programmer
Sebuah device memerlukan komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya terpusat serta dikendalikan oleh mikrokontroler ini
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.
Triwiyanto - Jurusan Teknik Elektromedik
BAGAIMANA CARANYA?
Desain Program Assembly (MIDE-51)
Org 0h mov A,10000000b mov P0,A end
Compile (MIDE-51)
0001110101 0101010101 0101010101 0101010101
Test
PROGRAM
01000101001 01111000100 01001010100 00111101010
BELAJAR MIKROKONTROLLER ?
SOFTWARE, BHS. ASSEMBLY-> 60 %
HARDWARE, ARSITEKTUR -> 40 %
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
Triwiyanto - Jurusan Teknik Elektromedik
Introduction
General-purpose microprocessor
CPU for Computers No RAM, ROM, I/O on CPU chip itself Example: Intels x86, Motorolas 680x0
CPU GeneralPurpose Microprocessor
Data Bus
RAM
Address Bus
Microcontroller :
A smaller computer On-chip RAM, ROM, I/O ports... Example: Motorolas 6811, Intels 8051, Zilogs Z8 and PIC 16X
CPU
RAM
ROM
A single chip
Microcontroller
Microcontroller CPU, RAM, ROM, I/O and timer are all on a single chip fix amount of on-chip ROM, RAM, I/O ports for applications in which cost, power and space are critical single-purpose
1. ARSITEKTUR
1.1. Diagram blok
External interrupts Interrupt Control On-chip Flash ROM
Timer/Counter
On-chip RAM
Timer 1 Timer 0
Counter Inputs
CPU
Serial Port
OSC
Bus Control
4 I/O Ports
P0 P1 P2 P3
TxD RxD
Address/Data
Triwiyanto - Jurusan Teknik Elektromedik
1 6 Ext
1 6 Parallel
1 6 Serial/ ISP
8k
0FFFH
AT89C52 AT89S52
ALE
00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
0 80 H 7F H
P2
/EA
80 H
/RD
/WR
D7
D6
D5
D4
D3
D2
D1
D0
Sebuah register dapat menyimpan bilangan dari 0 s/d 255 (bilangan positif, tanpa nilai negatif), atau bilangan dari -128 s/d +127 (dengan bit tanda di bit 7), atau suatu nilai yang mewakili suatu kode karakter ASCII ( contoh A).
Port
What is a Port? Port adalah gerbang dari CPU ke internal dan ekstenal hardware. CPU berkomunikasi dengan Port ini, membaca dari atau menulis ke port.
Port mempunyai address tertentu, untuk berkomunikasi dengan CPU, alamat-alamat dari port tidak tergantung dari tipe mikrokontroller pada keluarga MCS-51. Contoh alamat port P0 adalah selalu 80h. Anda tidak perlu mengingat alamat port ini.
BASIS BILANGAN
Desimal (BASIS 10) Hexa (BASIS 16) Biner 8 BIT (BASIS 2) ASCHII (CODE)
0
1 2 3 :
00
01 02 03 :
0000 0000
0000 0001 0000 0010 0000 0011 :
30
31 32 33 :
9
10 11 12 13 14 15
9
A B C D E F
0000 1001
0000 1010 0000 1011 0000 1100 0000 1101 0000 1110 0000 1111
39
-
16
17 18 19 :
10
11 12 13 :
0000 0000
0000 0001 0000 0010 0000 0011 :
25
26 27 28 29 30 31
19
1A 1B 1C 1D 1E 1F
0001 1001
0001 1010 0001 1011 0001 1100 0001 1101 0001 1110 0001 1111
2
64
2
32
2
16
2
8
2
4
2 2
2 1
128
Contoh: Konversikan bilangan desimal 56 ke biner dan hexa Solusi: 56 d = terdiri dari penjumlahan (32+16+8) = bilangan biner, 00111000 b
Untuk konversi ke hexa, pecah bilangan tersebut menjadi 4 bit: 0011 1000b Dan terjemahkan masing-masing biner 4 bit tersebut ke hexa
= bilangan hexa, 38 h
Triwiyanto - Jurusan Teknik Elektromedik
REGISTER PSW
CY AC FO RS1 RS0 OV P
98 H SCON 90 H P1
88 H TCON TMOD 80 H P0 7F H SP
TL0 DPL
TL1 DPH
TH0
TH1 PCON
8F H 87 H
Carry flag Auxilarry carry flag General purpose Register Bank Select Register Bank Select Over Flow General purpose Parity
CY AC F0 RS1 RS0 OV P
RAM SERBAGUNA
30 H 2F H
RS1 0
R6 1EH R6 16H R6 OEH R6 O6H R7 1FH R7 17H R7 OFH R7 O7H BANK 3
RS0 0 1 0 1
Bank 0 1 2 3
BIT-ADDRESSABLE SPACE
20 H RO 18H RO 1OH RO O8H RO OOH R1 19H R1 11H R1 O9H R1 O1H R2 1AH R2 12H R2 OAH R2 O2H R3 1BH R3 13H R3 OBH R3 O3H R4 1CH R4 14H R4 OCH R4 O4H R5 1DH R5 15H R5 ODH R5 O5H
0 1 1
BANK 2 BANK 1
BANK 0
8951
ROM EKSTERNAL
org 0h nop start: mov a,p3 mov p1,a sjmp start end
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
Triwiyanto - Jurusan Teknik Elektromedik
1000 H
/EA
XTAL1
GND
19
31
10 uFC:\WINDOWS\hinhem.scr 30 pF
EA/VPP X1
X2 RST 9 8.2 K
2. Set Instruction
2.1. Instruksi copy data
MOV dest, source ; dest = source
MOV A,#72H ;A=72H MOV A, #r ;A=r OR 72H MOV R4,#62H ;R4=62H MOV B,0F9H ;B=the content of F9th byte of RAM MOV DPTR,#7634H ;DPTR=7634 MOV P1,A ;mov A to port 1 Note 1: MOV A,#72H MOV A,72H After instruction MOV A,72H the content of 72th byte of RAM will replace in Accumulator. Note 2: MOV A,R3 MOV A,3
Triwiyanto - Jurusan Teknik Elektromedik
Contoh 1 :
Start: org 0h mov PSW,#00000000B ; select register bank 0 mov R0,#5 ; simpan data 5 ke R0 mov R1,#7 ; simpan data 7 ke R1 mov R2,#8 ; simpan data 8 ke R2 ; mov PSW,#00001000B ;select register bank 2 mov R0,#0Ah ; simpan data Ah ke R0 mov R1,#9 ; simpan data 9 ke R1 mov R2,#01Bh ; simpan data 1bh ke R2 end Start: org 0h mov 00h,#5 mov 01h,#7 mov 02h,#8 ; mov 10h,#0Ah mov 11h,#9 mov 12h,#01Bh end
OR
Contoh 2:
Start:
Org 0h setb 20h.1 ; setting bit=1, 00000010 pada address 20h setb 27h.7 ; setting bit=1, 10000000 pada address 27h clr 2Ah.5 ; setting bit =0, 11011111 pada address 2Ah end Org 0h mov 0E0h,#00000001b mov 90h,0E0h end
Contoh 3:
Start: Org 0h mov A,#00000001b mov P1,A end Start:
OR
SETB CLR
SETB SETB SETB SETB SETB C P0.0 P3.7 ACC.2 05
bit bit
; bit=1 ; bit=0
; CY=1 ;bit 0 from port 0 =1 ;bit 7 from port 3 =1 ;bit 2 from ACCUMULATOR =1 ;set high D5 of RAM loc. 20h
Note: CLR instruction is as same as SETB i.e: CLR C ;CY=0 But following instruction is only for CLR: CLR A ;A=0
Example:
MOV ADD A,#88H A,#93H 10001000 +10010011 -------------00011011 P=0
Example:
MOV ADD A,#9CH A,#64H 10011100 +01100100 -------------00000000 P=0
Example:
MOV ADD A,#38H A,#2FH 00111000 +00101111 -------------01100111 P=1
Note: 1. Flag C is set if the sum exceeds FFh and cleared otherwise 2. Flag AC is set if there is a carry from low nibble to the high nible that is from bit 3 to bit 4, and cleared otherwise 3. Flag P is set if 0 or 1 bit count is odd
Add A,<byte>
Addc A,<byte> Subb A,<byte> Inc A
A=A+<byte>
A=A+<byte>+C A=A-<byte>-C A=A+1
V
V V
V
V V
V
V V
V
V V
1
1 1 1
Accumulator Only
Inc <byte>
Inc DPTR Dec A Dec <byte> Mul AB Div AB DA A
<byt>=<byt>+1
DPTR=DPTR+1 A=A-1 <byt>=<byt>-1 B:A=BxA A=Int[A/B] B=Mod[A/B] Dec Adjust
1
2 1 1 4 4 1
Data Pointer Only Accumulator Only V V V Accumulator and B Only Accumulator and B only Accumulator Only
Example:
RL A
D7 Contoh:
START: PUTAR: ORG 0H MOV A,#00000001B RL A SJMP PUTAR END
;rotate left A
D6 D5 D4 D3 D2 D1 D0
RLC A
CY Contoh:
START: PUTAR:
C=1
Exect. uS 1 1 1 1
Accumulator Only
Orl <byte>,A
Orl <byte>,#data Xrl A,<byte>
<byt>=<byt>orl A
<byte>=<byte> or #data A=A xor<byte>
1
2 1
Xrl<byte>,A
Xrl <byte>,#data CLR A CPL A
<byt>=<byt>xor A
<byte>=<byte>xor #data A=00h A= not A
1
4 1 1
RL A
RLC A RR A RRC SWAP A
Accumulator only
Accumulator only Accumulator only Accumulator only Accumulator only
1
1 1 1 1
MOV 0E0H, #66H ; MOV A,#66H MOV 0F0H, R2 ; MOV B, R2 MOV 80H,A ; MOV P1,A
Triwiyanto - Jurusan Teknik Elektromedik
A,@Ri
@R1,B
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
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.
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.
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
2.4. LOOP and JUMP Instructions 2.4.1. DJNZ ( Decrement & Jump if Not Zero )
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
AKHIRNYA
TANKS ALOT TRIMAKASIH MATUR SUWON
ILL SEE YOU SOON, IN THE NEXT SEMESTER, TO ROCK AND ROLL AND HAVING FUN
DJNZ
CJNE A,byte,lompat1
CJNE reg,#data,lompat1
JC JNC JB JNB JBC
Jump if byte/=#data
Jump if CY=1 Jump if CY=0 Jump if bit=1 Jump if bit=0 Jump if bit=1 and clear bit
Triwiyanto - Jurusan Teknik Elektromedik
Port
8751 8951
Function
RxD TxD INT0 INT1 T0 T1 WR RD
Pin
10 11 12 13 14 15 16 17
Operand
0H A,#10001000b P0,A
Comment
;StartROM ; fill A = 10001000b ;copy A to P0
Desain Program Assembly (MIDE-51) Org 0h mov A,10000000b mov P0,A end
Compile (MIDE-51)
TEST
PROGRAM
01000101001 01111000100 01001010100 00111101010
Start:
Org 0h ;Starting ROM 0h Mov P0, #00000001;Send 1 to P0.0 end ;LED OFF Org 0h Mov P0, #00000000; Send 0 to P0.0 end ; LED ON
1 2 3 P1.0 P1.1 P1.2 VCC P0.0 P0.1 40 39 38
Start:
Start:
; Send 1 to P0.0
/EA 18 XTAL2 XTAL1 GND P2.1 P2.0 22 21 31
Start:
19 20
LCD CHARACTER 2 X 16
D0-D7
1 2 3 16
RS ( Register Select ) RS = 0 Command register RS = 1 Data Register R/W ( Read/ Write ) R/W= 0 Write R/W = 1 Read EN ( Enable ) Used to latch the data present on the data pins. A high-to-low edge is needed to latch the data. D0 D7 Bi-directional data/command pins. Alphanumeric characters are sent in ASCII format
P0.0 - P0.7
A 1 4
P3.6 P3.7 RS EN R/W
0 7
16
g L
1 2
2
3 4 5 6 7-14 15 16
Vcc
Vee RS R/W E DB0 BPL GND RS
Vee
Vcc Vss
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 ) Entry Mode Set
RS R/W
0 0
DB7
0
DB6
0
DB5
0
DB4
0
DB3
0
DB2
1
DB1
I/D
DB0
S
I/D : Set increment/ decrement ( 1= increment, 0= decrement ) S : Display Sift ( 1=on, 0=off ) Display On/ Off Control
RS 0 R/W 0 DB7 0 DB6 0 DB5 0 DB4 0 DB3 1 DB2 D DB1 C DB0 B
D : display On ( 1= display on) B : Cursor blink ( 1= blink on,0=blink off ) C : Cursor display (1=cursor on, 0=cursor off)
Triwiyanto - Jurusan Teknik Elektromedik
0
1 1
1
0 1
Clear Display
RS 0 R/W 0 DB7 0 DB6 0 DB5 0 DB4 0 DB3 0 DB2 0 DB1 0 DB0 1
01
41
02
42
03
43
04
44
05
45
06
46
07
47
08
48
09
49
0A 0B 0C 0D 0E 0F
4A 4B 4C 4D 4E 4F
.
.
Write_inst: clr P3.6 mov P0,R1 setb P3.7 call delay clr P3.7 ret ; Write_data: setb P3.6 mov P0,R1 setb P3.7 call delay clr p3.7 ret end ; P3.6 = RS =1 ; copy R1 ke P0 ; P3.7 =EN = 1 ; call delay time ; P3.7 =EN = 0 ; P3.6 = RS =0 ; copy R1 ke P0 ; P3.7 =EN = 1 ; call delay time ; P3.7 =EN = 0
Watch out !, you may miss my overflow every 10s. If you get sleep
Think smart, you must load data : 16-10 = 6 or 0110 b on me What a number to be loaded to my register, so I can get pulse out every 10 s on Co
If you loaded, TL1 =00 TH1 =00, then you, need 65536 pulse. To Get overflow on my TF1
Triwiyanto - Jurusan Teknik Elektromedik
If my periode input clock is 1 u Then I wil interupt you, after 1 uS x 65536 = 0.065536 s
0B1h 0E0h 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
89C51
0 = S1 keatas 1 = S1 kebawah XTALL/ 12 0 = S2 buka 1 = S2 tutup
S1
S2 TMOD
TL1
TH1
Timer1
T1/ P3.5
Timer 0
G C/T M1 M0 G C/T M1 M0
Dont get sleep, If you dont want miss my overflow, test me by Software !
INT1/ P3.3
TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Limpahan Timer/ Counter
TMOD REGISTER
Gate C/T M1 M0 Gate C/T M1 M0
TIMER 1
TIMER 0
M1 0 0 1
M0 0 1 0
OPERATING
Mode 0: 13 bit Timer/ Counter Mode 1: 16 bit Timer/ Counter Mode 2: 8 bit auto reload Timer/ Counter. THx menerima data yang akan direload ke TLx setiap kali TLx overflow Mode 3: 8 bit Timer/ Counter by TL0. TH0 merupakan 8 bit Timer yang dikontrol dari Timer 1
Triwiyanto - Jurusan Teknik Elektromedik
TIMER 0
TIMER 1
FUNCTION
TIMER 0
Timer 1 overflow flag. Set by harware on timer/counter overflow. Clear by hardware when processor vectors to interupt routine, or clearing by software Timer 1 run control bit. Set/cleared by software to turn timer/counter on/off Idem timer 0 Idem timer 0 Interupt 1 Edge flag, set by harware when external interrupt edge detected. Cleared when interupt processed Interrupt 1 type control bit. Set/ Cleared by software to specify falling edge/ low level triggered external interupt Idem timer 0 Idem timer 0
Triwiyanto - Jurusan Teknik Elektromedik
89C51
TH1
Please load a number to my register ( TL1, TH1) tobe counted, by MOV TH1,#0D8h MOV TL1,#0EFh
P1.0
0 = S2 buka 1 = S2 tutup
S1 TMOD 0 0 0 1 0 0 0
S2
TL1
COUNTER 16 BIT 0
T1/ P3.5
Dont move From your seat keep spy on me, Maybe I get Over flow
TR1
TF1
OSCILOSCOPE
Read my Frequency !
Triwiyanto - Jurusan Teknik Elektromedik
Contoh Soal
1. Sebuah led dihubungkan pada P0.7 melalui sebuah resistor, dengan katoda terhubung ke ground.Rencanakan program assembly untuk membuat subrutine waktu tunda, agar led dapat berkedip dengan Ton=0.5 detik dan Toff=0.5 detik. Gunakan Timer1 mode 13 bit. Idem. Rencanakan program assembly untuk membuat subrutine waktu tunda, agar LED dapat berkedip dengan Ton=2 detik dan Toff=1 detik. Gunakan Timer1 mode 16 bit.
2.
Contoh Soal 2
1. Sebuah pin P0.7 digunakan sebagai pembangkit osilasi. Rencanakan program assembly untuk membuat subrutine waktu tunda, agar dapat dibangkitkan clock dengan Ton=0.05 detik dan Toff=0.05 detik. Gunakan Timer1 mode 2. Idem. Ton=0.02 detik dan Toff=0.04 detik. Gunakan Timer0 mode 2.
2.
89C51
0 = S2 buka 1 = S2 tutup COUNTER 16 BIT
S1 TMOD 0 0 1 0 0 0 0
S2
TL1( 8 BIT )
LATCH
See, my job is very important, P1.0 to reload the data TH1 to TL1 register when overflows
TR1
TF1
Get rock and Look, my con- roll by fuguration as SETB TR1 timer mode 2, now
OSCILOSCOPE
89C51
TL1 TF1
Watch out !, dont get sleep till you Catch me, if In logic 1. Its Mean I am in Overflow
S1 TMOD 0 1 1 1 0 0 0
S2
COUNTER 8 BIT 0
T1/ P3.5
1
INT1/ P3.3
Look at to my pin, I am so useless. Because The gate on TMOD= 0 When do I can get action?
Well, to start the all system as a counter/timer Set on me by software: SETB TR1
Triwiyanto - Jurusan Teknik Elektromedik
06.00 SARAPAN
07.00 KULIAH
22.00 TIDUR
INTR
19.00 BELAJAR
Triwiyanto - Jurusan Teknik Elektromedik
18.00 MAIN
INTERUPSI MIKROKONTROLLER
EA
BIT IE.7
X
SYMBOL EA
ES
ET1
EX1
ET0
EX0
FUNCTION
Disables all interrupts.If EA=0, no interrupt will be acknoledged. If EA=1,each interrupt source is individually enabled/ dis.by software
Reserved Reserved Enables or dis. the serial port interrupt, if ES=0, disabled Enables or dis. the timer 1 overflow interrupt, if ET1=0, disabled Enables or dis. External interrupt 1.If EX1=0, disabled Enables or dis. the timer 0 overflow interrupt, if ET0=0, disabled Enables or dis. External interrupt 0.If EX0=0, disabled
Triwiyanto - Jurusan Teknik Elektromedik
ES ET1
IE.2 IE.1
EX1 ET0
IE.0
EX0
TIMER 0
FUNCTION Timer 1 overflow flag. Set by harware on timer/counter overflow. Clear by hardware when processor vectors to interupt routine, or clearing by software Timer 1 run control bit. Set/cleared by software to turn timer/counter on/off Idem timer 0 Idem timer 0 Interupt 1 Edge flag, set by harware when external interrupt edge detected. Cleared when interupt processed Interrupt 1 type control bit. Set/ Cleared by software to specify falling edge/ low level triggered external interupt Idem Interupt 0 Idem Interupt 0
Triwiyanto - Jurusan Teknik Elektromedik
ALAMAT INTERUPSI
Source
IE0 TF0 IE1 TF1 RI + TI
Triwiyanto - Jurusan Teknik Elektromedik
Vector Address
0003H 000BH 0013H 001BH 0023H
STRUKTUR PROGRAM
Org 0000h Ljmp Start Org 000bh Ljmp Timer0Interupt Start: ; Instruksi Rutinitas A ; Instruksi Rutinitas B ; Instruksi Rutinitas C Sjmp Start; { Looping Forever } ; Timer0Interupt:
; Instruksi ; Instruksi
Reti End
Triwiyanto - Jurusan Teknik Elektromedik
Interupsi Timer
1. Dengan memanfaatkan interupsi TF0 yang dibangkitkan setiap 10.000us, maka lakukan increment data pada Accumulator dan outputkan ke LED setiap 2 detik. 2. Dengan memanfaatkan interupsi TF1 yang dibangkitkan setiap 20.000us, maka lakukan decrement data pada Accumulator dan outputkan ke 7 Segmen setiap 1 detik, dengan nilai awal 60. 3. Buatlah jam digital bagian detik yang menghitung mulai dari 00 s/d 99 detik, dengan interupsi yang dibangkitkan dari TF0 dengan waktu interupsi 8.000us dengan mode 0 timer 13 bit.
Org 0h Sjmp start Org 03h ljmp AdaIntExt0 ; Start: call InitIntExt0 InitIntExt0: setb IT0 Forever:clr P0.0 setb EX0 sjmp Forever setb EA ret
Triwiyanto - Jurusan Teknik Elektromedik
2.
INT1 P0.7
Rencanakan program untuk membunyikan buzer, dengan menggunakan interupsi eksternal 1, pada saat level logika high dengan syarat sbb: 1. Jika tidak ada interupsi transisi negatif, mikrokontroller memerintahkan buzer untuk berhenti berbunyi. 2. Jika ada interupsi transisi negatif, maka mikrokontroller akan memerintahkan buzer untuk berbunyi.
InitInterupsi:
Start:
; InterupsiTF0:
; Hang:
; InitTimer0: mov TMOD,#..... mov TL0,#...... mov TH0,#..... setb TR0 ret
call InitTimer0 djnz R7, EndInterupsiTF0 RL A mov R7,#...... EndInterupsiTF0: reti ; end
2. Rencanakan program untuk menghidupkan LED yang terhubung ke P0.0 selama satu detik, dan mematikan LED tersebut selama satu detik juga. Gunakan interupsi timer 1 dan counter 1 dengan mode 13 bit. 3. Rencanakan program untuk increment data output ke LED yang terhubung ke P0 ( 0 s/d 255 ) setiap 1 detik. Gunakan interupsi timer 0 dan counter 0 dengan mode 16 bit.
X
BIT
IP.7 IP.6 IP.5 IP.4
X
SYMBOL
PS
PS
PT1
PX1
PT0
PX0
FUNCTION
Reserved Reserved Reserved Defines the serial port interrupt. PS=1 programs it to the higher priority
IP.3
IP.2
PT1
PX1
IP.1
IP.0
PT0
PX0
Soal-soal latihan
1. Rencanakan program untuk menghitung pulsa yang diinputkan pada T0 dan data hasil cacahan dioutputkan pada P0 dengan konfigurasi sebagai counter 8 bit. Catatan: Manfaatkan input pada INT0 untuk membekukan proses pencacahan melalui saklar push button, bila saklar ditekan pencacahan akan terjadi, bila saklar dilepas maka pencacahan tidak terjadi. 2. Idem, sebagai counter 13 bit input pada T1, input eksternal pada INT1. dengan output pada P0 ( 8 bit ) dan P1 (5 bit) 3. Rencanakan program untuk membangkitkan waktu tunda 0,5 detik sehingga led akan tampak berkedip ( bila led dihubungkan pada P2.0 ), bila timer yang digunakan adalah TIMER 1 13 bit dan bila interupsi yang dibangkitkan adalah setiap 8000 udetik 4. Rencanakan program untuk mendeteksi interupsi level logika pada INT1. dengan output display ke seven segmen common anoda yang terhubung ke P0.0 s/d P0.6 dan driver transistor PNP terhubung ke P2.0. Catatan, bila ada interupsi maka pada display akan keluar angka 1 dan bila tidak ada interupsi maka akan keluar angka 0. 5. Idem pada INT0, dengan output ke Buzer yang terhubung ke P0.0 dan LED yang terhubung ke P0.1. Catatan bila ada interupsi maka Buzer akan berbunyi dan LED nyala, bila tidak ada interupsi maka Buzer akan mati dan LED off.
Triwiyanto - Jurusan Teknik Elektromedik
CLOCK
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 )
110
5000
Triwiyanto - Jurusan Teknik Elektromedik
1000
Standart RS232
RS232 LEVEL
RS232
T1OUT RD(2) TD(3) GND (5) R1IN GND R1OUT T1IN
Start
2400 kbps
Triwiyanto - Jurusan Teknik Elektromedik
Stop
Port Serial PC
Pin
1
Assignment
DCD
Description
Data carrier detect
2 3
4
RXD TXD
DTR
5
6
GND
DSR RTS
Signal ground
Data set ready Request to send
8
9
CTS
RI
Clear to send
Ring indicator
16
VCC
MAX232
R1OUT R2OUT T1OUT T2OUT 12 9 14 7
PC DB9 Male
1 6 2 7 3 8 4 9 5 P1
10u
+
13 8 11 10 1 3 4 5 2 6
10u
+
10u
+
10u
15
R2OUT
R2IN
15
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
Triwiyanto - Jurusan Teknik Elektromedik
SCON - SERIAL PORT CONTROL REGISTER SM0 SM0 0 0 1 1 SM1 SM1 0 1 0 1 SM2 MODE 0 1 2 3 REN TB8 RB8 TI Baudrate TETAP (fosc/12) VARIABEL TETAP (fosc/32 dan fosc/64) VARIABEL RI
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. Enables serial reception. Set by software to enable reception. Clear by software to disable reception. The 9th data bit that will be transmitted in Modes 2 and 3. Set or clear by software as desired. 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 RI
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. 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.
Triwiyanto - Jurusan Teknik Elektromedik
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:
GF1
GF0
PD
IDL
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
9600
2400 1200
12 MHz
12 MHz 12 MHz
1
0 0
Triwiyanto - Jurusan Teknik Elektromedik
F9h
F3h F6h
8923
2400 1202
Kirim Data ke PC
3 cables
MAX232
T1OUT R1IN GND R1OUT T1IN
TestTi:
MAX232 +5V
T1OUT R1IN GND R1OUT T1IN
RXD TXD
OS anda WINXP
Tambahkan komponen ComPort !. Download saja!
What do you like ? pooling by waiting the sequence, or interupting as you like Look, my job is very Important, to decide Using the interupt or not Choose by soft. What kind interupt Do you like
To detect transition, or logic level
0= 1=
SW UP SW DOWN
RxD/ P3.0
UART
INT0/ P3.2
TxD/ P3.1
INT1/ P3.3