AB ;LAY KET QUA TREN CHIA TIEP CHO

Một phần của tài liệu vi xử lý hệ thống điều khiển adc (Trang 25 - 26)

MOV R7,A ;R7 = TRAM

MOV A,B ;LAY SO HANG CHUC

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

;***************************************************

Đổi số nhị phân 16 bit thành mã BCD nén:

o Cơng việc thực hiện tương tự như đối với số nhị phân 8 bit là lần lượt chia giá trị cần chuyển đổi cho 10. Tuy nhiên, cần phải tạo ra một chương trình con thực hiện việc chia số 16 bit cho 10 (vì giá trị cần đổi cho 10. Tuy nhiên, cần phải tạo ra một chương trình con thực hiện việc chia số 16 bit cho 10 (vì giá trị cần đổi lúc này là số 16 bit).

o Chương trình mẫu:

;*************************************************** ;CTC CHUYEN DOI SO BINARY 16 BIT (<= 9999) SANG SO BCD. ;NAME: BIN16TOBCD.

;INPUT: R7,R6 = SO BCD 16 BIT (<= 9999).

;OUTPUT: R7,R6 = SO BCD (NGAN - TRAM - CHUC - DON VI). ;***************************************************

BIN16TOBCD:

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

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 (adsbygoogle = window.adsbygoogle || []).push({});

SWAP A ;DUA SO HANG CHUC LEN 4 BIT CAO

Bài 4: Chương trình điều khiển biến đổi A/D thơng qua ADC0809 và hiển thị giá trị của bốn kênh ngõ vào (kênh IN0, IN1, IN2 và IN3) lên bốn LED 7 đoạn (LED3, LED2, LED1 và LED0: theo giá trị điện áp (kênh IN0, IN1, IN2 và IN3) lên bốn LED 7 đoạn (LED3, LED2, LED1 và LED0: theo giá trị điện áp thực, đơn vị là mV), LED7 hiển thị kênh ngõ vào. Việc chuyển đổi kênh biến đổi và hiển thị được thực hiện một cách lần lượt, mỗi lần cách nhau 5s.

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

;*************************************************** ;CTC CHIA SO BINARY 16 BIT CHO SO BINARY 8 BIT. ;*************************************************** ;NAME: DIV16TO8.

;INPUT: R7,R6: SO BINARY 16 BIT ; B: SO BINARY 8 BIT

;OUTPUT: R7,R6: KET QUA CUA PHEP CHIA ; B: SO DU CUA PHEP CHIA

;***************************************************

DIV16TO8:

PUSH 02H ;CAT THANH GHI R2

PUSH ACC ;CAT THANH GHI A

MOV R2,#16 ;CHO PHEP DICH 16 LAN

CLR A

DIVIDE:

XCH A,R6

CLR C ;DICH BIT 7 CU 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 (adsbygoogle = window.adsbygoogle || []).push({});

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

Một phần của tài liệu vi xử lý hệ thống điều khiển adc (Trang 25 - 26)