안녕하세요
제가 아래 코드를 아주 대략적으로만 이해를 해서요
100ms Delay Routine
;--------------------------------------------------------------------------------------
DELAY_100M MOVLW .200 ; w reg에 literal값으로 200을 넣는다
MOVWF COUNT1 ;w reg 값을 count1에 넣는다
CLRF COUNT2 ;count2를 클리어 한다
DL_1 NOP ; 1us Delay ;아무일도 안함 ?? 클럭소모
GOTO $+1 ; 2us Delay ;program counter +1????? 다음 명령으로 이동
GOTO $+1 ; 2us Delay ;다음 명령으로 이동
DECFSZ COUNT2 ;count2를 감소시키고 0이면 다음 명령 스킵
GOTO DL_1
DECFSZ COUNT1 ;count1를 감소시키고 0이면 다음 명령 스킵
GOTO DL_1
RETURN
END
count2를 처음에 클리어시키면 DECFSZ COUNT2 후에 GOTO DL_1 를 스킵하고 DECFSZ COUNT1 가 200이니까 200번 반복한 후에 리턴하는거 아닌가요???
저는 여기서 count2가 왜 있고 왜 클리어를 시키는지 모르겠어요 ㅠㅠ