BAB II
LANDASAN TEORI

2.1	Mikrokontroller AT89S51
Di dalam mikrokontroller terdapat beberapa bagian CPU seperti ALU, PC, SP dan register, serta beberapa bagian yang biasa ditambahkan pada CPU untuk membentuk sistem komputer seperti ROM, RAM, parallel I/O, serial I/O, counter dan rangkaian detak.
Mikrokontroller merupakan sebuah sistem komputer lengkap dalam satu keping.  Susunan bagian dalam sistem mikrokontroller dapat diamati pada Gambar 2.1

                  Gambar 2.1 Arsitektur mikrokontroller AT89S51
	Mikrokontroller AT89S51 sudah mempunyai EPROM yang terletak di dalam kepingnya (internal). Sedangkan yang berjenis lain adalah mikrokontroller yang tidak ber-EPROM, sehingga jika mikrokontroller tersebut dipergunakan harus disertai dengan pemakaian EPROM di luar keping (eksternal). Dari alasan tersebut, maka untuk membuat suatu sistem pengendalian dengan program yang panjang atau yang memerlukan kapasitas penyimpanan data yang besar maka akan lebih tepat jika digunakan mikrokontroller dengan jenis tidak ber-EPROM atau dengan disertai EPROM eksternal.
Tabel 2.1 Keluarga mikrokontroller MCS-51
Tipe	Tipe tanpa EPROM	Tipe ber- EPROM	ROM	RAM (byte)	I/O	
80C51	8031	-	4K	128	4	
8051AH	8031AH	8751H
8751BH	4K	128	4	
8052AH	8032AH	8752BH	8K	256	4	
80C51BH	80C51BH	87C51	4K	128	4	
83C51FA	80C51FA	87C51FA	8K	256	4	
83C51FB	80C51FB	87C51FB	16K	256	5	

Mikrokontroller AT89S51 yang digunakan dalam pengendalian sistem pengatur kecepatan putar motor stepper ini adalah termasuk di dalam jenis ber-EPROM internal, sehingga lebih memudahkan dalam pemrogramanya. Jenis EPROM di dalam AT89S51 adalah jenis flash memory yang dapat diprogram ulang. Pemrograman ulang dapat dilakukan maksimal sampai 1000 kali penghapusan. Di dalam jenis flash EPROM penghapusan program dilakukan secara elektris, yaitu dengan cara memberikan tegangan dengan besar tertentu yang dialirkan ke salah satu kaki pada mikrokontroller.

