2011-02-14 58 views
0

所以,我知道如何在按下按鈕時生成一個隨機數字,但我不確定如何存儲一個數字,更不用說兩個數字,並且當它不在按鈕循環。 這是我的代碼現在。存儲號碼PIC ASM

對不起,它不整齊,不知道如何正確格式化爲這個網站。

#include <p16F690.inc> 
    __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF) 

    cblock 0x20 
Delay1     
Delay2 
Display    
Num1 
Boolean 
Boolean2 
Boolean3 
Num2 
Num3 
LastStableState  
Counter 
    endc 

    org 0 
Start: 
    BANKSEL TRISA    
    movlw 0xFF 
    movwf TRISA    
    movwf TRISB    
    clrf TRISC    

    BANKSEL ANSEL   
    clrf ANSEL   
    BANKSEL PORTC    

    clrf Display 
    clrf Num1 
    clrf Num2 
    clrf Boolean 
    clrf PORTC 
    movlw 1 
    movwf Boolean 
    movwf Boolean2 
    movwf Boolean3 
    movwf LastStableState  
    clrf Counter 
MainLoop: 
    btfsc LastStableState,0 
    goto LookingForUp 
LookingForDown: 
    clrw       
    btfss PORTB,7   
    incf Counter,w   
    movwf Counter   
    goto EndDebounce 

LookingForUp: 
    clrw      
    btfsc PORTB,7   
    incf Counter,w 
    movwf Counter 

    incf Display,f 

EndDebounce: 
    movf Counter,w   
    ;xorlw 4 
    btfss STATUS,Z  
    goto Delay1mS 

    comf LastStableState,f  
    clrf Counter 
    btfss LastStableState,0  
    goto Delay1mS    


    btfsc Boolean,0 
    goto Num1Set 

    btfsc Boolean2,0 
    goto Num2Set 

    goto Step3 



Delay1mS: 
    movlw .02     
    Call Delay 
    goto MainLoop 

Delay: 
    movwf Delay2 
DelayLoop:  
    decfsz Delay1,f 
    goto DelayLoop 
    decfsz Delay2,f 
    goto DelayLoop 
    return     

Num1Set: 
    movf Display,w 
    movwf Num1 
    movwf PORTC 
    clrf Boolean 
    goto Delay1mS 

Num2Set: 
    movf Display,w 
    movwf Num2 
    movwf PORTC 
    clrf Boolean2 
    goto Delay1mS 
Step3: 
    ;movf Display,w 
    movlw Num2 
    movwf PORTC 
    goto Delay1mS 
    ;andlw Num1 
    ;movwf PORTC 
    ;call Delay1mS 
    ;goto Start 
end 
+0

突出顯示源代碼並單擊`{}`按鈕對其進行格式化。 – Potatoswatter 2011-02-14 05:57:54

回答

1

你真的不得不使用匯編程序嗎?如果不是,用C寫你想要的東西很容易。在ASM中手工管理數據存儲位置非常麻煩,在C中,您只需聲明2個變量來存儲隨機數。

您甚至可以保留ASM函數,只需將它們包裝(使用所需的推送,彈出調用),以便可以從C上下文中調用它。