【问题标题】:How to set up table loop for Microchip assembly language如何为 Microchip 汇编语言设置表格循环
【发布时间】:2015-02-11 19:00:46
【问题描述】:

我正在学习汇编语言以在画板上显示七个段。 我需要让七段显示 00 到 FF 和 00-99(十进制) 我被困在桌子上阅读。 如何让表格在达到 F 或 9 时自动再次读取。 这是我的代码:

Loop
    TBLRD*+     ; Read byte from table, increment pointer
    MOVF    TABLAT, w
    movwf   PORTE       ; Move W to PORTE
    call    Delay_333ms ; Call delay subroutine
    goto    Loop        ; Repeat loop

PatTbl
    dw   h'6'       
    dw   h'5b'      
    dw   h'159'     
    dw   h'66'      
    dw   h'6d'  
    dw   h'7d'
    dw   h'7'
    dw   h'7f'
    dw   h'6f'     
    dw   h'77'
    dw   h'7c'
    dw   h'39'
    dw   h'3f'
    dw   h'79'
    dw   h'71'  
    dw   h'3f'

【问题讨论】:

    标签: assembly pic microchip


    【解决方案1】:

    最简单的技术是屏蔽,它的工作原理是这样的:如果你的 max.value 是 0x0f 并且它存储在一个字节大小的变量中,比如说( max 是 0x0ff )你创建一个等于 max.value 和 AND 的掩码每次增量后这个掩码。

    #define MASK 0b00001111
    
    uint8_t value = 0;
    
    
    while(1) {    
        value = (value++) & MASK;
    }
    

    'Value' 将从 0 循环到 0x0f。

    在您的程序集示例中,您需要单独存储指向表的指针和您正在更改的值。然后你将增加值,屏蔽它,然后将它添加到表指针中。

    【讨论】:

      猜你喜欢
      • 2015-02-13
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多