Selasa, 31 Mei 2011

jam digital

DSEG
org    20H

pencacah2:    DS    1
pencacah10:    DS    1
pencacah60:    DS    1
detik:        DS    1
detikpul:    DS    1
detiksat:    DS    1
menit:        DS    1
menitpul:    DS    1
menitsat:    DS    1
jam:        DS    1
jampul:        DS    1
jamsat:        DS    1
ROM        EQU    0
konstantawaktu    EQU    -50000

CSEG
ORG    ROM
LJMP    MULAI

org    ROM+3H
RETI

org    ROM+0BH
AJMP    detikinterrupt

org    ROM+13H
RETI

org    ROM+1BH
RETI

org    rom+23H
RETI

MULAI:
    MOV pencacah2,#2
    MOV pencacah10,#10
    MOV pencacah60,#60
    MOV detik,#0
    MOV menit,#0
    Mov jam,#0

Tampil:    acall perbaruitampilan

    MOV    TMOD,#01H
    MOV    TH0,#High konstantawaktu
    MOV    TL0,#Low konstantawaktu
    SETB    ET0
    SETB    EA
    SETB    TR0

Utama:
    acall perbaruitampilan
    MOV    p0,#0FFH
    MOV    p2,detikpul
    MOV    p0,#0FDH
    acall tunggusebentar
    MOV    p0,#0FFH
    MOV    p2,detiksat
    MOV    p0,#0FEH
    acall tunggusebentar
    acall perbaruitampilan
    MOV    p0,#0FFH
    MOV    p2,menitPul
    MOV    p0,#0FEH
    acall tunggusebentar
    MOV    p0,#0FFH
    MOV    p2,menitSat
    MOV    p0,#0FEH
    acall tunggusebentar
    MOV    p0,#0FFH
    MOV    p2,jamPul
    MOV    p0,#0FDH
    acall tunggusebentar
    MOV    p0,#0FFH
    MOV    p2,jamsat
    MOV    p0,#0FEH
    acall tunggusebentar
    JMP    Utama

tunggusebentar:
    MOV    R6,#3
tunggulagi:
    MOV    R7,#175
    DJNZ    R7,$
    DJNZ    R6,tunggulagi
    MOV    R6,#0FFH
    RET

detikinterrupt:
    push    PSW
    push    Acc
    MOV    TL0,#Low konstantawaktu
    MOV    TH0,#High konstantawaktu
    DJNZ    pencacah10,selesaiInterupsi
    MOV    pencacah10,#10

    DJNZ    pencacah2,selesaiInterupsi
    MOV    pencacah2,#2

    acall clok

selesaiInterupsi:
    pop    Acc
    pop    PSW
    RETI
clok:
satudetik:
    INC    detik
    MOV    A,detik
    CJNE    A,#60,selesai
    MOV    detik,#0

    INC    menit
    MOV    A,menit
    CJNE    A,#59,selesai
    MOV    detik,#0

selesai:
    RET
perbaruitampilan:
    MOV    R0,#detikpul

    MOV    A,menit
ruasduadigit:
    MOV    B,#10
    DIV    AB
    acall ruassatudigit
    MOV    A,B
ruassatudigit:
    MOV    @R0,A
    INC    R0

jadikanruas:
    INC    A
    MOVC    A,@A+pc
    RET

kombinasiruas:
;        -abcdefg
    DB    10000001B    ;0
    DB    11001111B    ;1
    DB    10010010B    ;2
    DB    10000110B    ;3
    DB    11001100B    ;4
    DB    10100100B    ;5
    DB    10100000B    ;6
    DB    10001111B    ;7
    DB    10000000B    ;8
    DB    10000100B    ;9

    END

2 komentar:

  1. mas kenapa waktu di compile error?

    BalasHapus
  2. ini make sistem dasar . . make program assembler (ASM)
    ntar compile nya make CMD

    BalasHapus