看板 ASM 關於我們 聯絡資訊
各位大大,我想請問一下,此程式中的subwf是如何跳到查表的 此程式的動作流程,可以替小弟說明一下嗎?我一直想不通, 以下我解說一下我的想法: list p=16f887 #include<p16f887.inc> D1 equ 0x20 D2 equ 0x21 D3 equ 0x22 ONEIDX equ 0x23 org 00h clrf D1 clrf ONEIDX bsf STATUS,RP0 bcf TRISB,3 clrf TRISD bcf STATUS,RP0 bcf PORTB,3 start: movf ONEIDX,w //第1此跑時,ONEIDX為0=W call TABLE movwf PORTD call delay incf ONEIDX,f //第一次跑,因INCF故1 movlw .10 subwf ONEIDX,w //因10減W故為10 btfss STATUS,Z goto start delay: movlw .8 movwf D3 DLY1: movlw .244 movwf D2 DLY2: decfsz D1,f goto DLY2 decfsz D2,f goto DLY2 decfsz D3,f goto DLY1 return TABLE: addwf PCL,f retlw b'00111111' ;0 retlw b'00000110' ;1 retlw b'01011011' ;2 retlw b'01001111' ;3 retlw b'01100110' ;4 retlw b'01101101' ;5 retlw b'01111101' ;6 retlw b'00000111' ;7 retlw b'01111111' ;8 retlw b'01101111' ;9 end 但怎想都不能如願從0跳至9 請各位大大幫個忙~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.162.153.158
kikiqqp:因10減W故為10......這啥? 03/13 00:27
vofeed:常數為10,這我自已想的,希望有更好的想法~ 03/13 14:23