Merancang dan membuat rangkaian counter dengan menggunakan mikrokontroloer AT89C51
- Rangkailah up counter dengan menggunakan seven segment dan IC mikrokontroler AT89C51 yang bekerja pada port 2.
- Buatlah bahasa pemrograman untuk up counter yang bergerak naik dari angka o sampai 9 secara berulang-ulang dengan waktu tunda 500 mili detik.
- Selanjutnya pindahkan IC yang telah diprogram ke Emulator untuk disimulasikan secara hardware.Seperti rangkain dibawah ini
BAHASA PEMROGRAMAN.
ORG ; Awal pemrograman dimulai pada alamat 0H
Mulai
MOV P2,#11000000B ; Isi port 2 dengan data 10110000B (angka 0)
ACALL Tunda ; Panggilan subrutin Tunda
MOV P2,#11111001B ; Isi port 2 dengan data 11111001B (angka 1)
ACALL Tunda ; Panggilan subrutin Tunda
MOV P2,#10100100B ; Isi port 2 dengan data 10100100B (angka 2)
ACALL Tunda ; Panggilan subrutin Tunda
MOV P2,#10110000B ; Isi port 2 dengan data 10110000B (angka 3)
ACALL Tunda ; Panggilan subrutin Tunda
MOV P2,#10011001B ; Isi port 2 dengan data 10011001B (angka 4)
ACALL Tunda ; Panggilan subrutin Tunda
MOV P2,#10010010B ; Isi port 2 dengan data 10010010B (angka 5)
ACALL Tunda ; Panggilan subrutin Tunda
MOV P2,#10000010B ; Isi port 2 dengan data 10000010B (angka 6)
ACALL Tunda ; Panggilan subrutin Tunda
MOV P2,#11111000B ; Isi port 2 dengan data 11111000B (angka 7)
ACALL Tunda ; Panggilan subrutin Tunda
MOV P2,#10000000B ; Isi port 2 dengan data 10000000B (angka 8)
ACALL Tunda ; Panggilan subrutin Tunda
MOV P2,#10010000B ; Isi port 2 dengan data 10010000B (angka 9)
ACALL Tunda ; Panggilan subrutin Tunda
SJMP Mulai ; Lompat ke label mulai ( Lakukan berulang )
; Seven segmen akan menyala jika logik 0
Tunda :
MOV R5,#250 ; Isi regrister 5 dengan data 250
Tunda 1 :
MOV R6,#100 ; Isi regrister 6 dengan data 100
Tunda 2 :
MOV R7,#10 ; Isi regrister 7 dengan data 10
DJNZ R7,$ ; Kurangi R7 dengan 1 sampai 0*
DJNZ R6,Tunda 2 ; Kurangi R6 jika belum 0 lompat ke label tunda 2**
DJNZ R5,Tunda 1 ; Kurangi R7 jika belum 0 lompat ke label tunda 1***
RET ; Kembali ke program utama
End
; Waktu tunda (siklus DJNZ = 2 µS):
; * :(R7) = 2 (10) = 20 µS
; ** :(R7xR6) = 2 (10x100) = 2000 µS
; *** :(R7xR6xR5) = 2 (10x100x250) = 500000 µS
; -------------+
; 5020200µS=500mS
Tidak ada komentar:
Posting Komentar