2.1.1	Perlengkapan Dasar Mikrokontroller Jenis MCS-51		
Di dalam mikrokontroller terdapat bagian-bagian pokok yang harus ada agar dapat melaksanakan serangkaian proses pengendalian.
1.	CPU
Di dalam setiap sistem baik mikrokomputer atau mikrokontroller terdapat bagian pokok yang terpenting agar dapat melakukan pemrosesan,  yaitu sebuah bagian yang merupakan pusat dari seluruh proses yang berjalan pada sistem secara keseluruhan, dan bagian itu disebut dengan Central Processing Unit (CPU).
CPU mempunyai dua bagian pokok yaitu kontrol unit atau kendali dan ALU (arithmetic and logic unit) atau bagian aritmatika dan logika. Unit kendali berfungsi untuk menjalankan proses pengambilan (fetching) instruksi, pengkodean (coding) dan melaksanakannya sesuai dengan urutan.
Fungsi lain dari kendali adalah mengendalikan aliran informasi pada bus data dan bus alamat kemudian menerjemahkan dan mengatur sinyal yang dikeluarkan oleh bus kendali.
Sedangkan bagian ALU atau bagian aritmatika dan logika berfungsi untuk menjalankan proses-proses yang memerlukan operasi aritmatika dan logika seperti penjumlahan, pengurangan, pembagian, perkalian, operasi AND, OR, dan sebagainya.
2.	Memori
Di dalam sistem mikrokontroller harus dilengkapi dengan sebuah bagian yang disebut dengan memori. Memori ini berfungsi sebagai tempat untuk menyimpan kode-kode baik program maupun data. Memori dapat dibagi dalam tiga jenis yang utama, yaitu : register internal, memori utama, dan memori massal.
Register internal adalah bentuk memori yang paling kecil. Register berfungsi untuk menyimpan sebuah data dalam bentuk biner. Register internal terletak pada bagian ALU untuk meyimpan data yang akan dioperasikan dalam ALU. Kecepatan akses register internal kurang dari 100ns.
Jenis memori yang kedua adalah memori utama. Memori utama berfungsi untuk menyimpan sementara data yang akan, dan sudah diolah oleh bagian CPU.
Jenis memori yang ketiga adalah memori massal. Memori massal digunakan sebagai tempat penyimpan data yang sifatnya lebih permanen. Hal tersebut dikarenakan sifat kapasitasnya yang paling besar daripada jenis memori yang lainya.
3.	Masukan/keluaran (I/O)
peranti I/O atau Input/Output harus ada di dalam sistem mikrokontroller. Piranti I/O atau peripheral merupakan jalur-jalur yang tersedia untuk digunakan sebagai penghubung antara sistem mikrokontroller dengan dunia nyata. Pada mikrokontroller terdapat dua macam I/O yaitu jenis serial dan parallel.
2.1.2 Karakteristik AT89S51
Karakteristik dari AT89S51 adalah sebagai berikut 
1.	Kompatibel dengan produksi MCS-51,
2.	Mempunyai kapasitas memori flash yang dapat diprogram kembali dalam sistem sebesar 4 Kbyte,
3.	Ketahanan sampai 1000 kali pengulangan dalam penulisan atau penghapusan,
4.	Operasi statis secara penuh 0 Hz sampai dengan 24 Mhz,
5.	Mempunyai tiga tingkat penguncian memori program,
6.	RAM internal adalah sebesar 128 X 8-bit,
7.	Jalur I/O yang dapat diprogram sejumlah 32-bit,
8.	Dua buah timer atau counter 16-bit,
9.	Lima buah sumber interupsi,
10.	Port serial dan parallel yang dapat diprogram.
Dengan karakteristik yang menguntungkan di atas, maka pembuatan sistem buka tutup pintu dengan penyetingan melalui tombol dapat lebih efisien, baik dalam proses pembuatan rancangan perangkat keras maupun dalam perancangan perangkat lunak. 

