Anda di halaman 1dari 7

APLIKASI COUNTER 8 BIT

Gambar 4.4. Blok diagram Timer-Counter sebagai counter 8 bit mode 3 Agar mikrokontroler dapat bekerja sebagai counter 8 bit, maka TMOD harus dikonfigurasikan dengan mengisi data sebagai berikut: TIMER-COUNTER 1 GATE 0 GATE = 0 C/T 1 M1 1 M0 1 GATE 0 TIMER-COUNTER 0 C/T 0 M1 0 M0 0

:Menyatakan bahwa interupsi eksternal INT1 tidak difungsikan, sehingga satusatunya BIT yang mengendalikan saklar S2 adalah TR1, agar register counter dapat bekerja, maka TR1 harus diset sama dengan 1 C/T = 1 :Untuk mengkonfigurasikan mikrokontroler sebagai counter M1=1 M0=1 :Pemilihan mode 3 Pada contoh aplikasi tersebut, clock yang akan dihitung diumpankan pada pin T1( P3.5 ) untuk dihitung oleh counter 8 bit. Overflow dari counter ini dapat ditangkap oleh flag TF1, hasil cacahan yang dilakukanoleh counter 8 bit dapat dilihat pada LED yang terkoneksi ke port P1.

Gambar 4.5. Aplikasi sebagai counter 8 bit dengan output ke LED ; Percobaan 4.2. ;Listing Program output data counter 8 bit mode 3 pada LED untuk timer 1 Org 0h Start: Mov TMOD,#01110000b ; mode 3 counter 8 bit timer 1 Setb TR1 ; TR1 = 1, start counting Ulang: Mov A, TL1 ; A = TL1 Mov P1, A ; P1 = A Sjmp Ulang ; Disinilah awal dari Looping Forever End

; Percobaan 4.2.b ;Kerjakan Program output data counter 8 bit mode 3 pada LED untuk timer 0

Gambar 4.6. Aplikasi counter 8 bit dengan output ke LCD Character D a t a C o u n t e r : 2 1 4

; Percobaan 4.3. ; Rencanakan Program untuk mengeluarkan data counter pada LCD Character dispclr equ

00000001b

funcset entrmod dispon equ 00001100b Org 0h Mulai: Mov TMOD,#01110000b Setb TR1 acall init_lcd acall tulis Again: Mov A, TL1 acall konversi acall printoutchar sjmp again ; konversi: mov div mov mov mov div mov mov Satuan,b ret ; Printoutchar: mov acall mov add mov acall mov acall mov add mov acall mov acall mov add mov acall ret ; Tulis: mov dptr,#tulisan1 mov r3,#8 mov r1,#0c0h

equ equ

00111000b 00000110b

b,#100d ab Ratusan,a a,b b,#10d ab Puluhan,a

r1,#0c9h write_inst a,Ratusan a,#30h r1,a write_data r1,#0cah write_inst a,puluhan a,#30h r1,a write_data r1,#0cbh write_inst a,satuan a,#30h r1,a write_data

acall write_inst Tulis1: clr a movc a,@a+dptr mov r1,A inc dptr acall write_data djnz r3,tulis1 ret ; Write_inst: Clr P1.0 ; RS = P1.0 = 0, mode tulis instruksi Mov P0,R1 ; D7 s/d D0 = P0 Setb P1.1 ; EN = 1 = Acall delay ; panggil waktu Clr P1.1 ; EN = 0 = ret ; Write_data: Setb P1.0 ; RS = P1.0 = 1, mode tulis data Mov P0,R1 ; D7 s/d D0 = P0 Setb P1.1 ; EN = 1 = Acall delay ; panggil waktu Clr p1.1 ; EN = 0 = ret ; init_lcd: mov acall mov acall mov acall mov acall ret ; Tulisan1: DB 'Data counter :' end

ke =

LCD R1 P1.1 tunda P1.1

ke =

LCD R1 P1.1 tunda P1.1

r1,#dispclr write_inst r1,#funcset write_inst r1,#dispon write_inst r1,#entrmod write_inst

Gambar 4.7. Aplikasi counter 8 bit dengan output ke 7 Segmen ; Percobaan 4.4. Org 0h Mulai: Mov TMOD,#01110000b Setb TR1 Again: Mov A, TL1 acall konversi acall display7Segmen sjmp again ; Konversi: mov div mov mov mov div mov mov Satuan,b ret ; Display7segmen: Mov P1,#11111111b mov A, Ratusan mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A clr P1.5 Acall delay ; mov A,Puluhan mov DPTR,#Data7segmen movc A,@A+DPTR setb P1.5 mov P0,A clr P1.6 Acall delay ; mov A,Satuan mov DPTR,#Data7segmen movc A,@A+DPTR setb P1.6 mov P0,A clr P1.7 Acall delay ; ret

b,#100d ab Ratusan,a a,b b,#10d ab Puluhan,a

Data7segmen: db11000000b,11111001b,10100100b,10110000b,10011001b, db10010010b,10000010b,11111000b,10000000b,10010000b Posted by generated at 9:03 PM Tags: Mikrokontroller 0 comments

Membangun oscilator 1 Hz dengan Timer 16 bit

Gambar 4.4. Blok diagram pembangkit clock 1 Hz

Gambar 4.5. Bentuk gelombang kotak frekuensi 1 Hz

65535 -10000 = 55535 d atau D8EF h, akan menghasilkan interupsi setelah: 1000 x 1 mikro detik = 0.01 detik. Dengan melalui pembagi 50 maka akan dihasilkan lebar Ton = Toff = 0.5 detik sehingga frekuensi yang dihasilkan f=1 Hz ;Percobaan 4.1.

;Program untuk membangkitkan clock dengan frekuensi f=1 Hz Org 0h Start: Setb P0.0 ;P0.0 = 1 Acall Tunda ;Memanggil waktu tunda Clr P0.0 ;P0.0 = 0 Sjmp Start ;Looping Forever Tunda: Mov R0,#0 ;R0 = 0 Lagi: Mov TMOD,#00010000b ;Pemilihan mode 1 Mov TH1, #0D8h ;TH1 = D8h Mov TL1, #0EFh ; TL1 = EFh Setb TR1 ; TR1 = 1, mulai bekerja Ulang: JBC TF1, Hitung ; Lompat ke Hitung jika TF1 =1 Sjmp Ulang Hitung: Inc R0 ; R0 = R0+1 CJNE R0,#50,Lagi ; Bandingkan R0 dengan 50, jika tidak sama ; lompat ke lagi Ret End ;Percobaan 4.2. ;Program untuk membangkitkan clock dengan frekuensi f=10 Hz ;Lakukan perhitungan untuk frekuensi tersebut