Tampilkan postingan dengan label AT89S52. Tampilkan semua postingan
Tampilkan postingan dengan label AT89S52. Tampilkan semua postingan

JAM Digital AT89S52

nah yang berikut ini adalah program JAM digital untuk IC Mikrokontroler AT89S52.
SILAHKAN dipelajari, di pahami dan di coba...

; Project name : Digital Clock.A51
; ==========================
Sat_detik    equ    60h
Pul_detik    equ    61h
Sat_menit    equ    62h
Pul_menit    equ    63h
Sat_jam    equ    64h
Pul_jam    equ    65h
;
Buffer1        equ    66h
Buffer2        equ    67h
Buffer3        equ    68h
Buffer4        equ    69h
Buffer5        equ    6ah
Buffer6        equ    6bh
;
Cacah        equ    6ch
Info        equ    6dh
Waktu        equ    -50000
;
    org    0h
    ljmp    awal
;
    org    3h
    ljmp    ext_int0
;
    org    13h
    ljmp    ext_int1
;
    org    0bh
    ljmp    timer_int0
;
    org    30h
Awal:    mov    tmod,#1
    mov    th0,high waktu
    mov    tl0,low waktu
    mov    cacah,#20
    setb    ea
    setb    ex0
    setb    ex1
    setb    it0
    setb    it1
    setb    et0
    setb    tr0
    call    clear
    mov    dptr,#angka
;
Scan:    mov    a,sat_detik
    movc    a,@a+dptr
    mov    buffer1,a   
    mov    p3,buffer1
    mov    p1,#11111110b
    call    delay
;
    mov    a,pul_detik
    movc    a,@a+dptr
    mov    buffer2,a
    mov    p3,buffer2
    mov    p1,#11111101b
    call    delay
;
    mov    p3,#0fdh
    mov    p1,#11111011b
    call    delay
;
    mov    a,sat_menit
    movc    a,@a+dptr
    mov    buffer3,a
    mov    p3,buffer3
    mov    p1,#11110111b
    call    delay
;
    mov    a,pul_menit
    movc    a,@a+dptr
    mov    buffer4,a
    mov    p3,buffer4
    mov    p1,#11101111b
    call    delay
;
    mov    p3,#0fdh
    mov    p1,#11011111b
    call    delay
;
    mov    a,sat_jam
    movc    a,@a+dptr
    mov    buffer5,a
    mov    p3,buffer5
    mov    p1,#10111111b
    call    delay
;
    mov    a,pul_jam
    movc    a,@a+dptr
    mov    buffer6,a
    mov    p3,buffer6
    mov    p1,#01111111b
    call    delay
;
    jmp    scan
;
Ext_int0:
    inc    sat_menit
    mov    a,sat_menit
    cjne    a,#10,back
    mov    sat_menit,#0
;
    inc    pul_menit
    mov    a,pul_menit
    cjne    a,#6,back
    mov    pul_menit,#0
Back:    call    debounce
    reti   
;
Ext_int1:
    inc    sat_jam
    mov    a,sat_jam
    cjne    a,#10,uji
    mov    sat_jam,#0
;
    inc    pul_jam
    mov    a,pul_jam
    cjne    a,#3,uji
    mov    pul_jam,#0
;
    jmp    back1
;
Uji:    mov    a,sat_jam
    cjne    a,#4,back1
    mov    a,pul_jam
    cjne    a,#2,back1
    call    clear
Back1:    call    debounce
    reti
;
Timer_int0:
    clr    tr0
    clr    tf0
    mov    th0,#high waktu
    mov    tl0,#low waktu
    djnz    cacah,selesai
    mov    cacah,#20
    call    proses
Selesai:
    setb    tr0
    reti
;
Proses:    mov    dptr,#angka
    inc    sat_detik
    mov    a,sat_detik
    cjne    a,#10,tamat
    mov    sat_detik,#0
;
    inc    pul_detik
    mov    a,pul_detik
    cjne    a,#6,tamat
    mov    pul_detik,#0
;
    inc    sat_menit
    mov    a,sat_menit
    cjne    a,#10,tamat
    mov    sat_menit,#0