Gambar 2.2 Kaki-kaki pada mikrokontroller AT89S51.
Berikut ini dipaparkan tentang kaki-kaki pada mikrokontroller AT89S51 dan juga fungsi masing-masing kaki-kaki tesebut, yang secara jelas susunannya dapat dilihat pada Gambar 2.2.
a)	RST
apabila isyarat tinggi dikenakan pada jalur RST selama paling sedikit 2 siklus mesin, maka register internal mikrokontroller akan memuat suatu nilai agar sistem melakukan reset.
b)	ALE / PROG
prinsip kerja seperti ALE pada beberapa jenis mikroprosessor intel, yaitu digunakan untuk proses demultipleksing alamat dan data. Jika kaki pada ALE berlogika 1, maka addres latch dipergunakan untuk menempatkan alamat byte rendah selama mengakses memori eksternal. Dan apabila berlogika 0, maka akan memfungsikan pulsa program selama flash programming. Pada operasi normal, ALE berjalan konstan pada kecepatan 1/6 frekuensi osilator, sehingga dapat pula dipergunakan untuk timer eksternal atau fungsi clock, dengan catatan pulsa ALE tersebut diloncati pada setiap mengakses memori data eksternal.
c)	PSEN
program strobe enable adalah pembacaan strobe pada memori program eksternal. Pada saat mikrokontroller mengeksekusi kode dari memori program eksternal, PSEN diaktifkan dua kali setiap siklus mesin, kecuali bahwa aktivitas PSEN diloncati selama tiap mengakses ke memori data internal.
d)	EA/Vpp
adalah eksternal access enable. EA aktif rendah digunakan untuk mengambil kode dari memori program eksternal mulai dari alamat 0000H – FFFFH. EA harus diletakkan pada Vpp apabila menggunakan eksekusi program internal. Kaki ini juga menerima tegangan 12 volt untuk pemrograman flash tipe 12 volt.
e)	XTAL1
masukan ke penguat osilator dan masukan ke rangkaian clock internal.
f)	 XTAL2
keluaran dari penguat osilator.
g)	PORT 0
port 0 adalah sejumlah susunan 8-bit port I/O yang bersifat drain terbuka dua arah. Sebagai port keluaran setiap kaki mampu memberikan masukan arus kepada 8 buah masukan TTL. Jika kaki-kaki port 0 diset 1, maka kaki-kaki tersebut dapat digunakan sebagai masukan dengan impedansi tinggi. Port 0 juga dapat dikonfigurasi sebagai bus data alamat orde rendah termultipleks untuk mengakses program atau data pada memori eksternal. Pada mode ini port 0 memiliki rangkaian pull-up internal. Selama pemrograman EPROM, port 0 mampu menerima kode byte dan mengeluarkan byte kode selama verifikasi program. Resistor pull-up eksternal perlu ditambahkan selama verifikasi program. Port 0 ini juga dapat digunakan dalam dua macam penerapan. Penerapan pertama adalah apabila port 0 didesain untuk meminimalkan komponen yang dilibatkan maka bisa digunakan sebagai I/O serbaguna. Penerapan kedua adalah jika port 0 dikehendaki untuk desain yang lebih besar  dengan memori eksternal, maka port 0 akan berguna sebagai jalur multipleks alamat dan data.  
h)	PORT 1
port 1 adalah sebuah port I/O 8-bit dua arah dengan pull-up internal. Buffer keluaran port 1 dapat mensuplai empat buah masukan TTL. Jika kaki-kaki port 1 diset 1 semua, maka kaki-kaki tersebut akan tertarik ke atas oleh pull-up internal, sehingga dapat digunakan sebagai masukan karena berimpedansi tinggi. Sebagai masukan, kaki-kaki port 1 yang di tarik ke bawah secara eksternal akan mensuplai arus (IIL) yang disebabkan oleh pull-up internal. Port ini juga dapat menerima alamat orde rendah selama pemrograman dan verifikasi flash.
i)	PORT 2
port 2 ini terdiri dari 8-bit port I/O dua arah dengan pull-up internal. Buffer keluaran port 2 dapat mensuplai arus kepada empat masukan TTL. Jika kaki-kaki port 2 di-set 1 maka akan ditarik ke atas oleh pull-up internal dan dapat dipakai sebagai port masukan. Port 2 berfungsi sebagai alamat orde tinggi selama proses pengambilan instruksi dari memori eksternal dan selama mengakses memori eksternal dengan alamat 16-bit.
j)	PORT 3
port 3 adalah port I/O dua arah 8-bit dengan pull-up internal. Buffer keluaran port 3 dapat mensuplai empat buah masukan TTL. Jika kaki-kaki port 3 di-set 1 maka kaki-kaki tersebut akan ditarik ke ataas oleh pull-up internal dan dapat digunakan sebagai kaki-kaki masukan. Sebagai masukan, kaki-kaki port 3 yang ditarik ke bawah secara eksternal akan menyuplai arus (IIL) yang disebabkan oleh pull-up.
Port 3 juga melayani fungsi alternative dengan karakteristik khusus yang beragam pada MCS-51. Fungsi tersebut dapat dilihat pada Tabel 2.2.
Tabel 2.2 Fungsi alternative kaki-kaki port 3
Kaki-Kaki Port	Fungsi Alternatif	
P3.0	RXD   (port masukan serial)	
P3.1	TXD   (port keluaran serial) 	
P3.2	INT0   (Interupsi 0 eksternal)	
P3.3	INT1   (Interupsi 1 eksternal)	
P3.4	T0       (masukkan eksternal timer 0)	
P3.5	T1       (masukkan eksternal timer 1)	
P3.6	WR     (Strobe baca memori data eksternal)	
P3.7	RD      (Strobe baca memori data eksternal)	

