MK : Mikroprosesor
Register tsb adalah TMOD, TCON, TH1, TL1, TH0 dan TL0. Sebelum digunakan, Timer/Counter tsb
harus di-setting melalui pengisian TMOD dengan angka biner tertentu. Setting timer melalui Register
TMOD telah dijelaskan pada modul sebelum ini.
Register TCON berisi bit-bit kendali untuk mengatur kerja Timer/Counter, sedangkan
pasangan register THx dan TLx adalah container pulsa atau jam pasir untuk menampung pulsa, bukan
pasir. Berikut ini salah gambar register TCON.
TCON: TIMER/COUNTER CONTROL REGISTER. BIT ADDRESSABLE.
TR1
TF0
TR0
IE1
IT1
IE0
TF1
IT0
11
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
MK : Mikroprosesor
Contoh 6.1. Pengendali Motor Stepper Jarak Jauh via saluran telepon.
Berikut ini adalah contoh lain penggunaan Timer dalam program penggerak motor stepper.
Misalnya kita menggunakan prosesor 8051 untuk menggerakkan motor stepper 4-bit berdasarkan nada
yang diterima dari saluran telepon oleh DTMF. Jika angka yang ditekan adalah angka 1, maka
DTMF akan menerima nada tertentu kemudian menghasilkan output biner 4-bit 0001. Setelah
prosesor mengambil data 0001 dari DTMF, motor stepper akan digerakkan ke kiri sampai tombol
angka 1 dilepas. Cara seperti ini dapat digunakan untuk menggerakkan motor stepper dari jarak jauh
melalui saluran telepon.
Secara garis besar, kerja alat yang kita inginkan adalah sebagai berikut. Motor stepper
dikendalikan oleh prosesor yang terhubung dengan saluran telepon melalui DTMF decoder. Prosesor
juga dilengkapi dengan ring detektor, yaitu alat pendeteksi keberadaan sinyal dering. Jika nomor
telepon tempat prosesor diletakkan dihubungi oleh nomor telepon lain, maka prosesor harus dapat
membedakan kondisi sinyal pada saluran telepon antara ada dengan tidak ada sinyal dering, yaitu
dengan bantuan ring detektor. Jika ada sinyal dering, maka ring detektor akan memberi informasi
HIGH ke prosesor, dan sebaliknya.
Setelah prosesor mendeteksi adanya sinyal dering, maka prosesor menghubungkan DTMF
dengan saluran telepon melalui sebuah saklar elektro mekanik. Setelah itu prosesor mendengarkan
nada yang masuk dengan bantuan DTMF decoder. Jika kemudian penelepon memutuskan saluran
telepon dengan meletakkan gagang telepon, maka akan muncul nada putus-putus pada saluran
telepon. Dalam PBX, jika sentral PBX mendeteksi pemutusan pembicaraan atau komunikasi dari sisi
penelepon, maka ia akan mengirimkan nada tertentu ke sisi penerima telepon, nada ini adalah nada
D. Seperti tampak pada tabel 6.1, nada ini akan menyebabkan decoder DTMF mengeluarkan kode
biner tertentu, yaitu 4-bit biner 0000. Jika prosesor menerima kode biner ini, maka saluran telepon
akan diputuskan dari DTMF decoder, kemudian prosesor kembali ke posisi menunggu sinyal dering.
Setelah saluran telepon terhubung dengan DTMF decoder, sebelum prosesor menggerakkan
motor stepper, prosesor mengambil 3 digit angka yang datang berurutan yang diterimanya dari DTMF.
Tiga digit angka ini akan dibandingkan dengan password, jika berbeda, maka saluran telepon akan
diputus dan prosesor kembali ke posisi menunggu sinyal dering. Tetapi jika 3-digit tersebut sama
dengan password, maka prosesor akan menunggu angka berikutnya untuk menentukan gerakan motor
stepper. Jika yang diterima prosesor adalah nada 4, maka motor stepper akan digerakkan ke kiri
terus-menerus dengan kecepatan 20 step per detik, setara dengan 36 per detik. Motor berhenti
bergerak setelah penelepon melepaskan tombol 4 tersebut. Nada 6 menyebabkan gerakan serupa
tetapi dengan arah berlawanan, yaitu ke arah kanan terus-menerus. Nada 1 untuk menggerakkan
motor 1-step ke kiri berapa pun lamanya tombol ini ditekan, jika penelepon menginginkan gerakan 2-
11
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
MK : Mikroprosesor
step, maka ia harus menekan angka 1 dua kali. Sedangkan Nada 3 menyebabkan gerakan motor 1step ke kanan.
Penekanan tombol 7 menyebabkan motor stepper bergerak ke kiri tanpa henti, sampai terjadi
penekanan tombol berikutnya. Tombol 9 menyebabkan gerakan yang mirip dengan tombol 7 tetapi
dengan arah berlawanan, yaitu ke kanan. Gambar 6.1. memperlihatkan letak angka pada keypad
pesawat telepon untuk memudahkan mengingat akibatnya terhadap gerakan motor stepper.
Gambar 6.1. Kaitan antara tombol angka dengan nada yang dihasilkan.
saluran telepon
DTMF decoder
ring detektor
Prosesor 8051
motor driver
motor stepper
11
Motor stepper.
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
MK : Mikroprosesor
11
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
MK : Mikroprosesor
beralih ke posisi putus. Sambung dan putusnya saklar mekanik ini menentukan sambung dan putusnya
saluran telepon dengan DTMF decoder. Input Relay Driver ini dihubungkan dengan P2.7 pada
prosesor 8051.
D2
IN4001
Phone
Line
NO
Coil
VCC
Relay
P2.7
Q1
9013
R3
1k
R4
1,2 k
LED1
11
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
MK : Mikroprosesor
11
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
MK : Mikroprosesor
fHIGH
KEY
TOE
Q4
Q3
Q2
Q1
697
1209
697
1336
697
1477
770
1209
770
1336
770
1477
852
1209
852
1336
852
1477
941
1209
941
1336
941
1477
697
1633
770
1633
852
1633
941
1633
ANY
Gambar 6.6. Skema rangkaian pengganti untuk sebuah stepper motor 4-bit.
11
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
MK : Mikroprosesor
Empat saklar S1, S2, S3 dan S4 pada gambar 6.6. dapat diwakili dengan saklar elektrik yang
berupa transistor Q1, Q2, Q3 dan Q4 seperti tampak pada gambar 6.7. di bawah ini. Input rangkaian
yang diberi notasi 1a, 1b, 2a dan 2b masing-masing dihubungkan dengan pin P0.0, P0.1, P0.2 dan
P0.3 pada prosesor 8051. Resistor pada rangkaian ini digunakan sebagai pembatas arus, sedangkan
dioda D1, D2, D3 dan D4 berfungsi untuk melindungi transistor dari tegangan lebih yang berasal dari
perubahan arus pada gulungan motor.
11
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
MK : Mikroprosesor
VCC
C8
33 pF
1
2
3
4
5
6
7
8
13
12
15
14
31
X2
12 M Hz
19
18
9
17
16
33 pF
C9
P10
P11
P12
P13
P14
P15
P16
P17
P00
P01
P02
P03
P04
P05
P06
P07
INT1
INT0
P20
P21
P22
P23
P24
P25
P26
P27
T1
T0
EA/VP
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
21
22
23
24
25
26
27
28
X1
X2
RESET
RXD
TXD
ALE/P
PSEN
RD
W
R
U3
11
39
38
37
36
35
34
33
32
10
11
30
29
Ke Driver Motor
Stepper
Ke Relay
Driver
MK : Mikroprosesor
Secara garis besar, program pengendali kerja prosesor harus mampu melakukan hal-hal berikut,
yaitu :
a. Memantau keberadaan sinyal dering
b. Membaca dan menguji password.
c. Memantau nada penggerak motor.
d. Menggerakkan stepper motor.
e. Memutus atau menyambung saluran telepon dengan DTMF
Berkaitan dengan tekanan tombol pada telepon di seberang prosesor, respon yang kita inginkan adalah
sebagai berikut :
1. Jika angka 1 ditekan, maka prosesor akan menggerakkan motor stepper ke kiri terus menerus
dengan kecepatan 20 step/detik, sampai tombol dilepas. Dalam listing program, proses ini diberi
label seretkiri.
2. Jika angka 4 ditekan, maka prosesor akan menggerakkan motor 1 step atau 1,8 ke kiri. Sama
saja menekan sebentar atau menekan lama, yang jelas 1 kali tekan satu step. Dalam listing
program, proses ini diberi label stepkiri.
3. Jika angka 7 ditekan, maka prosesor akan menggerakkan motor stepper ke kiri terus menerus
dengan kecepatan 20 step/detik, sampai ada tombol lain ditekan. Dalam listing program, proses
ini diberi label kiriterus.
4. Tombol 3, 6 dan 9 bekerja berlawanan arah dengan tombol 1, 4 dan 7, tetapi dengan cara bergerak
yang sama, yaitu seret, step dan terus-menerus.
11
10
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
MK : Mikroprosesor
start
inisialisasi
timer, motor,
koneksi DTMF
Ambil Digit
berikutnya
dari DTMF
tidak ada
tunggu
dering
Angka '1'
?
putuskan
sambungan
ya
ya
ya
ya
ya
ya
bukan
ada
Angka '3'
?
sambungkan
saluran dengan
DTMF
bukan
Angka '4'
?
StD LOW
bukan
Angka '6'
?
StD
HIGH
periksa
digit 1
bukan
tidak
cocok
Angka '7'
?
cocok
bukan
periksa
digit 2
tidak
cocok
Angka '9'
?
cocok
periksa
digit 3
bukan
tidak
cocok
ya
nada 'D'
?
bukan
cocok
A
Gambar 6.9a. Diagram Alir Program pengendali prosesor
11
11
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
MK : Mikroprosesor
Kirim ke Motor
dan delay 50 ms
Kirim ke Motor
dan delay 50 ms
Kirim ke Motor
StD HIGH
ESt
HIGH
StD
HIGH
Tombol masih
ditekan ?
ESt
LOW
StD
LOW
StD
LOW
StD HIGH
A
Gambar 6.9b. Diagram Alir Program pengendali prosesor (lanjutan).
0090
0094
0095
0096
00A7
0080
0003
0002
0008
---0030
0030
---0000
0000
11
020030
12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$MOD51
DTMF
StD
ESt
Ring
Line
Motor
Pass1
Pass2
Pass3
DSEG
ORG
buffer:
CSEG
ORG
LJMP
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
EQU
EQU
EQU
EQU
EQU
P1
P1.4
P1.5
P1.6
P2.7
EQU
EQU
EQU
EQU
30H
DS
P0
3
2
8
0
START
758911
7530CC
853080
C2A7
3096FD
D2A7
0040
0043
0045
0047
004A
putus
3094FD
E590
540F
B40003
020039
004D
0050
0053
0056
0058
005A
005D
B403E9
2094FD
3094FD
E590
540F
B40003
020039
putus
0060
0063
0066
0069
006B
006D
0070
B402D6
2094FD
3094FD
E590
540F
B40003
020039
putus
0073
0076
0079
007C
007E
0080
0083
B408C3
2094FD
3094FD
E590
540F
B40003
020039
0086
0089
008C
008F
0092
0095
0098
009B
009E
00A1
00A4
00A7
B40103
0200AA
B40303
0200BB
B40403
0200EE
B40603
0200F9
B40703
0200CC
B409CF
0200DD
11
13
21
22
23
24
25
ORG
START:
PUTUS:
26
27
28
29
30
31
32
33
MK : Mikroprosesor
30H
MOV
MOV
MOV
CLR
TMOD,#00010001B
buffer,#11001100B ;data stepper pertama
Motor,buffer
Line
;DTMF putus dari line
JNB
SETB
Ring,$
Line
JNB
MOV
ANL
CJNE
LJMP
StD,$
A,DTMF
A,#0FH
A,#0,DIGIT1
PUTUS
;tunggu dering
;DTMF connect dgn line
;tunggu output DTMF valid
;ambil 4-bit LSB saja
;jika bukan nada 'D'
;jika nada 'D' atau
nada
34
35
36
37
38
39
40
41
DIGIT1: CJNE
JB
JNB
MOV
ANL
CJNE
LJMP
A,#Pass1,PUTUS
StD,$
;tunggu nada berikutnya
StD,$
;tunggu output DTMF valid
A,DTMF
A,#0FH
;ambil 4-bit LSB saja
A,#0,DIGIT2
;jika bukan nada 'D'
PUTUS
;jika nada
'D' atau nada
42
43
44
45
46
47
48
49
DIGIT2: CJNE
JB
JNB
MOV
ANL
CJNE
LJMP
A,#Pass2,PUTUS
StD,$
;tunggu nada berikutnya
StD,$
;tunggu output DTMF valid
A,DTMF
A,#0FH
;ambil 4-bit LSB saja
A,#0,DIGIT3
;jika bukan nada 'D'
PUTUS
;jika nada
'D' atau nada
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
DIGIT3:
CJNE
TungguStD: JB
AmbilNada: JNB
MOV
ANL
CJNE
LJMP
CEK1:
CEK3:
CEK4:
CEK6:
CEK7:
CEK9:
Mikroprosesor
Ir. Eko Ihsanto, M.Eng
CJNE
LJMP
CJNE
LJMP
CJNE
LJMP
CJNE
LJMP
CJNE
LJMP
CJNE
LJMP
A,#Pass3,PUTUS
StD,$ ;tunggu nada berikutnya
StD,$ ;tunggu output DTMF valid
A,DTMF
A,#0FH ;ambil 4-bit LSBsaja
A,#0,CEK1 ;jika bukan nada 'D'
PUTUS ;jika nada 'D' atau nada putus
A,#1,CEK3
seretkiri
A,#3,CEK4
seretkanan
A,#4,CEK6
stepkiri
A,#6,CEK7
stepkanan
A,#7,CEK9
kiriterus
A,#9,TungguStD
kananterus
E530
03
F530
853080
120104
2095F2
020076
00CC
00CE
00CF
00D1
00D4
00D7
00DA
E530
23
F530
853080
120104
2094F2
020079
00DD E530
00DF 03
kekiri
00E0 F530
00E2 853080
00E5 120104
00E8 2094F2
lain
00EB 020079
00EE
00F0
00F1
00F3
00F6
E530
23
F530
853080
020076
00F9
00FB
00FC
00FE
0101
E530
03
F530
853080
020076
0104
0106
0109
010C
010E
0111
0113
C28C
758C3C
758AB0
D28C
308DFD
C28D
22
11
14
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
MK : Mikroprosesor
Seretkiri:
RL
MOV
MOV
LCALL
JB
LJMP
MOV
A,buffer
A ;putar buffer 1-bit ke kiri
buffer,A
motor,buffer
delay50ms
ESt,seretkiri
;selama
tombol
TungguStD
Seretkanan: MOV
RR
MOV
MOV
LCALL
JB
LJMP
kiriterus:
RL
MOV
MOV
LCALL
JB
LJMP
masih
A,buffer
A
;putar buffer 1-bit ke kiri
buffer,A
motor,buffer
delay50ms
ESt,seretkanan ;tombol masih ditekan
TungguStD
MOV
A,buffer
A
;putar buffer 1-bit ke kiri
buffer,A
motor,buffer
delay50ms
StD,kiriterus ;selama belum ada nada lain
AmbilNada
kananterus: MOV
RR
A,buffer
A
;putar
buffer1-bit
99
100
101
102
MOV
MOV
LCALL
JB
buffer,A
motor,buffer
delay50ms
StD,kananterus ;selama belum ada nada
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
LJMP
AmbilNada
stepkiri:
RL
MOV
MOV
LJMP
stepkanan: MOV
RR
MOV
MOV
LJMP
delay50ms: CLR
MOV
MOV
SETB
JNB
CLR
RET
MOV
A,buffer
A
;putar buffer 1-bit ke kiri
buffer,A
motor,buffer
TungguStD
A,buffer
A
;putar buffer 1-bit ke kiri
buffer,A
motor,buffer
TungguStD
TR0
TH0,#HIGH 50000 ;delay 50ms
TL0,#LOW -50000
TR0
TF0,$ ;tunggu 50 ms
TF0
END
Mikroprosesor
Ir. Eko Ihsanto, M.Eng