;
    inc    pul_menit
    mov    a,pul_menit
    cjne    a,#6,tamat
    mov    pul_menit,#0
;
    inc    sat_jam
    mov    a,sat_jam
    cjne    a,#6,check
    mov    sat_jam,#0
;
    inc    pul_jam
    mov    a,pul_jam
    cjne    a,#2,check
    mov    pul_jam,#0
;
    jmp    tamat
;
Check:    mov    a,sat_jam
    cjne    a,#4,tamat
    mov    a,pul_jam
    call    clear
Tamat:   
    ret
;
Clear:    mov    sat_detik,#0
    mov    pul_detik,#0
    mov    sat_menit,#0
    mov    pul_menit,#0
    mov    sat_jam,#0
    mov    pul_jam,#0
    mov    buffer1,#22h
    mov    buffer2,#22h
    mov    buffer3,#22h
    mov    buffer4,#22h
    mov    buffer5,#22h
    mov    buffer6,#22h
    ret
;
Delay:
    mov    r0,#0
Loop:    djnz    r0,$
    mov    p3,#0ffh
    mov    p1,#0ffh
    ret
;
Debounce:
    mov    r1,#0
Tunggu:    djnz    r1,tunggu
    ret
;
Angka:
    db    22h,0fah,0a4h,25h,71h,29h,28h,67h,20h,21h,22h
End


kalau ada pertanyaan, silahkan sampaikan di bagian komentar yaa... :)

----- *Jangan Lupa Komentarnya ya?* -----

Program Keypad matrix mikrokontroller AT89S52

Monggo yang mau mencoba program mikrokontroler keypad matrix, silahkan dicoba...

Port0 digunakan sbagai output data 7 segmen, port2 digunakan sebagai port kendali 7 segmen. dan port1 digunakan untuk inputan keypad matrix... :)


org 0h

MULAI:    MOV P1,#11101111B
    MOV A,P1
ANGKA1:    CJNE A,#11101110B,ANGKA7
    MOV P0,#10110111B
    MOV P2,#11111110B
    SJMP MULAI
ANGKA7:    CJNE A,#11101011B,BINTANG
    MOV P0,#10110011B
    MOV P2,#10111111B
    SJMP MULAI
BINTANG:CJNE A,#11100111B,ANGKA4
    MOV P0,#11011001B
    MOV P2,#11111110B
    SJMP MULAI
ANGKA4:    CJNE A,#11101101B,MULAI2
    MOV P0,#10110100B
    MOV P2,#11110111B
    SJMP MULAI2
   
MULAI2:    MOV P1,#11011111B
    MOV A,P1
ANGKA2:    CJNE A,#11011110B,ANGKA5
    MOV P0,#11000001B
    MOV P2,#11111101B
    LJMP MULAI2
ANGKA5:    CJNE A,#11011101B,ANGKA0
    MOV P0,#10011000B
    MOV P2,#11101111B
    LJMP MULAI2
ANGKA0:    CJNE A,#11010111B,ANGKA8
    MOV P0,#10000010B
    MOV P2,#11111110B
    LJMP MULAI2
ANGKA8:    CJNE A,#11011011B,MULAI3
    MOV P0,#10000000B
    MOV P2,#01111111B
    LJMP MULAI3
   
MULAI3:    MOV P1,#10111111B
    MOV A,P1
ANGKA3:    CJNE A,#10111110B,ANGKA6
    MOV P0,#10010001B
    MOV P2,#11111011B
    LJMP MULAI3
ANGKA6:    CJNE A,#10111101B,ANGKA9
    MOV P0,#10001000B
    MOV P2,#11011111B
    LJMP MULAI3
ANGKA9:    CJNE A,#10111011B,PAGAR
    MOV P0,#10010000B
    MOV P2,#11111110B
    LJMP MULAI3
PAGAR:    CJNE A,#10110111B,ANGKAA
    MOV P0,#10100110B
    MOV P2,#11111110B
    LJMP MULAI3

ANGKAA:    LJMP MULAI
END

semoga membantu... :)

----- *Jangan Lupa Komentarnya ya?* -----