2.1.3 Organisasi Memori AT89S51
Hampir semua mikroprosessor menerapkan pembagian ruang alamat untuk memori data dan memori program. Karena program bisa disimpan dalam disk dan akan dikeluarkan ke dalam RAM untuk dieksekusi. Tetapi yang terjadi dalam mikrokontroller adalah sebaliknya, karena mikrokontroller didesain sebagai komponen yang mengacu pada proses pengendalian, maka memori yang dimiliki oleh mikrokontroller hanya terbatas. Program kendali dalam mikrokontroller harus disimpan di dalam ROM.
MCS-51 menerapkan sistem pemisahan ruang alamat untuk program (code) dengan data. Pemisahan ini akan membolehkan memori data untuk diakses oleh alamat 8-bit. Akan tetapi alamat data memori 16-bit dapat dihasilkan lewat register DPTR.
AT89S51 memiliki RAM atau memori internal sebesar 128-bytes dan secara keseluruhan ruang memori terbagai menjadi dua blok. Yaitu blok dari alamat 00H sampai dengan 7FH sebagai lower 128 dan blok alamat 80H sampai dengan FF sebagai blok SFR (special function register).
Blok lower 128 digunakan untuk mengakses pengalamatan baik secara langsung maupun tidak langsung. Blok ini secara umum terdiri dari tiga bagian, yaitu bagian register bank yang mempunyai 4 buah bank. Bank tersebut adalah bank 0 sampai dengan bank 3. Bagian bank tersebut menempati alamat mulai dari 00H sampai dengan 1FH. Register yang bisa dipakai adalah yang terletak pada bank aktif. Untuk mengaktifkan masing-masing bank digunakan 2 buah bit pada blok SFR yang disebut juga sebagai bit pemilih bank register. Bagian yang kedua adalah ruang pengalamatan bit. Bagian ini dapat dialamati secara independen atau mandiri sebagai sebuah bit. Pada bagian ini menempati alamat dari 20H sampai dengan 2FH. Sedangkan bagian yang terakhir adalah RAM serbaguna yang menempati alamat 30H sampai dengan 7FH. Susunan blok yang dimaksud dapat di lihat pada Gambar 2.3.

Gambar 2.3 Blok lower 128
Blok SFR menempati alamat 80H sampai dengan FFH dan mempunyai fungsi yang khusus. SFR berisi status port, timer, register, bit pengendali, register B, PSW, dan yang lain. Di dalam blok SFR ini pengalamatan dapat dilakukan secara langsung. Ada beberapa SFR menggunnakan pengalamatan bit maupun byte, tetapi sebagian SFR yang lain tidak dapat mengakses pengalamatan bit.
Register-register port mikrokontroller terletak di dalam SFR. port 0 menempati alamat 80H, port 1 menempati alamat 90h, port 2 menempati alamat A0H dan port 3 menempati alamat B0H. Masing-masing register port merupakan register dengan pengalamatan bit.
Berikut ini adalah susunan bit-bit PSW yang ada pada blok SFR dan keterangannya dapat dilihat pada Tabel 2.3.
Tabel 2.3 Keterangan bit-bit di dalam PSW 

LSB

MSB

CY	AC	F0	RS1	RS0	Ov	-	P	

Simbol	Posisi	Arti	
CY	PSW.7	Carry flag	
AC	PSW.6	Auxiliary carry flag	
F0	PSW.5	Flag 0 untuk kegunaan umum	
RS1	PSW.4	Bit 1 pemilih bank register	
RS0	PSW.3	Bit 0 pemilih bank register 	
OV	PSW.2	Overflow flag	
-	PSW.1	Dicadangkan	
P	PSW.0	Parity flag	

