I
itachi012587
Guest
Привет!
Намерих код в Интернет, но аз не разбирам как код работи.Дали някой има представа за това как код работи?Моля да ми обясни по-нататък.
Благодаря.;------------------------------------------------- ---------------------------
B2_BCD ФБК статут, 0; изчистете малко да
movlw .16
movwf брой
clrf К0
clrf R1
clrf R2
loop16 rlf L_byte, е
rlf H_byte, е
rlf R2, е
rlf R1, е
rlf К0, е
;
decfsz брой, F; рутинни за преобразуване BCD
Отидох в adjDEC
retlw 0
;
R2 adjDEC movlw
movwf FSR
adjBCD повикване, без банкови смяна, винаги
;; Непряк достъп за RAM
movlw R1
movwf FSR
повикване adjBCD
;
movlw К0
movwf FSR
повикване adjBCD
;
Отидох в loop16
;
adjBCD movlw 3
addwf 0, W
movwf Temp
btfsc Temp, 3; тест, ако резултатът> 7
movwf indf
movlw 30
addwf 0, W
movwf Temp
btfsc Temp, 7; тест, ако резултатът> 7
movwf indf; освен MSD
retlw 0
;------------------------------------------------- ---------------------------
; Подреждане на резултата като цифри 1,2,3.
bcdsplit movf R1, W; донесе първата хапане
andlw 0Fh; маска горната хапане
movwf digit1; изпрати на дисплея рутинни променлива.
movf R2, W; донесе втората цифра!
andlw 0F0h; маска на по-ниски хапане.
movwf digit2; изпрати на дисплея рутинни променлива.
swapf digit2, е, след swaping!
movf R2, W; Отново приведе lowbyte
andlw 0Fh; маска горната хапане
movwf digit3; я изпраща на дисплея рутинни променлива
връщане
Намерих код в Интернет, но аз не разбирам как код работи.Дали някой има представа за това как код работи?Моля да ми обясни по-нататък.
Благодаря.;------------------------------------------------- ---------------------------
B2_BCD ФБК статут, 0; изчистете малко да
movlw .16
movwf брой
clrf К0
clrf R1
clrf R2
loop16 rlf L_byte, е
rlf H_byte, е
rlf R2, е
rlf R1, е
rlf К0, е
;
decfsz брой, F; рутинни за преобразуване BCD
Отидох в adjDEC
retlw 0
;
R2 adjDEC movlw
movwf FSR
adjBCD повикване, без банкови смяна, винаги
;; Непряк достъп за RAM
movlw R1
movwf FSR
повикване adjBCD
;
movlw К0
movwf FSR
повикване adjBCD
;
Отидох в loop16
;
adjBCD movlw 3
addwf 0, W
movwf Temp
btfsc Temp, 3; тест, ако резултатът> 7
movwf indf
movlw 30
addwf 0, W
movwf Temp
btfsc Temp, 7; тест, ако резултатът> 7
movwf indf; освен MSD
retlw 0
;------------------------------------------------- ---------------------------
; Подреждане на резултата като цифри 1,2,3.
bcdsplit movf R1, W; донесе първата хапане
andlw 0Fh; маска горната хапане
movwf digit1; изпрати на дисплея рутинни променлива.
movf R2, W; донесе втората цифра!
andlw 0F0h; маска на по-ниски хапане.
movwf digit2; изпрати на дисплея рутинни променлива.
swapf digit2, е, след swaping!
movf R2, W; Отново приведе lowbyte
andlw 0Fh; маска горната хапане
movwf digit3; я изпраща на дисплея рутинни променлива
връщане