KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
T
T
À
À
I
IL
L
I
I
Ệ
Ệ
U
UH
H
Ư
Ư
Ớ
Ớ
Ệ
Ệ
M
M-
-T
T
H
H
Ự
Ự
C
CH
H
À
À
N
N
H
H
• Nắm vững tập lệnh của vi điều khiển MCS-51.
• Nắm vững phương pháp vận hành các Timer và Counter có trong chip vi điều khiển.
• Biết cách lập trình Timer và Counter ở các chế độ khác nhau, cách tính toán các khoảng thời gian định thời
mong muốn.
• Thiết kế và điều khiển được các ứng dụng có sử dụng Timer và Counter như: đồng hồ, bộ đếm sản phẩm,
…
K. H THNG IU KHIN TIMER/COUNTER.
Bi 1: Chng trỡnh iu khin m liờn tc s lng xung (0000 9999) c a vo chõn T1 ca vi iu
khin v hin th s lng xung ny lờn cỏc LED 7 on (PULSE c ni vi chõn T1, LED7 LED4
c ni vi Port0, SEL IN1 c ni vi Port1).
Giỏo trỡnh thc hnh vi x lý. 3 Biờn son: Phm Quang Trớ
1 Trỡnh t tin hnh thớ nghim:
1.1 Kt ni thit b thớ nghim.
Tt ngun cp cho mụ hỡnh thớ nghim.
Dựng dõy bus 4 ni J64 (PORT1) khi vi iu khin vi J1 (SEL IN1) khi LED 7 on (chỳ ý l ta
ch ni 4 bit thp ca J64 vi J1).
Dựng dõy bus 8 ni J63 (PORT0 / DATA) khi vi iu khin vi J4 (7SEG IN MUL) khi gii mó.
Dựng dõy bus 1 ni J33 (PULSE) khi to xung vi J66 (PORT3 / FUNCTION) khi vi iu khin
(chỳ ý l ta ch ni bit 5 (chõn T1) ca J66 v J33 li vi nhau).
Dựng dõy bus 3 ni J113 (POWER) khi to xung v J110 (POWER) khi LED 7 on vi ngun
+5V khi ngun.
LED 7 ẹOAẽN
7SEG7 IN
SEL IN2POWER SEL IN1
7SEG6 IN 7SEG5 IN 7SEG4 IN
7SEG7 IN
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
A
B
C
D
E
F
G
A
B
C
D
E
F
G
AD0 A
AD1 B
AD2 C
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2
3
4
5
6
7
8
9
1
RP1
56
LED5
Q3
A1015
+5V
LED4
Q4
A1015
+5V
R11
1K
R12
1K
C3
10uF
R1
10k
+5V
A
B
U1(P3.5/T1)
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 1: Chương trình điều khiển đếm liên tục số lượng xung (0000 – 9999) được đưa vào chân T1 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
Giáo trình thực hành vi xử lý. 4 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
BCD4TO7SEG
(XEM CTC NÀY TẠI VÍ DỤ B6 M7I)
(XEM CTC NÀY TẠI PHẦN HƯỚNG
DẪN CỦA VÍ DỤ K3)
;***************************************************
;CHUONG TRINH DIEU KHIEN TIMER/COUNTER DEM (0000 - 9999) VA HIEN THI XUNG TAI CHAN T1
;***************************************************
;KET NOI: PORT0 -> 7 SEGMENT (DP -> A)
; PORT1 -> SELECT LED
; PULSE -> T1 PIN
;***************************************************
ORG 00H
MAIN:
MOV TMOD,#50H ;COUNTER 16 BIT (MODE 1)
MOV TH1,#0 ;XOA COUNTER 1
MOV TL1,#0
SETB TR1 ;CHO PHEP COUNTER BAT DAU HOAT DONG
MP1:
MOV R7,TH1 ;CHUYEN SO XUNG DEM DUOC (TH1, TL1) RA HIEN THI
MOV R6,TL1
ACALL BIN16TOBCD ;DOI MA BIN SANG MA BCD
ACALL BCD4TO7SEG ;DOI MA BCD SANG MA 7 DOAN
ACALL DISP7SEGMUL4 ;HIEN THI GIA TRI LEN LED
SJMP MP1
;***************************************************
BIN16TOBCD: ;CTC CHUYEN DOI SO BINARY 16 BIT (<= 9999) SANG SO BCD.
PUSH ACC
PUSH B
MOV B,#10
ACALL DIV16TO8 ;LAY R7,R6 CHIA CHO 10
PUSH B ;CAT SO HANG DON VI
DIVIDE:
CLR C
XCH A,R6 ;DICH BIT 7 CUA R6 VAO
RLC A ;CARRY, BIT 0 CUA R6
XCH A,R6 ;BANG 0.
XCH A,R7 ;DICH BIT CARRY VAO
RLC A ;BIT 0 CUA R7
XCH A,R7
RLC A ;DICH BIT 7 CUA R7 VAO A.
CJNE A,B,NOT_EQUAL ;XEM SO BIT DA DICH >=
SJMP A_GREATER_EQ_B ;SO CHIA CHUA ?
NOT_EQUAL:
JC BELOW ;N: THUONG SO = 0 TRONG R6.
A_GREATER_EQ_B:
SUBB A,B ;Y: SO DU CAT TRONG A.
XCH A,R6
ORL A,#1 ;THUONG SO = 1
XCH A,R6 ;CAT TRONG R6
BELOW:
DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN.
XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU.
POP ACC
POP 02H
RET
;***************************************************
BCD4TO7SEG: ;CTC GIAI MA TU SO BCD NEN SANG MA 7 DOAN (2 SO BCD NEN).
PUSH DPH ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH DPL
PUSH ACC
MOV DPTR,#CODE7SEG ;DIA CHI VUNG MA 7 DOAN
được nối với Port0, SEL IN1 được nối với Port1).
Giáo trình thực hành vi xử lý. 6 Biên soạn: Phạm Quang Trí
PUSH ACC ;CAT TAM THOI GIA TRI CAC THANH GHI
PUSH 00H
MOV A,#0F7H ;MA QUET
MOV R0,#63H ;DIA CHI VUNG MA HIEN THI
DISP:
MOV P0,@R0 ;XUAT MA HIEN THI
MOV P1,A ;XUAT MA QUET
LCALL DELAYLED
MOV P1,#0FFH ;CHONG LEM
DEC R0 ;LAY MA HIEN THI KE TIEP
RR A ;CHUYEN SANG LED KE TIEP
CJNE R0,#5FH,DISP ;KIEM TRA DA QUET XONG CHUA
POP 00H ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP ACC
RET
;***************************************************
DELAYLED: ;CHUONG TRINH CON TAO THOI GIAN TRE 2.5MS
PUSH 00H
PUSH 01H
MOV R1,#5
DEL:
MOV R0,#250
DJNZ R0,$
DJNZ R1,DEL
POP 01H
POP 00H
RET
END
AD7
AD6
AD5
AD4
AD3
AD2
AD1
A
B
C
D
E
F
G
A
B
C
D
E
F
G
AD0 A
AD1 B
AD2 C
AD3 D
AD4 E
AD5 F
AD6 G
A
B
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MAẽCH ẹIEU KHIEN TIMER/COUNTER (ẹO TAN SO XUNG)
MAẽCH ẹIEU KHIEN TIMER/COUNTER (ẹO TAN SO XUNG)MAẽCH ẹIEU KHIEN TIMER/COUNTER (ẹO TAN SO XUNG)
MAẽCH ẹIEU KHIEN TIMER/COUNTER (ẹO TAN SO XUNG)
LED7
Q4
A1015
+5V
R11
1K
R12
1K
C3
10uF
R1
10k
+5V
A
B
U1(P3.5/T1)
1.3 V lu gii thut v vit chng trỡnh iu khin.
;***************************************************
;CHUONG TRINH DIEU KHIEN TIMER/COUNTER DO TAN SO XUNG TAI CHAN T1
;***************************************************
;KET NOI: PORT0 -> 7 SEGMENT (DP -> A) PORT1 -> SELECT LED; PULSE -> T1 PIN
;***************************************************
ORG 00H ;DIEM NHAP RESET
SJMP MAIN
ORG 0BH ;DIEM NHAP ISR TIMER0
LJMP T0ISR
ORG 30H ;DIEM NHAP CHUONG TRINH CHINH
MAIN:
MOV TMOD,#51H ;TIMER1: COUNTER 16 BIT (MODE 1), TIMER0: TIMER 16 BIT (MODE 1)
MOV TH0,#HIGH(-50000) ;NAP GIA TRI THOI GIAN TRE 50 MS
MOV B,#10
ACALL DIV16TO8 ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG CHUC
MOV B,#10
MOV A,R6
DIV AB ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG TRAM, ACC CHUA SO HANG NGAN
SWAP A ;DUA SO HANG NGAN LEN 4 BIT CAO
POP B ;LAY SO HANG TRAM TU STACK
ORL A,B ;KET HOP SO HANG NGAN VA SO HANG TRAM
MOV R7,A ;R7 = NGAN - TRAM
POP ACC ;LAY SO HANG CHUC TU STACK
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6,A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************
DIV16TO8: ;CTC CHIA SO BINARY 16 BIT CHO SO BINARY 8 BIT.
PUSH 02H ;CAT THANH GHI R2
PUSH ACC ;CAT THANH GHI A
MOV R2,#16 ;CHO PHEP DICH 16 LAN
CLR A
DIVIDE:
CLR C
XCH A,R6 ;DICH BIT 7 CUA R6 VAO
RLC A ;CARRY, BIT 0 CUA R6
XCH A,R6 ;BANG 0.
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi
điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 –
LED4 được nối với Port0, SEL IN1 được nối với Port1).
Giáo trình thực hành vi xử lý. 9 Biên soạn: Phạm Quang Trí
MOV 60H,A ;CAT BCD HANG DON VI VAO O NHO
MOV A,R6 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 61H,A ;CAT BCD HANG CHUC VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0FH ;XOA 4 BIT CAO
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 62H,A ;CAT BCD HANG TRAM VAO O NHO
MOV A,R7 ;LAY SO BCD CAN GIAI MA
ANL A,#0F0H ;XOA 4 BIT THAP
SWAP A ;HOAN CHUYEN CAO - THAP
MOVC A,@A+DPTR ;LAY MA 7 DOAN TUONG UNG
MOV 63H,A ;CAT BCD HANG NGAN VAO O NHO
POP ACC ;PHUC HOI GIA TRI CHO CAC THANH GHI
POP DPL
POP DPH
RET
CODE7SEG: ;VUNG CHUA MA 7 DOAN (0 -> 9)
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
T0ISR: ;ISR TIMER0 - 50MS
CLR TR0
CLR TF0
MOV TH0,#HIGH(-50000) ;NAP GIA TRI THOI GIAN TRE 50 MS
MOV TL0,#LOW(-50000)
INC 40H ;TANG BIEN DEM SO LAN NGAT - 1 LAN = 50MS
SETB TR0
RETI
END
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 2: Chương trình điều khiển đo tần số của xung (0000 – 9999, đơn vị là Hz) được đưa vào chân T1 của vi
điều khiển và hiển thị tần số của xung này lên các LED 7 đoạn (PULSE được nối với chân T1, LED7 –
LED4 được nối với Port0, SEL IN1 được nối với Port1).
Giáo trình thực hành vi xử lý. 10 Biên soạn: Phạm Quang Trí
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 3: Chương trình điều khiển đo độ rộng của xung (đơn vị là ms) được đưa vào chân INT0 của vi điều khiển
và hiển thị độ rộng của xung này lên các LED 7 đoạn (PULSE được nối với chân INT0, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
Giáo trình thực hành vi xử lý. 11 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 4 nối J64 (PORT1) ở khối vi điều khiển với J1 (SEL IN1) ở khối LED 7 đoạn (chú ý là ta
chỉ nối 4 bit thấp của J64 với J1).
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J4 (7SEG IN MUL) ở khối giải mã.
• Dùng dây bus 1 nối J33 (PULSE) ở khối tạo xung với J66 (PORT3 / FUNCTION) ở khối vi điều khiển
C
D
E
F
G
A
B
C
D
E
F
G
AD0 A
AD1 B
AD2 C
AD3 D
AD4 E
AD5 F
AD6 G
A
B
C
D
E
F
G
A
B
C
D
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
33p
C2
33p
X1
12MHz
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MAÏCH ÑIEÀU KHIEÅN TIMER/COUNTER (ÑO ÑOÄ ROÄNG XUNG)
MAÏCH ÑIEÀU KHIEÅN TIMER/COUNTER (ÑO ÑOÄ ROÄNG XUNG)MAÏCH ÑIEÀU KHIEÅN TIMER/COUNTER (ÑO ÑOÄ ROÄNG XUNG)
MAÏCH ÑIEÀU KHIEÅN TIMER/COUNTER (ÑO ÑOÄ ROÄNG XUNG)
LED7
Q1
A1015
+5V
LED6
Q2
A1015
+5V
R2
1K
R1
10k
+5V
A
B
U1(P3.5/T1)
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 3: Chương trình điều khiển đo độ rộng của xung (đơn vị là ms) được đưa vào chân INT0 của vi điều khiển
và hiển thị độ rộng của xung này lên các LED 7 đoạn (PULSE được nối với chân INT0, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
Giáo trình thực hành vi xử lý. 12 Biên soạn: Phạm Quang Trí
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển tạo xung 1 Hz (sử dụng Timer) tại chân P1.0 và hiển thị mức logic
tại chân này lên LED. Tự lựa chọn phương pháp kết nối LED.
• Bài 2: Hãy viết chương trình điều khiển tạo xung 3 Hz (sử dụng Timer) tại chân P1.0 và hiển thị mức logic
tại chân này lên LED. Tự lựa chọn phương pháp kết nối LED.
• Bài 3: Hãy viết chương trình điều khiển tạo xung 1 Hz hoặc 3 Hz (sử dụng Timer) tại chân P1.0 tùy thuộc
vào ta nhấn hay nhả nút nhấn KEY0 và hiển thị mức logic tại chân này lên LED. Tự lựa chọn phương pháp
kết nối LED và nút nhấn.
• Bài 4: Hãy viết chương trình điều khiển đếm liên tục số lượng xung được đưa vào chân T0 của vi điều
khiển và hiển thị số lượng xung này lên các LED 7 đoạn. Tự lựa chọn phương pháp kết nối thiết bị tạo
xung và các LED 7 đoạn.
• Bài 5: Hãy viết chương trình điều khiển đo tần số của xung (đơn vị tính là Hz) được đưa vào chân T0 của
vi điều khiển và hiển thị giá trị tần số lên LED 7 đoạn. Tự lựa chọn phương pháp kết nối thiết bị tạo xung
và các LED 7 đoạn.
• Bài 6: Hãy viết chương trình điều khiển đo độ rộng xung (đơn vị tính là ms) được đưa vào chân T0 của vi
PUSH ACC
PUSH B
MOV B,#10
ACALL DIV16TO8 ;LAY R7,R6 CHIA CHO 10
PUSH B ;CAT SO HANG DON VI
MOV B,#10
ACALL DIV16TO8 ;TIEP TUC CHIA CHO 10
PUSH B ;CAT SO HANG CHUC
MOV B,#10
MOV A,R6
DIV AB ;TIEP TUC CHIA CHO 10
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 3: Chương trình điều khiển đo độ rộng của xung (đơn vị là ms) được đưa vào chân INT0 của vi điều khiển
và hiển thị độ rộng của xung này lên các LED 7 đoạn (PULSE được nối với chân INT0, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
Giáo trình thực hành vi xử lý. 13 Biên soạn: Phạm Quang Trí
PUSH B ;CAT SO HANG TRAM, ACC CHUA SO HANG NGAN
SWAP A ;DUA SO HANG NGAN LEN 4 BIT CAO
POP B ;LAY SO HANG TRAM TU STACK
ORL A,B ;KET HOP SO HANG NGAN VA SO HANG TRAM
MOV R7,A ;R7 = NGAN - TRAM
POP ACC ;LAY SO HANG CHUC TU STACK
SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO
POP B ;LAY SO HANG DON VI TU STACK
ORL A,B ;KET HOP SO HANG CHUC VA SO HANG DON VI
MOV R6,A ;R6 = CHUC - DON VI
POP B
POP ACC
RET
;***************************************************
XCH A,R6
ORL A,#1 ;THUONG SO = 1
XCH A,R6 ;CAT TRONG R6
BELOW:
DJNZ R2,DIVIDE ;DICH TIEP DEN 16 LAN.
XCH A,B ;SAU 16 LAN DICH TA DUOC B = SO DU.
POP ACC
POP 02H
RET
;***************************************************
o Lưu đồ:
K. HỆ THỐNG ĐIỀU KHIỂN TIMER/COUNTER.
Bài 3: Chương trình điều khiển đo độ rộng của xung (đơn vị là ms) được đưa vào chân INT0 của vi điều khiển
và hiển thị độ rộng của xung này lên các LED 7 đoạn (PULSE được nối với chân INT0, LED7 – LED4
được nối với Port0, SEL IN1 được nối với Port1).
Giáo trình thực hành vi xử lý. 14 Biên soạn: Phạm Quang Trí
DIV16TO8
NAME: DIV16TO8.
INPUT: R7 = SỐ NHỊ PHÂN 16 BIT (BYTE CAO) - SỐ BỊ CHIA.
R6 = SỐ NHỊ PHÂN 16 BIT (BYTE THẤP) - SỐ BỊ CHIA.
B = SỐ NHỊ PHÂN 8 BIT - SỐ CHIA.
OUTPUT: R7 = THƯƠNG SỐ (BYTE CAO) CỦA PHÉP CHIA.
R6 = THƯƠNG SỐ (BYTE THẤP) CỦA PHÉP CHIA.
B = SỐ DƯ CỦA PHÉP CHIA.
MODE: PHÉP CHIA SỐ NHỊ PHÂN 16 BIT CHO SỐ NHỊ PHÂN 8
BIT (PHƯƠNG PHÁP DỊCH BIT VÀ TRỪ).
DIV16TO8:
CẤT TẠM GIÁ TRỊ CỦA ACC, R2
VÀO STACK
NẠP SỐ LẦN DỊCH BIT
S
GIÃM SỐ LẦN DỊCH BIT
CHƯA DỊCH XONG
16 BIT
CHUYỂN SỐ DƯ VÀO THANH GHI B
(B) ↔ (A)
LẤY LẠI GIÁ TRỊ CHO ACC, R2
TỪ STACK
RET
THƯƠNG SỐ → R7-R6
SỐ DƯ → B
BIN16TOBCD
NAME: BIN16TOBCD.
INPUT: R7 = SỐ NHỊ PHÂN CẦN CHUYỂN ĐỔI (BYTE CAO).
R6 = SỐ NHỊ PHÂN CẦN CHUYỂN ĐỔI (BYTE THẤP)
OUTPUT: R7 = HÀNG NGÀN/TRĂM CỦA SỐ BCD.
R6 = HÀNG CHỤC/ĐƠN VỊ CỦA SỐ BCD.
MODE: CHUYỂN ĐỔI SỐ NHỊ PHÂN 16 BIT THÀNH SỐ BCD
CÓ GIÁ TRỊ TRONG KHOẢNG (0 – 9999).
BIN16TOBCD:
CẤT TẠM GIÁ TRỊ CỦA ACC, B
VÀO STACK
NẠP HẰNG SỐ CHO PHÉP CHIA
(B) = 10
GỌI CTC CHIA SỐ NHỊ PHÂN 16
BIT CHO SỐ NHỊ PHÂN 8 BIT
DIV16TO8
CẤT TẠM GIÁ TRỊ CỦA HÀNG ĐƠN VỊ
(B) VÀO STACK
NẠP HẰNG SỐ CHO PHÉP CHIA
LƯU GIÁ TRỊ HÀNG NGÀN/TRĂM CỦA SỐ BCD
(R7) = (A)
LẤY LẠI GIÁ TRỊ CỦA HÀNG
CHỤC (A) TỪ STACK
ĐỔI VỊ TRÍ GIÁ TRỊ CỦA HÀNG CHỤC TRONG BYTE
SWAP A
(A) = 0XH / X: GIÁ TRỊ CỦA HÀNG CHỤC
ĐỔI VỊ TRÍ THÀNH
(A) = X0H / X: GIÁ TRỊ CỦA HÀNG CHỤC
LẤY LẠI GIÁ TRỊ CỦA HÀNG
ĐƠN VỊ (B) TỪ STACK
KẾT HỢP GIÁ TRỊ CỦA HÀNG CHỤC VÀ
HÀNG ĐƠN VỊ VÀO TRONG BYTE
(A) = (A) OR (B)
(A) = X0H / X: GIÁ TRỊ CỦA HÀNG CHỤC
(B) = 0YH / Y: GIÁ TRỊ CỦA HÀNG ĐƠN VỊ
KẾT HỢP THÀNH
(A) = XYH
LƯU GIÁ TRỊ HÀNG CHỤC/ĐƠN VỊ CỦA SỐ BCD
(R6) = (A)
LẤY LẠI GIÁ TRỊ CHO ACC, B
TỪ STACK
RET