Selasa, 31 Mei 2011
Op
org 0h
mulai:jnb p1.0,nyala1
jnb p1.1,nyala2
jnb p1.2,mati
ret
nyala1:call mulai
mov a,#0feh
puter: call mulai
mov p0,a
call delay
rl a
call mulai
cjne a,#0feh,puter
sjmp nyala1
nyala2:call mulai
mov a,#7fh
puter1:call mulai
mov p0,a
call delay
rr a
call mulai
cjne a,#7fh,nyala2
sjmp nyala2
mati:call mulai
mov p0,#0ffh
call mulai
sjmp mati
delay:mov r0,#0
delay1:mov r1,#0
delay2:mov r2,#01h
djnz r2,$
djnz r1,delay2
djnz r2,delay1
ret
end;
mulai:jnb p1.0,nyala1
jnb p1.1,nyala2
jnb p1.2,mati
ret
nyala1:call mulai
mov a,#0feh
puter: call mulai
mov p0,a
call delay
rl a
call mulai
cjne a,#0feh,puter
sjmp nyala1
nyala2:call mulai
mov a,#7fh
puter1:call mulai
mov p0,a
call delay
rr a
call mulai
cjne a,#7fh,nyala2
sjmp nyala2
mati:call mulai
mov p0,#0ffh
call mulai
sjmp mati
delay:mov r0,#0
delay1:mov r1,#0
delay2:mov r2,#01h
djnz r2,$
djnz r1,delay2
djnz r2,delay1
ret
end;
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
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
antrian
DSEG
ORG 20H
Nomor: DS 1
Loket: DS 1
Pencacah10: DS 1
Pencacah2: DS 1
RuasLoket: DS 1
RuasUmum10: DS 1
RuasUmum1: DS 1
Ruas1pul: DS 1
Ruas1sat: DS 1
Ruas2pul: DS 1
Ruas2sat: DS 1
Tombol1 BIT P3.0
Tombol2 BIT P3.7
ROM EQU 0
KonstantaWaktu EQU -50000
CSEG
ORG ROM
LJMP Mulai
ORG ROM+3H
RETI
ORG ROM+0BH
AJMP TimerInterrupt
ORG ROM+13H
RETI
ORG ROM+1BH
RETI
ORG ROM+23H
RETI
Mulai:
MOV Nomor,#0
MOV Loket,#1
MOV Pencacah2,#2
MOV Pencacah10,#10
ACALL Tampilanbaru1
ACALL Tampilanbaru2
MOV TMOD,#01H
MOV TH0,#High KonstantaWaktu
MOV TL0,#Low KonstantaWaktu
SETB ET0
SETB EA
SETB TR0
Utama:
LCALL Display
Sakelar1: JB Tombol1,Sakelar2
INC Nomor
Tekan1: LCALL Tampilanbaru1
LCALL Display
JNB Tombol1,Tekan1
MOV A,#99
CJNE A,Nomor,Sakelar2
MOV Nomor,#0
Sakelar2: JB Tombol2,Utama
INC Nomor
Tekan2: LCALL Tampilanbaru2
LCALL Display
JNB Tombol2,Tekan2
MOV A,#99
CJNE A,Nomor,Utama
MOV Nomor,#0
LJMP Utama
Display:
MOV P0,#0FFH
MOV P2,Ruas1pul
MOV P0,#11110111B
ACALL Tunggu
MOV P0,#0FFH
MOV P2,Ruas1sat
MOV P0,#11111011B
ACALL Tunggu
MOV P0,#0FFH
MOV P2,Ruas2pul
MOV P0,#11111101B
ACALL Tunggu
MOV P0,#0FFH
MOV P2,Ruas2sat
MOV P0,#11111110B
ACALL Tunggu
MOV P0,#0FFH
MOV P2,RuasLoket
MOV P0,#10111111B
ACALL Tunggu
MOV P0,#0FFH
MOV P2,RuasUmum10
MOV P0,#11011111B
ACALL Tunggu
MOV P0,#0FFH
MOV P2,RuasUmum1
MOV P0,#11101111B
ACALL Tunggu
RET
Tunggu: MOV R6,#3
TungguLagi: MOV R7,#250
DJNZ R7,$
DJNZ R6,TungguLagi
MOV P0,#0FFH
RET
TimerInterrupt:
Push PSW
Push Acc
MOV TL0,#Low KonstantaWaktu
MOV TH0,#High KonstantaWaktu
DJNZ Pencacah10,SelesaiInterupsi
MOV Pencacah10,#10
DJNZ Pencacah2,SelesaiInterupsi
MOV Pencacah2,#2
INC Loket
MOV A,#3
CJNE A,Loket,Detik
MOV Loket,#1
Detik:
ACALL Umum
SelesaiInterupsi:
Pop Acc
Pop PSW
RETI
Umum:
MOV A,#1
CJNE A,Loket,Loket2
MOV RuasLoket,#0CFH
MOV A,Ruas1pul
MOV RuasUmum10,A
MOV A,Ruas1sat
MOV RuasUmum1,A
JMP Kembali
Loket2:
MOV A,#2
CJNE A,Loket,Kembali
MOV RuasLoket,#092H
MOV A,Ruas2pul
MOV RuasUmum10,A
MOV A,Ruas2sat
MOV RuasUmum1,A
Kembali:
RET
Tampilanbaru1:
MOV R0,#Ruas1pul
MOV A,Nomor
MOV P1,A
Ruas2Digit: MOV B,#10
DIV AB
ACALL Ruas1Digit
MOV A,B
Ruas1Digit: ACALL JadikanRuas
MOV @R0,A
INC R0
RET
Tampilanbaru2:
MOV R0,#Ruas2pul
MOV A,Nomor
ADD A,#128
MOV P1,A
MOV A,Nomor
RuasDuaDigit: MOV B,#10
DIV AB
ACALL RuasSatuDigit
MOV A,B
RuasSatuDigit: ACALL JadikanRuas
MOV @R0,A
INC R0
RET
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
ORG 20H
Nomor: DS 1
Loket: DS 1
Pencacah10: DS 1
Pencacah2: DS 1
RuasLoket: DS 1
RuasUmum10: DS 1
RuasUmum1: DS 1
Ruas1pul: DS 1
Ruas1sat: DS 1
Ruas2pul: DS 1
Ruas2sat: DS 1
Tombol1 BIT P3.0
Tombol2 BIT P3.7
ROM EQU 0
KonstantaWaktu EQU -50000
CSEG
ORG ROM
LJMP Mulai
ORG ROM+3H
RETI
ORG ROM+0BH
AJMP TimerInterrupt
ORG ROM+13H
RETI
ORG ROM+1BH
RETI
ORG ROM+23H
RETI
Mulai:
MOV Nomor,#0
MOV Loket,#1
MOV Pencacah2,#2
MOV Pencacah10,#10
ACALL Tampilanbaru1
ACALL Tampilanbaru2
MOV TMOD,#01H
MOV TH0,#High KonstantaWaktu
MOV TL0,#Low KonstantaWaktu
SETB ET0
SETB EA
SETB TR0
Utama:
LCALL Display
Sakelar1: JB Tombol1,Sakelar2
INC Nomor
Tekan1: LCALL Tampilanbaru1
LCALL Display
JNB Tombol1,Tekan1
MOV A,#99
CJNE A,Nomor,Sakelar2
MOV Nomor,#0
Sakelar2: JB Tombol2,Utama
INC Nomor
Tekan2: LCALL Tampilanbaru2
LCALL Display
JNB Tombol2,Tekan2
MOV A,#99
CJNE A,Nomor,Utama
MOV Nomor,#0
LJMP Utama
Display:
MOV P0,#0FFH
MOV P2,Ruas1pul
MOV P0,#11110111B
ACALL Tunggu
MOV P0,#0FFH
MOV P2,Ruas1sat
MOV P0,#11111011B
ACALL Tunggu
MOV P0,#0FFH
MOV P2,Ruas2pul
MOV P0,#11111101B
ACALL Tunggu
MOV P0,#0FFH
MOV P2,Ruas2sat
MOV P0,#11111110B
ACALL Tunggu
MOV P0,#0FFH
MOV P2,RuasLoket
MOV P0,#10111111B
ACALL Tunggu
MOV P0,#0FFH
MOV P2,RuasUmum10
MOV P0,#11011111B
ACALL Tunggu
MOV P0,#0FFH
MOV P2,RuasUmum1
MOV P0,#11101111B
ACALL Tunggu
RET
Tunggu: MOV R6,#3
TungguLagi: MOV R7,#250
DJNZ R7,$
DJNZ R6,TungguLagi
MOV P0,#0FFH
RET
TimerInterrupt:
Push PSW
Push Acc
MOV TL0,#Low KonstantaWaktu
MOV TH0,#High KonstantaWaktu
DJNZ Pencacah10,SelesaiInterupsi
MOV Pencacah10,#10
DJNZ Pencacah2,SelesaiInterupsi
MOV Pencacah2,#2
INC Loket
MOV A,#3
CJNE A,Loket,Detik
MOV Loket,#1
Detik:
ACALL Umum
SelesaiInterupsi:
Pop Acc
Pop PSW
RETI
Umum:
MOV A,#1
CJNE A,Loket,Loket2
MOV RuasLoket,#0CFH
MOV A,Ruas1pul
MOV RuasUmum10,A
MOV A,Ruas1sat
MOV RuasUmum1,A
JMP Kembali
Loket2:
MOV A,#2
CJNE A,Loket,Kembali
MOV RuasLoket,#092H
MOV A,Ruas2pul
MOV RuasUmum10,A
MOV A,Ruas2sat
MOV RuasUmum1,A
Kembali:
RET
Tampilanbaru1:
MOV R0,#Ruas1pul
MOV A,Nomor
MOV P1,A
Ruas2Digit: MOV B,#10
DIV AB
ACALL Ruas1Digit
MOV A,B
Ruas1Digit: ACALL JadikanRuas
MOV @R0,A
INC R0
RET
Tampilanbaru2:
MOV R0,#Ruas2pul
MOV A,Nomor
ADD A,#128
MOV P1,A
MOV A,Nomor
RuasDuaDigit: MOV B,#10
DIV AB
ACALL RuasSatuDigit
MOV A,B
RuasSatuDigit: ACALL JadikanRuas
MOV @R0,A
INC R0
RET
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
Langganan:
Postingan (Atom)