View Single Post
Old 18-01-2007, 09:39 AM   #7
Jerry
Đệ tử 5 túi
 
Jerry's Avatar
 
Tham gia ngày: Sep 2006
Bài gửi: 100
:
Mình đã có đoạn code này. Xin được post lên đây để các bạn cùng tham khảo :

Code:
B6_BCD:  
	bcf     STATUS,0                ; clear the carry bit
	movlw   .48			
	movwf   count
	clrf    r0
	clrf    r1
	clrf    r2
	clrf	r3
	clrf	r4
	clrf	r5
	clrf	r6
	clrf	r7
	
loop48  
	rlf     L_byte2, F
	rlf     L_byte1, F
	rlf     M_byte2, F
	rlf     M_byte1, F
	rlf     H_byte2, F
	rlf     H_byte1, F
	
	rlf     r7, F
	rlf     r6, F
	rlf     r5, F
	rlf     r4, F
	rlf     r3, F
	rlf     r2, F
	rlf     r1, F
	rlf     r0, F
;
	decfsz  count, F
	goto    adjDEC
	RETLW   0
;
adjDEC 
	movlw   r7
	movwf   FSR
	call    adjBCD

	movlw   r6
	movwf   FSR
	call    adjBCD

	movlw   r5
	movwf   FSR
	call    adjBCD	

	movlw   r4
	movwf   FSR
	call    adjBCD
;
	movlw   r3
	movwf   FSR
	call    adjBCD
;
	movlw   r2
	movwf   FSR
	call    adjBCD
;
	movlw   r1
	movwf   FSR
	call    adjBCD
;
	movlw   r0
	movwf   FSR
	call    adjBCD
	
	goto    loop48
;
adjBCD  
	movlw   3
	addwf   INDF,W
	movwf   temp
	btfsc   temp,3          ; test if result > 7
	movwf   INDF
	movlw   30
	addwf   INDF,W
	movwf   temp
	btfsc   temp,7          ; test if result > 7
	movwf   INDF               ; save as MSD
	RETLW   0
Note : Kết quả chuyển đổi để trong [r0:r7], trong đó r0 là MSB, r7 là LSB. Số cần chuyển đổi (6byte hex) để trong [H_byte1:H_byte2:M_byte1:M_byte2:L_byte1:L_byte2]. H_byte1 là MSB, L_Byte2 là LSB.

thay đổi nội dung bởi: namqn, 18-01-2007 lúc 07:48 PM.
Jerry vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn