Professional Documents
Culture Documents
yoyok sudibyo
farid alpenda
andang pramono
imamsetiadi
judul: thermometer dengan tampilan 7 segmen
$mod51
org 0000h
;------PENGOLAH SUHU---------------
awal:
mov r0,p2 ; masukan data Port 2 ke reg 0 R0, data addr
mov a,r0 ; pindahkan data reg 0 ke akumulator A,R1
mov b,#0ah ; b di isi 10 desimal data addr,# data
div ab ; isi a di bagi isi b (hasil di reg a , sisanya di reg b) AB
mov data_koma,b ; pindahkan isi register b ke data koma data addr,data
add a,#14h ; a di isi 14 h A,# data
mov data_awal,a ;pindahkan data a ke data_awal data addr,A
mov b,#0ah ; pindahkan 10 ke reg b data addr,# data
div ab ; isi a di bagi isi b AB
mov b,#06h ; b di isi 06 data addr,# data
mul ab ; a di kalikan dengan b AB
add a,data_awal ; isi a di tambah data awal A,data addr
mov suhu_jadi,a ; isi a pindahkan ke suhu_jadi data addr,A
anl a,#0fh ; and kan isi a dengan data 0fh A, # data
add a,#11010000b ; isi a di tambahkan D0h A,# data
mov satuan,a ; isi a di pindahkan ke hasil data satuan data addr,A
mov a,suhu_jadi ; nilai suhu jadi di pindahkan ke reg a A, @ R0
anl a,#0fh ; and kan isi a dengan data 0F h A, # data
swap a ; nible rendah i tukar neble tinggi A
add a,#10110000b ; nilai a di tambahkan D0h A,# data
mov puluhan,a ; hasil data puluhan data addr,A
mov a,data_koma ; nilai data_koma di pindahkan ke a A, @ R0
add a,#11100000b ;nilai a di tambahkan D0h A,# data
mov koma,a ; hasil data koma data addr,A
;-------DISPLAY SUHU------------------
Code addr
mov p1,satuan ; data addr,data
mov p0,#00000010b ;pindahkan nilai data #00000010b ke port 0 data addr,# data
call delay6 ;panggil delay6
Code addr
dec a ; kurangkan a -1 A
ret ;
end
Operasi ADDRES HEXA OPCODE Byte
0000
R0, data addr ((R0))←(dierct) 0000 A8 A0 2
(A)←(R1) 0002 E8 1
data addr,# data (direct)← # data 0003 75 F0 0A 3
(A)15-8,(B)7-0←(A)/(B) 0006 84 1
data addr,data (direct)←(direct) 0007 85 F0 21 3
(A)←(A)+# data 000A 24 14 2
data addr,A (direct)←(A) 000C F5 19 2
data addr,# data (direct)← # data 000E 75 F0 0A 3
(A)15-8,(B)7-0←(A)/(B) 0011 84 1
data addr,# data (direct)← # data 0012 75 F0 06 3
(A) 7-0←(A) x(B) (B)15-8 0015 A4 1
A,data addr (A)←(A)+(direct) 0016 25 19 2
data addr,A (direct)←(A) 0018 F5 20 2
(A)←(A)۸ # data 001A 54 0F 2
(A)←(A)+# data 001C 24 D0 2
data addr,A (direct)←(A) 001E F5 23 2
(A)←((R0)) 0020 E5 20 2
(A)←(A)۸ # data 0022 54 0F 2
(A3-0)<----> (A7-4) 0024 C4 1
(A)←(A)+# data 0025 24 B0 2
data addr,A (direct)←(A) 0027 F5 24 2
(A)←((R0)) 0029 E5 21 2
(A)←(A)+# data 002B 24 E0 2
data addr,A (direct)←(A) 002D F5 22 2
(PC)←(PC)+3,(SP)←(SP)+1
[(SP)]←(PC7-0),(SP)←(SP)+1
,[(Sp)]←(PC15-8)
Code addr (PC)←addr15-0 0037 12 00 52 3
data addr,data (direct)←(direct) 003A 85 23 90 3
data addr,# data (direct)← # data 003D 75 80 02 3
0040 12 00 52 3
data addr,data (direct)←(direct) 0043 85 24 90 3
data addr,# data (direct)← # data 0046 75 80 04 3
(PC)←(PC)+3,(SP)←(SP)+1
[(SP)]←(PC7-0),(SP)←(SP)+1
,[(Sp)]←(PC15-8)
Code addr (PC)←addr15-0 0049 12 00 52 3
(A)←(A)-1 004C 14 1
(PC)←(PC) + 2
(R2)←(R2) - 1 if (R2) >0 or
(R2)< 0 then (PC)←(PC)
R2,code addr +rel 0058 DA FE 2
(PC)←(PC) + 2
(R1)←(R1) - 1 if (R1) >0 or
(R1)< 0 then (PC)←(PC)
R1,code addr +rel 005A D9 FA 2
(PC)←(PC) + 2
(R0)←(R0) - 1 if (R0) >0 or
(R0)< 0 then (PC)←(PC)
R0,code addr +rel 005C D8 F6 2
005E 22 1
Machine cycle (clock)
1: $mod51
2:
3: N 0019 data_awal equ 19h ;nama lain alamat memory (19h)
4: N 0020 suhu_jadi equ 20h ;pengganti alamat memory (20h)
5: N 0021 data_komaequ 21h ;pengganti alamat memory (21h)
6: N 0022 koma equ 22h ;pengganti alamat memory (22h)
7: N 0023 satuan equ 23h ;pengganti alamat memory (23h)
8: N 0024 puluhan equ 24h ;pengganti alamat memory (24h)
9:
10:
11:
12: N 0000 org 0000h
13:
14: ;------PENGOLAH SUHU---------------
15: 0 awal:
16: 0 A8 A0 mov r0,p2 ; masukan data Port 2 ke reg 0
17: 2 E8 mov a,r0 ; pindahkan data reg 0 ke akumulator
18: 3 75 F0 0A mov b,#0ah; b di isi 10 desimal
19: 6 84 div ab ; isi a di bagi isi b (hasil di reg a , sisanya di reg b
20: 7 85 F0 21 mov data_ ; pindahkan isi register b ke data koma
21: 000A 24 14 add a,#14h; a di isi 14 h
22: 000C F5 19 mov data_ ;pindahkan data a ke data_awal
23: 000E 75 F0 0A mov b,#0a ; pindahkan 10 ke reg b
24: 11 84 div ab ; isi a di bagi isi b
25: 12 75 F0 06 mov b,#06 ; b di isi 06
26: 15 A4 mul ab ; a di kalikan dengan b
27: 16 25 19 add a,data ; isi a di tambah data awal
28: 18 F5 20 mov suhu_j; isi a pindahkan ke suhu_jadi
29: 001A 54 0F anl a,#0fh ; and kan isi a dengan data 0fh
30: 001C 24 D0 add a,#110; isi a di tambahkan D0h
31: 001E F5 23 mov satuan; isi a di pindahkan ke hasil data satuan
32: 20 E5 20 mov a,suhu; nilai suhu jadi di pindahkan ke reg a
33: 22 54 0F anl a,#0fh ; and kan isi a dengan data 0F h
34: 24 C4 swap a ; nible rendah i tukar neble tinggi
35: 25 24 B0 add a,#10 ; nilai a di tambahkan D0h
36: 27 F5 24 mov puluh ; hasil data puluhan
37: 29 E5 21 mov a,dat ; nilai data_koma di pindahkan ke a
38: 002B 24 E0 add a,#11 ;nilai a di tambahkan D0h
39: 002D F5 22 mov koma,; hasil data koma
40:
41:
42: ;-------DISPLAY SUHU------------------
43:
44: 002F 74 09 mov a,#09 ;masukan nilai a sebesar 09h
45: 31 85 22 90 lagi: mov p1,ko ;data pada koma di keluarkan ke Port 1
46: 34 75 80 01 mov p0,#0 ;pindahkan nilai data #00000001b ke port 0
47: 37 12 00 52 call delay6 ; panggil delay6
48:
49: 003A 85 23 90 mov p1,sa ;
50: 003D 75 80 02 mov p0,#0 ;pindahkan nilai data #00000010b ke port 0
51: 40 12 00 52 call delay6 ;panggil delay6
52:
53: 43 85 24 90 mov p1,pu ;
54: 46 75 80 04 mov p0,#0 ;pindahkan nilai data #00000100b ke port 0
55: 49 12 00 52 call delay6 ;panggil delay6
56:
57: 004C 14 dec a ; kurangkan a -1
58: 004D B4 00 E1 cjne a,#00h; compare jump not equivalen
59: 50 80 AE jmp awal ;lompat ke awal
60:
61: 52 delay6:
62: 52 78 01 mov r0,#0 ;
63: 54 delay7:
64: 54 79 09 mov r1,#0 ;
65: 56 delay8:
66: 56 7A 00 mov r2,#0 ;
67: 58 DA FE djnz r2,$ ;
68: 005A D9 FA djnz r1,del ;
69: 005C D8 F6 djnz r0,del ;
70:
71: 005E 22 ret ;
72: end
73:
74:
75:
LIST OF SYMBOLS
=============================
neble tinggi