2.1.4    Pewaktu Xtal 1 dan Xtal 2
	Xtal 1 dan Xtal 2 berturut-turut adalah masukan dan keluaran yang merupakan penguat pembalik yang dapat dikonfigurasi untuk digunakan sebagai sebuah osilator internal. Ada dua jenis bahan kristal yang dapat dipakai. Bahan tersebut yakni terbuat dari kwarsa dan keramik peresonasi. Untuk menjalankan peralatan dari sumber clock eksternal, maka Xtal 2 harus dibiarkan tidak terhubung, dan jika Xtal 1 di jalankan maka akan seperti gambar 2.4

Gambar 2.4 Konfigurasi kendali clock eksternal.
	Duty cycle dari masukan sinyal clock eksternal tidak harus tepat 50 % karena di dalam mikrokontroller terdapat flip-flop pembagi dua bagi sinyal clock yang masuk, sehingga berapapun duty cyclenya akan diubah menjadi 50 %.

2.1.5	Port I/O Parallel
Mikrokontroller AT89S51 mempunyai port I/O parallel sebanyak 4 buah, yang keseluruhanya dapat digunakan sebagai port keluaran atau masukan yang dapat diprogram.
Jika sebuah port digunakan sebagai port keluaran maka mikrokontroller akan melakukan penulisan data yang akan dikeluarkan ke dalam SFR, yaitu di alamat port yang sesuai. Data di dalam SFR tersebut akan dikirim ke sebuah latch untuk ditampung sementara sampai operasi penulisan data sudah lengkap. Jika sudah tertulis lengkap maka data tersebut siap dikeluarkan ke port.
	Pada port yang digunakan sebagai port masukan, mikrokontroller akan melakukan inisialisasi, yaitu dengan menuliskan data FFH ke port tersebut. Selanjutnya jika ada masukan data bertegangan rendah dari luar ke kaki port tersebut maka akan dibaca sebagai data berlogika 0 dan jika bertegangan tinggi maka akan dibaca sebagai data berlogika 1. Data yang terbaca lewat kaki port tersebut dituliskan ke dalam SFR dan oleh mikrokontroller siap untuk dibaca. Alamat port serial di dalam SFR dapat dilihat pada Tabel 2.4. 
Tabel 2.4 Posisi alamat port I/O parallel pada SFR.
Nama Port	Alamat	
PORT 0	80H	
PORT 1	90H	
PORT 2	A0H	
PORT 3	B0H	
		
2.1.6	Port Serial
Akses perangkat keras ke port serial adalah melalui kaki-kaki TXD dan RXD. Port serial adalah fungsi alternative dari port 3.1 (untuk TXD) dan port 3.0 (untuk RXD). 
	Port serial dalam mikrokontroller bersifat full duplex, yaitu proses pengiriman data dan penerimaan berjalan secara bersamaan waktunya. Penyangga penerimaan mengijinkan sebuah karakter yang diterima dan memegangnya untuk sementara di buffer pada saat karakter kedua diterima.
	Dua buah SFR menyediakan akses perangkat lunak untuk port serial, yaitu Serial Port Buffer (SBUF) dan Serial Port Control (SCON). Ada dua macam SBUF, yaitu SBUF penulisan dan SBUF pembacaan. Penulisan ke buffer maksudnya mengisikan data untuk dikirimkan, dan membaca buffer maksudnya adalah mengakses data yang diterima.
	SCON adalah register yang dapat dialamati secara bit, juga berisi bit-bit status dan bit-bit kendali. Bit kendali membentuk mode operasi untuk serial port. Sedangkan bit status menunjukkan akhir dari suatu pengiriman atau penerimaan karakter.

MSB

LSB

	Susunan dari register kendali port serial adalah sebagai berikut :
SM0	SM1	SM2	REN	TB8	RD8	T1	R1	

