
Program Assembly Control Suhu / Temperatur
Part 1
org 0h
hundreds equ 30h
tens equ 31h
ones equ 32h
start: call ADC
call Bin2Dec
call Display2SevenSegmen
sjmp start
;
;=================================================
;this subroutine is used to take data from ADC and
;keep to Accumulator;=================================================
ADC: mov A,P0
nop
nop
ret
;
;========================================================
;this subroutine is used to convert binary data from ADC
;become decimal 3 digit
;========================================================
Bin2Dec: mov b,#100d
div ab
mov hundreds,a
mov a,b
mov b,#10d
div ab
mov tens,a
mov ones,b
ret
;===============================================
;this subroutine is used to convert data ADC to
;8 x 7 segmen
;===============================================
Display2SevenSegmen:
Mov P2,#11111111b
mov A, Hundreds
mov DPTR,#Data7segmen
movc A,@A+DPTR
mov P0,A
clr P1.5
call delay
;
mov A,tens
mov DPTR,#Data7segmen
movc A,@A+DPTR
setb P1.5
mov P0,A
clr P2.6
call delay
;
mov A,ones
mov DPTR,#Data7segmen
movc A,@A+DPTR
setb P1.6
mov P0,A
clr P2.7
call delay
ret
;
delay: mov R0,#0
delay1: mov R2,#0fh
djnz R2,$
djnz R0,delay1
ret
;
Data7segmen: db 11000000b,11111001b,10100100b,10110000b,10011001b
db 10010010b,10000010b,11111000b,10000000b,10010000b
end
Part 2
org 0h
ratusan equ 30h
puluhan equ 31h
satuan equ 32h
start: call ADC
call Bin2Dec
call Display2SevenSegmen
sjmp start
;
;=================================================
;this subroutine is used to take data from ADC and
;keep to Accumulator
;=================================================
ADC: mov A,P1
nop
nop
ret
;
;========================================================
;this subroutine is used to convert binary data from ADC
;become decimal 3 digit
;========================================================
Bin2Dec:
mov b,#100d
div ab
mov ratusan,a
mov a,b
mov b,#10d
div ab
mov puluhan,a
mov satuan,b
ret
;
;===============================================
;this subroutine is used to convert data ADC to
;8 x 7 segmen
;===============================================
Display2SevenSegmen:
;Mov P2,#11111111b
mov A, ratusan
mov DPTR,#Data7segmen
movc A,@A+DPTR
setb P3.2
mov P2,A
clr P3.0
call delay
;
mov A,puluhan
mov DPTR,#Data7segmen
movc A,@A+DPTR
setb P3.0
mov P2,A
clr P3.1
call delay
;
mov A,satuan
mov DPTR,#Data7segmen
movc A,@A+DPTR
setb P3.1
mov P2,A
clr P3.2
call delay
ret
;
delay: mov R0,#0
delay1: mov R2,#01h
djnz R2,$
djnz R0,delay1
ret
;
Data7segmen:
db 00111111b,00000110b,01011011b,01001111b,01100110b
db 01101101b,01111101b,00000111b,01111111b,01101111b
end
Part 3
org 0h
ratusan equ 30h
puluhan equ 31h
satuan equ 32h
;=============
;Program Utama
;=============
start: call ADC
call Bin2Dec
call Tampil
sjmp start
;===========
; Fungsi ADC
;===========
ADC: mov A,P3
nop
nop
ret
;=========================
;Pengubah ke digit desimal
;=========================
Bin2Dec:mov b,#100d
div ab
mov ratusan,a
mov a,b
mov b,#10d
div ab
mov puluhan,a
mov satuan,b
ret
;======================
;tampilkan ke 7-segment
;======================
Tampil: Mov P2,#11111111b
mov A, ratusan
mov DPTR,#Data7segmen
movc A,@A+DPTR
mov P0,A
clr P2.7
call delay
mov A,puluhan
mov DPTR,#Data7segmen
movc A,@A+DPTR
setb P2.7
mov P0,A
clr P2.6
call delay
mov A,satuan
mov DPTR,#Data7segmen
movc A,@A+DPTR
setb P2.6
mov P0,A
clr P2.5
call delay
setb P2.5
mov P0,#10011100b
clr P2.4
call delay
setb P2.4
mov P0,#1000110b
clr P2.3
call delay
ret
;======
;Tunda
;======
delay: mov R0,#0
delay1: mov R2,#0fh
djnz R2,$
djnz R0,delay1
ret
Data7segmen: db 11000000b,11111001b,10100100b,10110000b,10011001b
db 10010010b,10000010b,11111000b,10000000b,10010000b
end
Semoga bermanfaat & selamat belajar!