
Kumpulan Program Assembly Tugas
Counter
org 0h
Start: Mov TMOD,#00000111b ; mode 3 counter 8 bit counter 1
Setb TR0 ; TR1 = 1, start counting
Get: Mov A, TL0 ; A = TL1
CPL A ; A = NOT A
Mov P0, A ; P0 = A
Sjmp Get ; Looping Forever
End
Experiment Clock Display
second equ 30h
secondTens equ 31h
secondOnes equ 32h
counter20 equ 33h
;
Org 0h
sjmp Start
Org 0bh
Ljmp Interrupt_Timer0
;
Start: mov P3,#11111111b
mov second,#0
call InitTimer
;
Forever:
call ClockDisplay
sjmp Forever ;
;
Interrupt_Timer0:
mov tl0,#0b0h
mov th0,#03ch
djnz Counter20, EndInterrupt
mov Counter20,#20
call DoClock
EndInterrupt:
reti
;
DoClock:
inc second
mov A,second
cjne A,#60,Update
mov second,#0
Update:mov A,second
mov B,#10
DIV AB
mov SecondTens,A
mov SecondOnes,B
ret
;
ClockDisplay:
Setb P2.7
Mov DPTR,#Decoder7Segmen
mov A,secondOnes
Movc A,@A+DPTR
Mov P0,A
Clr P2.7
call delay
;
Setb P2.7
Mov DPTR,#Decoder7Segmen
mov A,secondTens
Movc A,@A+DPTR
Mov P0,A
Clr P2.6
call delay
ret
;
InitTimer:
mov TMOD,#00000001b
mov tl0,#0b0h
mov th0,#03ch
setb ET0 ;Enable Timer 0 Interrupt
setb EA ;Master Interrupt Enable
setb TR0 ;Clock start running
ret
;
;=============================================
;subroutine delay created to rise delay time
;=============================================
delay: mov R1,#255
del1: mov R2,#255
del2: djnz R2,del2
djnz R1,del1
ret
;========================================
; L O O K U P T A B L E
; Decode to Seven Segmen -> g f e d c b a
;========================================
Decoder7Segmen:
DB 11000000b,11111001b,10100100b,10110000b,10011001b
DB 10010010b,10000010b,11111000b,10000000b,10010000b
;
End
Input Output (I/O)
$mod51
;----------------
; MAIN PROGRAM
;----------------
Main:
MOV A,P2 ; Port 2 sebagai input, dan Accumulator(A) siap menerima ; data dari port 0
MOV P0,A ; Port 0 sebagai output yang menerima data dari accumulator
SJMP Main : kembali ke Main
;---------------
; delay 500 ms
;---------------
DELAY500MS:
PUSH ACC
PUSH 00H
MOV A,#032H ; 500 milli second
X10MS: CALL DELAY10MS
DJNZ ACC,X10MS
POP 00H
POP ACC
RET
;-------------
; DELAY 10 ms
;-------------
DELAY10MS:
PUSH ACC
PUSH 00H
MOV 00H,#050H
D10MS1: MOV A,#0C8H
DJNZ ACC,$
DJNZ R0,D10MS1
POP 00H
POP ACC
RET
END
Experiment Seven Segment
ORG 00H
MULAI : MOV DPTR,#TULISAN
MOV R6,#05H
ULANG : CLR A
MOVC A,@A+DPTR
INC DPTR
MOV P0,A
MOV P2,A
;MOV P1,#011H
;MOV P2,#001H
;RR A
ACALL TUNDA
DJNZ R6,ULANG
SJMP MULAI
TUNDA: MOV R0, #05H
TUNDA1: MOV R1, #0EFH
TUNDA2: MOV R2, #0FFH
TUNDA3: NOP
DJNZ R2,TUNDA3
DJNZ R1,TUNDA2
DJNZ R0,TUNDA1
RET
TULISAN:DB 00111111B, 006H, 01011011B,01001111B ,01100110B
ANGKA: DB 11111110B,11111101B,11111011B,11110111B,11101111B,1101111B,10111111B,01111111B,10111111B,11011111B,11101111B,11110111B,11111011B,11111101B,11111110B
END
Menghidupkan Lampu Pada Port 0
Part 1
; Program menghidupkan lampu pada Port 0 dengan cara
; menekan tombol 1 pada Port 1 dan mematikan dengan cara
; menekan tombol 2 pada port 1
ORG 00H
MULAI: MOV A, P1
CJNE A, #0FEh, LONCAT
MOV P0, #00H
SJMP MULAI
LONCAT: CJNE A, #0FDh, MULAI
MOV P0, #0FFh
SJMP MULAI
END
Part 2
; Program menghidupkan lampu pada Port 0 dengan
; menekan tombol 1 untuk menghidupkan lampu 1, tombol 2
; untuk menghidupkan lampu 2 dan seterusnya.
ORG 00H
MULAI: MOV A, P1
CJNE A, #0FEH,LONCAT01
MOV P0, #0FEH
SJMP MULAI
LONCAT01: CJNE A, #0FDH, LONCAT02
MOV P0, #0FDH
SJMP MULAI
LONCAT02: CJNE A, #0FBH, LONCAT03
MOV P0, #0FBH
SJMP MULAI
LONCAT03: CJNE A, #0F7H, LONCAT04
MOV P0, #0F7H
SJMP MULAI
LONCAT04: CJNE A, #0EFh, LONCAT05
MOV P0, #0EFh
SJMP MULAI
LONCAT05: CJNE A, #0DFH, LONCAT06
MOV P0, #0DFH
SJMP MULAI
LONCAT06: CJNE A, #0BFH, LONCAT07
MOV P0, #0BFH
SJMP MULAI
LONCAT07:
CJNE A, #07FH, MULAI
MOV P0, #07FH
SJMP MULAI
END
Part 3
; Program menghidupkan lampu pada Port 1 dengan cara
; menekan tombol 1 untuk menghidupkan lampu 1, tombol 2
; untuk menghidupkan lampu 2 dan seterusnya dengan waktu
; nyala yang berbeda sesuai dengan pengaturan lamanya
; delay.
;======================================================================
ORG 00H
MULAI: MOV A, P1
CJNE A, #0FEH, LONCAT01
MOV P0, #0FEH
ACALL DELAY1
MOV P0, #0FFH
SJMP MULAI
LONCAT01: CJNE A, #0FDH, LONCAT02
MOV P0, #0FDH
ACALL DELAY2
MOV P0, #0FFH
SJMP MULAI
LONCAT02: CJNE A, #0FBH, LONCAT03
MOV P0, #0FBH
ACALL DELAY3
MOV P0, #0FFH
SJMP MULAI
LONCAT03: CJNE A, #0F7H, LONCAT04
MOV P0, #0F7H
ACALL DELAY4
MOV P0, #0FFH
SJMP MULAI
LONCAT04: CJNE A, #0EFH, LONCAT05
MOV P0, #0EFH
ACALL DELAY5
MOV P0, #0FFH
SJMP MULAI
LONCAT05: CJNE A, #0DFH, LONCAT06
MOV P0, #0DFH
ACALL DELAY6
MOV P0, #0FFH
SJMP MULAI
LONCAT06: CJNE A, #0BFh, LONCAT07
MOV P0, #0BFH
ACALL DELAY7
MOV P0, #0FFH
SJMP MULAI
LONCAT07: CJNE A, #07FH, MULAI
MOV P0, #07FH
ACALL DELAY8
MOV P0, #0FFH
SJMP MULAI
; Sub Routin Delay
DELAY1: MOV R0, #01H
ACALL TUNDA1
RET
DELAY2: MOV R0, #04H
ACALL TUNDA1
RET
DELAY3: MOV R0, #08H
ACALL TUNDA1
RET
DELAY4: MOV R0, #0BH
ACALL TUNDA1
RET
DELAY5: MOV R0, #0FH
ACALL TUNDA1
RET
DELAY6: MOV R0, #014H
ACALL TUNDA1
RET
DELAY7: MOV R0, #018H
ACALL TUNDA1
RET
DELAY8: MOV R0, #01BH
ACALL TUNDA1
RET
; Sub Routin Tunda
TUNDA1: MOV R1, #0FFH
TUNDA2: MOV R2, #0FFH
TUNDA3: NOP
DJNZ R2, TUNDA3
DJNZ R1, TUNDA2
DJNZ R0, TUNDA1
RET
END
Experiment Register
Part 1
$mod51
;----------------
; MAIN PROGRAM
;----------------
Main:
setb rs1
setb rs0
mov r0,#88H
mov r1,#88H
mov r2,#88H
mov r3,#88H
mov r4,#88H
mov r5,#88H
mov r6,#88H
mov r7,#88H
END
Part 2
$mod51
;----------------
; MAIN PROGRAM
;----------------
Main: mov r0,#09H
mov r1,#70H
mov r2,#02H
mov r3,#72H
mov r4,#64H
mov r5,#03H
mov r6,#40H
mov r7,#55H
END
Part 3
ORG 00H
MULAI: MOV P0, #0f0h
ACALL TUNDA
MOV P0, #00fh
ACALL TUNDA
SJMP MULAI
TUNDA: MOV R0, #01H
TUNDA1: MOV R1, #0EFH
TUNDA2: MOV R2, #0FFH
TUNDA3: NOP
DJNZ R2,TUNDA3
DJNZ R1,TUNDA2
DJNZ R0,TUNDA1
RET
END
Mengaktifkan Relay
$mod51
;----------------
; MAIN PROGRAM
;----------------
Main:
CLR P3.0 ; Mengaktifkan Relay 1
CLR P3.1 ; Mengaktifkan Relay 2
SJMP Main ; Kembali ke Main
;---------------
; delay 500 ms
;---------------
DELAY500MS:
PUSH ACC
PUSH 00H
MOV A,#032H ; 500 milli second
X10MS: CALL DELAY10MS
DJNZ ACC,X10MS
POP 00H
POP ACC
RET
;-------------
; DELAY 10 ms
;-------------
DELAY10MS:
PUSH ACC
PUSH 00H
MOV 00H,#050H
D10MS1: MOV A,#0C8H
DJNZ ACC,$
DJNZ R0,D10MS1
POP 00H
POP ACC
RET
END
Tugas Kelas Pemula
ORG 00H
MOV A, #0C3H
MOV B, #022H
DIV AB
MOV 20H, B
MOV 21H, A
END
ORG 00H
MOV A, #06H
INC A
MOV R0, #09H
INC R0
MOV 15H, #04H
INC 15H
MOV R1, #20H
MOV 20H, #00H
MOV 21H, #50H
INC @R1
INC R1
INC @R1
END
ORG 00H
MOV DPH, #012H
MOV DPL, #0FEH
INC DPTR
INC DPTR
INC DPTR
INC DPTR
END
ORG 00H
MOV A, #78H
MOV R2, #55H
SETB C
ADDC A, R2
MOV 20H, A
DA A
MOV 21H, A
END
ORG 00H
MOV A, #001101010B
JBC ACC.1, LONCAT
MOV R1, #77H
LONCAT: MOV R2, #66H
END
ORG 00H
MOV P1, #0000101B
MOV A, #10010010B
JB P1.3, LOMP1
JB ACC.3, LOMP2
NOP
LOMP1: MOV R1, #88H
LOMP2: MOV R2, #66H
END
Semoga bermanfaat & selamat belajar!