Tabel 2.5 Keterangan bit-bit kendali port serial
BIT	SIMBO	ALAMAT	KETERANGAN	
SCON.7	SM0	9FH	Bit mode 0 port serial	
SCON.6	SM1	9EH	Bit mode 1 port serial	
SCON.5	SM2	9DH	Bit mode 2 port serial. Mengenable komunikasi multi prosessor dalam mode 2 dan 3. R1 dilumpuhkan jika bit ke 9 yang diterima 0.	
SCON.4	REN	9CH	Receiver Enable. Harus di-set untuk menerima karakter	
SCON.3	TB8	9BH	Transmitter bit 8, bit  dikirimkan dalam ode 2 dan 3. di-set dan cleared oleh perangkat lunak.	
SCON2	RB8	9AH	Receive bit 8, bit 9 diterima	
SCON.1	T1	99H	Transmit Interupt Flag di-set pada akhir pengiriman karakter dan di-cleared oleh perangkat lunak	
SCON.0	R1	98H	Receive Interupt Flag Di-set pada akhir pengiriman karakter. Di-ceared leh perangkat lunak	

Tabel 2.6 Pemilihan mode dalam port serial
SM0	SM1	Mode	Keerangan	Baud rate	
0	0	0	Shift Register	Frekwensi ocilator/12	
0	1	1	8-bit UART	Variabel	
1	0	2	9-bit UART	Frek. Osc/64 atau Frek. Osc/32	
2.1.7	Timer 
	AT89S51 mempunyai 2 buah register timer 16 bit : Timer 0 dan Timer 1. keduanya dapat beroperasi sebagai timer .Pada  fungsi timer isi register ditambah satu setiap siklus mesin. Karena satu siklus mesin terdiri dari 12 periode osilator, maka kecepatannya i = 1/12 frekuensi osilator. Untuk mengenali transisi 1 ke 0 dibutuhkan dua siklus mesin (24 periode osilator), maka input maksimum ialah 1/24 frekuensi osilator. Timer 0 dan timer 1 mempunyai mode operasi yang bisa dipilih.
Pembangkit clock internal menentukan rentetean kondisi-kondisi (state) membentuk sebuah siklus mesin mikrokontroler. Siklus mesin tersebut diberi nomor S1 hingga S6, masing-masing kondisi panjangnya 2 (dua) periode osilator. Dengan demikian, satu siklus mesin paling lama dikerjakan dalam 12 periode osilator atau 1µd, jika frekuensi kristalnnya adalah 12Mhz.
	
	Timer diaktifkan pada frekuensi kerja mikrokontroller 12 Mhz  dipilihnya  menggunakan 12Mhz.. Untuk medapatkan cacah selama 1 detik membutuhkan 1 juta cacahan Sebagai contoh untuk menghasilkan 1 detik. Penggalkan program seperti dibawah
Loop:	Mov	d_det,#20 ;pesan memori dan isi dengan bil 20
	Mov	th1,#High (-50000)
	Mov	tl1,#Low  (-50000)
	Setb	tr1
	Jnb	tf1,$
	Djnz	d_det,loop
	Jadi  program diatas akan mengulang dengan cara 50000 + 50000 sebanyak 20 kali. Program “Djnz	d_det,loop” baris program ini akan menanyakan apakah d_det sudah = 0 jika tidak maka akan kembali ke loop, jika ya, maka mikro akan memberitau bahwa penghitungan selama 1 detik sudah selesai 
Pengontrol kerja dari Timer  tersebut adalah sebuah register bernama register Timer Control (TCON) yang keterangan bit-bitnya dapat dilihat pada Tabel 2.7. Susunan bit-bit register kendalinya adalah sebagai berikut :

LSB

MSB

TF1	TR1	TF0	TR0	IE1	IT1	IE0	IT0	

