Senin, 13 Januari 2014

Rangkaian counter dengan menggunakan mikrokontroloer AT89C51

 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