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 TIMER-COUNTER 0
GATE C/T M1 M0 GATE C/T M1 M0
0 1 1 1 0 0 0 0

GATE = 0

:Menyatakan bahwa interupsi eksternal INT1 tidak difungsikan, sehingga satu-satunya 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 equ 00111000b
entrmod equ 00000110b
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 b,#100d
div ab
mov Ratusan,a
mov a,b
mov b,#10d
div ab
mov Puluhan,a
mov Satuan,b

ret

;

Printoutchar:
mov r1,#0c9h
acall write_inst
mov a,Ratusan
add a,#30h
mov r1,a
acall write_data
mov r1,#0cah
acall write_inst
mov a,puluhan
add a,#30h
mov r1,a
acall write_data
mov r1,#0cbh
acall write_inst
mov a,satuan
add a,#30h
mov r1,a
acall write_data
ret

;

Tulis: mov dptr,#tulisan1

mov r3,#8

mov r1,#0c0h

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 ke LCD
Mov P0,R1 ; D7 s/d D0 = P0 = R1
Setb P1.1 ; EN = 1 = P1.1
Acall delay ; panggil waktu tunda
Clr P1.1 ; EN = 0 = P1.1
ret
;
Write_data:
Setb P1.0 ; RS = P1.0 = 1, mode tulis data ke LCD
Mov P0,R1 ; D7 s/d D0 = P0 = R1
Setb P1.1 ; EN = 1 = P1.1
Acall delay ; panggil waktu tunda
Clr p1.1 ; EN = 0 = P1.1
ret
;

init_lcd:
mov r1,#dispclr
acall write_inst
mov r1,#funcset
acall write_inst
mov r1,#dispon
acall write_inst
mov r1,#entrmod
acall write_inst
ret

;

Tulisan1: DB 'Data counter :'

end


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 b,#100d
div ab
mov Ratusan,a
mov a,b
mov b,#10d
div ab
mov Puluhan,a
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

Data7segmen:
db11000000b,11111001b,10100100b,10110000b,10011001b,

db10010010b,10000010b,11111000b,10000000b,10010000b

Post a Comment

0 Comments