Tabel 2.7 Keterangan bit-bit dalam timer control
BIT	SIMBOL	ALAMAT	KETERANGAN	
TCON.7	TF1	8FH	Timer 1 overflow flag. Di-set oeh perangkat keras saat tmer menghasilkan overflow. Di-clear oeh perangat luna atau perangkat keras ketika prossesor menunjuk ke ISR.	
TCON.6	TR1	8EH	Timer 1 run control bit. Di-set/cear oleh perangkat lunak untuk menghidupan/ mematikannya.	
TCON.5	TF0	8DH	Timer 0 verflow flag	
TCON.4	TR0	8CH	Timer 0 run control bit	
TCON.3	IE1	8BH	Eksternal interrupt 1 type flag. Di-set oleh perangkat keras jika ada transisi turun yang terdeteksi pada INT1.	
TCON.2	IT1	8AH	Eksternal interrupt 1 type flag. Di-set /clear oleh perangat unak untuk transisi turun atau interupsi eksternal aktif rendah.	
TCON.1	IE0	89H	Eksternal interrupt 0 edge flag	
TCON.0	IT0	88H	Eksternal interrupt 0 type flag	

	Pengontrol pemilihan mode operasi timer / counter adalah register timer mode (TMOD), yang definisi bit-bitnya adalah sebagai berikut

LSB

MSB

GATE	C/T	M1	M0	GATE	C.T	M1	M0	

Gate     
saat TRx dalam TCON di-set 1 dan gate = 1, timer / counter x akan  berjalan ketika TRx = 1 (timer dikontrol perangkat lunak).
C/T   
pemilihan fungsi timer / counter, Clear ( 0 ) untuk operasi timer dengan masukan dari sistem clock internal. 
Jika di set ( 1 ) untuk operasi counter dengan masukan dari kaki T1 dan T0.
M1 dan MO
adalah bit pemilih mode.
Kombinasi M0 dan M1 dapat dilihat pada Tabel 2.8.
Tabel 2.8 Bit-bit pemilih timer mode
M1	M0	Mode	Operasi	
0	0	0	Timer 13-bit	
0	1	1	Timer/Counter 16-bit	
1	0	2	Timer auto reload 8-bit (pengisian otomatis)	
1	1	3	TL0 adalah Timer/Counter 8-bit yang dikontrol bit standar timer 0. TH0 adalah timer 8-bit dan dikontrol oleh bit timer 1.	

2.2	Penampil 7-segmen
Penampil 7-segmen pada Buka Tutup Pintu Secara Otomatis Menggunakan  AT89S51 digunakan untuk menampilkan jam. Penampil yang digunakan pada rangkaian ini adalah penampil 7-segmen (seven segmen ) termulteplek terdapat di bot saluran  masukan, 4 bot pertama digunakan untuk mengirim data 7-segmen melalui decodar 7447. 7-segmen mempunyai tujuh ruas. Pemakaian 7447 dimaksudkan untuk mengurangi jumlah saluran port yang dipakai. Dengan 7447 saluran yang dipakai cukup dengan empat buah ,tanpa 7447 akan diperlukan tujuh saluran untuk menyalakan LED 9 yang terdapat pada penampil 7-segmen

2.3	Saklar Pembatas
Pada rangkaian Buka Tutup Pintu Secara Otomatis Menggunakan AT89S51 ini membutuhkan dua saklar pembatas yang berfungsi untuk menghentikan putaran motor DC. Saklar pembatas yang satu untuk menghentikan motor DC pada saat membuka pintu dan saklar pembatas yang lainnya untuk menghentikan putaran motor DC pada saat menutup pintu. 

2.4	Motor DC
Secara umum motor berkerja berdasarkan gaya elektromagnetik, yaitu mengubah energi listrik menjadi energi gerak. Prinsip kerja motor DC adalah arus searah dialihkan pada suatu penghantar berupa kumparan dengan dua buah komutator yang terpasang pada sebuah poros. Antara kamutator yang satu dengan yang lainnya saling terisolasi, dan kumparan diletakkan diantara suatu medan magnet tetap disebelah kanan dan kiri.