Re: [問題] 關於pic887的一些問題
※ 引述《vofeed (vofeed)》之銘言:
: 各位大大,我想請問一下,此程式中的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
~~~~~~~~~~~~~~~~~~~~~
Main loop 裡執行 call TABLE 和 call delay
: incf ONEIDX,f //第一次跑,因INCF故1
: movlw .10
: subwf ONEIDX,w //因10減W故為10
: btfss STATUS,Z
: goto start
上面五行的意思是
ONEIDX++;
if(ONEIDX==10)
{
跳到 delay;
}
else
{
跳回 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: 24.147.171.37
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章