như các bạn đã biết thì khi lập trình cho 8051 thì trong ASM có hàm DA A, là hàm hiệu chỉnh thập phân giá trị HEX trong thanh chứa A, giá trị này là phép cộng của 2 số BCD gói trước đó.
Ví dụ viết bằng ASM chẳng hạn,
Thực ra là mình đang cần đếm lùi và hiển thị ra Led 7 thanh qua IC 7447 nên cần lưu thông tin trên port 8 bit dưới dạng BCD gói, 4 bit cao từ 4 - 7 qua IC 7447 đưa ra LED 7 thanh thành số hàng đơn vị...4 bit thấp 0-3 là số hàng chục. do vậy cần có hàm tương tự như AD để hiệu chỉnh thập fân nhằm đưa ra hiển thị trên LED 7 thanh
Thuật toán hiệu chỉnh như sau:
ví dụ Port1 đang chứa kết quả fép cộng 2 số BCD :
IF((P4-P7)>9 AND (AF=1)) THEN (P4-P7)<-(p3-P7)+6 (hàng đơn vị)
IF((P0-P3)>9 AND (CF=1)) THEN (P0-P3)<-(p0-P3)+6 ( hàng chục )
Mình đang cần viết trong C một Function cũng có chức năng tương tự như hàm DA trong ASM nhưng chưa biết xây dựng cấu trúc hàm cũng như truyền tham số. MOng các bạn giúp mình với
Cảm tạ !!
Ví dụ viết bằng ASM chẳng hạn,
MOV A,56H ;
ADD A,67H ; 56h +67h = BDh , sau lenh nay cờ nhớ CF và cờ nhớ fụ AF
; đều được set bằng 1.
AD A ; hiệu chỉnh thập phân já trị BDh trong thanh chứa A thành 23h
ADD A,67H ; 56h +67h = BDh , sau lenh nay cờ nhớ CF và cờ nhớ fụ AF
; đều được set bằng 1.
AD A ; hiệu chỉnh thập phân já trị BDh trong thanh chứa A thành 23h
Thuật toán hiệu chỉnh như sau:
ví dụ Port1 đang chứa kết quả fép cộng 2 số BCD :
IF((P4-P7)>9 AND (AF=1)) THEN (P4-P7)<-(p3-P7)+6 (hàng đơn vị)
IF((P0-P3)>9 AND (CF=1)) THEN (P0-P3)<-(p0-P3)+6 ( hàng chục )
Mình đang cần viết trong C một Function cũng có chức năng tương tự như hàm DA trong ASM nhưng chưa biết xây dựng cấu trúc hàm cũng như truyền tham số. MOng các bạn giúp mình với
Cảm tạ !!
Comment