DIEP
11-07-2009, 12:25 PM
Tôi chạy thử đoạn code sau bằng MPLAB SIM :
RPM_HI equ 0Ch
RPM_LO equ 0Dh
MATH equ 0Eh
org 0x00
LOOP
movlw 0x58 ; Gán giá trị 88d vào RPM_LO
movwf RPM_LO
movlw 0x02 ; Gán giá trị 2d vào RPM_HI
movwf RPM_HI
movlw 0x4A ; Gán gía trị 74d vào w
subwf RPM_LO,F ; rpmlo = rpmlo - 74
btfss STATUS,C ; Test bit C .Nếu rpmlo > 74 -> C = 1 ,Nếu rpmlo < 74 -> C = 0 .
decf RPM_HI,F ;
;-------------------------------------
; Chia cho 4
;-------------------------------------
bcf STATUS,C ;
rrf RPM_HI,F
rrf RPM_LO,F ; / 2
;
bcf STATUS,C
rrf RPM_HI,F
rrf RPM_LO,F ; / 4
;
movlw .131
movwf MATH ; gán 131 vào thanh ghi map
movf RPM_LO,W ; Đọc gía trị rpmlo sau khi đã chia
subwf MATH,W ; W = 131 - rpm_lo
clrf MATH
movlw 0x00
movwf STATUS
goto LOOP
end
Theo tôi hiểu khi thực hiện lệnh subwf RPM_LO,F thì kết quả phải là RPM_LO = 88-74 = 14
nhưng sao kết quả trên MPLAB SIM lại là 8 ? hoặc khi đến lệnh chia 2 : rrf RPM_HI , RRF RPM_LO , RPM_HI đang là 2 chia 2 = 1 ->đúng nhưng RPM_LO đang là 8 sao chia 2 lại bằng 0 . Xin các bạn vui lòng giải thích .Cám ơn
RPM_HI equ 0Ch
RPM_LO equ 0Dh
MATH equ 0Eh
org 0x00
LOOP
movlw 0x58 ; Gán giá trị 88d vào RPM_LO
movwf RPM_LO
movlw 0x02 ; Gán giá trị 2d vào RPM_HI
movwf RPM_HI
movlw 0x4A ; Gán gía trị 74d vào w
subwf RPM_LO,F ; rpmlo = rpmlo - 74
btfss STATUS,C ; Test bit C .Nếu rpmlo > 74 -> C = 1 ,Nếu rpmlo < 74 -> C = 0 .
decf RPM_HI,F ;
;-------------------------------------
; Chia cho 4
;-------------------------------------
bcf STATUS,C ;
rrf RPM_HI,F
rrf RPM_LO,F ; / 2
;
bcf STATUS,C
rrf RPM_HI,F
rrf RPM_LO,F ; / 4
;
movlw .131
movwf MATH ; gán 131 vào thanh ghi map
movf RPM_LO,W ; Đọc gía trị rpmlo sau khi đã chia
subwf MATH,W ; W = 131 - rpm_lo
clrf MATH
movlw 0x00
movwf STATUS
goto LOOP
end
Theo tôi hiểu khi thực hiện lệnh subwf RPM_LO,F thì kết quả phải là RPM_LO = 88-74 = 14
nhưng sao kết quả trên MPLAB SIM lại là 8 ? hoặc khi đến lệnh chia 2 : rrf RPM_HI , RRF RPM_LO , RPM_HI đang là 2 chia 2 = 1 ->đúng nhưng RPM_LO đang là 8 sao chia 2 lại bằng 0 . Xin các bạn vui lòng giải thích .Cám ơn