如何在PIC​​组件中使用4个变量减去时间?

时间:2015-07-06 01:45:23

标签: assembly pic

我正在使用PIC 18F4520开发一个秒表,四个7段LEDS显示器和一个按钮矩阵(实际上我只使用了16个按钮,但仍然是矩阵按钮)。

我需要无论何时按下特定按钮,秒表都会开始或停止计数,但是当它停止时,它需要显示前一次和当前时间之间的差异。例如:前一个是25秒,当前是30,所以程序必须显示5。

看起来很简单,但我不知道如何使用4个变量。 (每个7段LED需要4个)

像这样:

unit_second - first 7-segment display
tens_second - second 7-segment display
unit_minute - third 7-segment display
tens_minute - fourth 7-segment display

这是我的问题:

如何使用4个变量减去时间?

我尝试对每个变量使用SUBFW,但发生了错误

 ATUALIZA    ; MAIN LOOP

 TSTFSZ X    ; ( if x = 1 will start showing the current count )
 BRA MOSTRAREAL ;(SHOW CURRENT TIME ON DISPLAY)

 PULA3
 BRA BOTAO1   ;( ANOTHER BUTTON FUCTION - CLEAR TIMER )
 VOLTA



 MOVLW B'11111111'    
 MOVWF TRISD    
 MOVLW  B'11111011'
 MOVWF PORTB  
 BTFSC PORTD,0      ; heres the button in question
 BRA PULA2
 NADA
 BTFSC PORTD,0
 BRA BOTAO
 BRA NADA

BOTAO
TSTFSZ X  ;( if timer stoped will subtract the previous with the current)   
BRA PULA4
MOVF DIF1,W               ;
SUBWF UNI_SEGUNDO,W       ;
MOVWF DIF1                ;     here's the part that i need to fix
MOVF DIF2,W               ;
SUBWF DEZ_SEGUNDO,W       ; 
MOVWF DIF2                ;


 PULA4
 BTG X,0       ; ( START-STOP FUCTION , x=0 - stop x=1 start   )
 MOVF UNI_SEGUNDO,W
 MOVWF TEMP
 PULA2
 MOVLW B'00000000'
 MOVWF TRISD 


TSTFSZ X          ;  (if timer stoped will show the difference )
BRA     CALCULO   ; (counting function)
CLRF TEMP
BRA MOSTRADIF      ; (show the difference function)

所以这就是全部。我不知道如何继续这里,我只需要这个来完成我的项目。

0 个答案:

没有答案