首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储数字PIC ASM

存储数字PIC ASM
EN

Stack Overflow用户
提问于 2011-02-14 13:38:30
回答 1查看 647关注 0票数 0

所以,我知道如何在按下按钮时生成一个随机数,但我不确定如何存储一个数字,更不用说两个数字了,然后当它不在按钮循环中时,它就不会变得疯狂。这是我现在的代码。

抱歉,它的不整洁,不知道如何正确地格式化它为这个网站。

代码语言:javascript
复制
#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  
EN

回答 1

Stack Overflow用户

发布于 2011-07-12 09:05:35

你真的要用汇编程序吗?如果不是这样,用C编写你想要的东西是很容易的。在ASM中,手动管理内存位置中的数据是很麻烦的,在C中,你只需要声明两个变量来存储你的随机数。

您甚至可以保留ASM函数,只需包装它们(使用所需的推送、弹出调用),这样您就可以在C上下文中调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4989156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档