2 段構成 プログラム (500μSから50mS位迄に適します) W EQU 0 F EQU 1 COUNT1 EQU H'**' COUNT2 EQU H'**' CALL DAN2 ;2 DAN2 MOVLW D'**' ;1 MOVWF COUNT1 ;1 MOVLW D'**' ;1 MOVWF COUNT2 ;1 LOOP2 DECFSZ COUNT1,F ;1(2) GOTO LOOP2 ;2 DECFSZ COUNT2,F ;1(2) GOTO LOOP2 ;2 NOP ;注 NOP ;注 RETURN ;2 ;----------------------------------------------- ;12 注)NOPは精密調整用です、最終的に精度を要する場合挿入します 必要サイクル数(SUM)=TIME(μS)*発振周波数(MHz)/ 4 SUM=固定分 8      1段分 (3*COUNT1)-1      2段分 (767*(COUNT2-1))+(3*COUNT2-1)+2           (770*(COUNT2-1))+2           (770*COUNT2)-768           MAX=770*256-768=196,352 SUM=8+(3*COUNT1)-1 + (770*COUNT2)-768     =(3*COUNT1)+(770*COUNT2)-761 COUNT2=(SUM+761) / 770 小数点部分切捨て COUNT1=((SUM+761)-(770*FIX(COUNT2))) / 3 小数点のある時は四捨五入 (NOP未使用時) 少数点部分切捨て       (NOP使用時) 計算した値が 256 になった時は 0 を設定します 計算した値が 0 のときは COUNT2 を -1 します NOPの数=SUM+761-(3*COUN1)-(770*COUNT2) COUNT2 は補正後の値です COUNT1 が 0 の時は 256 として計算します  MIN COUNT1=1 COUNT2=1 SUM=12 MAX COUNT1=0 COUNT2=0 SUM=197,127