アセンブラプログラムを改良して、LEDの点滅するチラツキを無くしました。

;*************************************************************
;LEDコントローラー 
;メインプログラム
;20221225 
;1クロック時間 4/4MHz=1us(内臓RCクロック)
;*************************************************************
    LIST    P=PIC12F675
    #INCLUDE  P12F675.INC

; CONFIG設定(PIC12F675)    
;
; 【 発振子設定 】
;    _INTRC_OSC_NOCLKOUT    :内部発振子4MHz
;    _HS_OSC            :外部発振子4~20MHz(セラロック接続時)
;  注)通常は上記2つのみ使用(以下参考まで)
; 【 WDT設定 】
;    _WDT_OFF        :ウォッチドッグタイマーOFF(通常はOFFで設定)
;    _WDT_ON            :ウォッチドッグタイマーON (ONが必要な場合のみ設定)
; 【 PWRTE設定 】
;    _PWRTE_ON        :パワーオンリセットON (通常はONで設定)
;    _PWRTE_OFF        :パワーオンリセットOFF(外部リセット設置に設定)
; 【 MCLRE設定 】
;    _MCLRE_ON        :MCLRピンとして使用
;    _MCLRE_OFF        :GP3ピンとして使用(GP3はInputピン専用)2
; 【 CP設定 】
;    _CP_OFF            :プログラムメモリコードプロテクトOFF(通常設定)
;    _CP_ON            :プログラムメモリコードプロテクトON (非定常)
; 【 DATA_CP設定 】
;    _CPD_OFF        :EEPROMコードプロテクトOFF(ON/OFFの差異がわからん)
;    _CPD_ON            :EEPROMコードプロテクトON (通常ONで使用して問題無)
; 【 BODEN設定 】
;    _BODEN_OFF        :低電圧リセット指定OFF(ON/OFFの差異がわからん)
;    _BODEN_ON        :低電圧リセット指定ON (通常OFFで使用して問題無)

;先頭を1マスあけること    
__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF  & _MCLRE_OFF
;----I/O設定----

;*********************************************************
;  変数、定数定義とレジスタ割付
;電源)1pin Vdd 
;GP5)2pin NC
;GP4)3pin LED出力 ON=1
;GP3)4pin NC

;GP2)5pin NC
;GP1)6pin NC
;GP0)7pin アナログ入力
;電源)8pin Vss
;****** Register Bank0 20h-5Fh(64Bytes) **********************
CNT1            EQU    20H        ;タイマー
CNT2            EQU    21H        ;タイマー
CNT3            EQU    22H        ;タイマー
CNT4            EQU    23H        ;タイマー
VR0_DATA        EQU    24H
;            EQU    25H
WTEMP            EQU    26H
STEMP            EQU    27H
PCTEMP            EQU    28H

;****** Bank1 A0h-DFh(64Bytes) ******************************
;未使用

;********** macro *****************************************
MOVLF    MACRO    LF,DST1
        MOVLW    LF
        MOVWF    DST1
        ENDM
;----------------------------------------
MOVFF    MACRO    SRC,DST
        MOVF    SRC,W
        MOVWF    DST
        ENDM
;----------------------------------------
MAIN        ORG    0            ;Reset
        GOTO    PORT_INI
;***********割込み*****************
        ORG    4
INTRPT                          ;
        MOVWF    WTEMP
        SWAPF   STATUS,W
        MOVWF   STEMP
        CLRF    STATUS
        MOVF    PCLATH,W
        MOVWF   PCTEMP
        CLRF    PCLATH

;TMR0ノコギリ波周波数TMR0 Rate_1:16 4*1/4MHz*16*256=4mS
INTRPT0    
        BCF     INTCON,T0IF   ;TMR0 割り込みフラグリセット
        BSF    GPIO,GP4
POPRTN  
        MOVF    PCTEMP,W
        MOVWF   PCLATH
        SWAPF   STEMP,W
        MOVWF   STATUS  
        SWAPF   WTEMP,F
        SWAPF   WTEMP,W 
        RETFIE                  ;割り込み終了
;*********** 初期設定 ***************************************
PORT_INI
        CLRF        STATUS            ;STATUS初期設定 BANK0
;------------ BANK1設定 ----------------------------
        BSF        STATUS,RP0        ;BANK1
        MOVLW    B'010100001'
        MOVWF    ANSEL            ;GP0アナログ設定その他デジタル
        CLRF        PCON                ;パワーONリセット使用設定
        CLRF        PIE1                ;コンパレータ,TMR1 割込み不使用
        MOVLF    B'00000000',WPU    ;弱プルアップピン設定
        MOVLF    B'00000011',IOC        ;状態変化割込みピン設定
        MOVLF    B'00000011',OPTION_REG    ;TMR0 Rate1:16
        MOVLF    B'11111100',OSCCAL    ;内部クロック設定Max4MHz
        BCF        PCLATH,3        
        BCF        PCLATH,4        
        MOVLF    B'00000001',TRISIO    ;GPIO入出力の設定 1=in 0=out        
;------------ BANK0設定 ----------------------------    
        BCF        STATUS,RP0        ;BANK 0
        BCF        STATUS,RP1        ;BANK 0
        CLRF        GPIO            ;I/Oクリア
        CLRF        PIR1            ;書込み割込みフラグ設定
        CLRF        T1CON            ;TMR1不使用設定
        MOVLF    B'10100000',INTCON    ;TMR0状態変化割込み使用
;***************************************
MAINLOOP
    ;******* アナログ入力A/D変換
        MOVLF    B'00000001',ADCON0    ;RA0データ蓄積
        CALL        T10uS
        CALL        T10uS        ;蓄積待ち
        BSF        ADCON0,GO        ;A/D変換開始
        BTFSC    ADCON0,GO
        GOTO     $-1    
        MOVFF    ADRESH,VR0_DATA
;**** 比較とPWM出力
PWM_C        MOVF    TMR0,W
        SUBWF    VR0_DATA,W
          BTFSC    STATUS,C
        GOTO        ENDLOOP
        BCF        GPIO,GP4        ;LED OFF
        
ENDLOOP
        GOTO        MAINLOOP
;******タイマールーチン *************************************
T01mS    
    MOVLF        d'19',CNT1    ;
    nop        
    nop            
    DECFSZ        CNT1,F        ;2+(2+1+2)*19-1+1+2=100
    GOTO        $-3    
    NOP
    RETURN                ;(100+10)*1uS=110usec=0.11mS(about)
;--------------------------------------------------------------
T10mS                
    MOVLF        D'95',CNT2    ;95回                        
    CALL        T01mS
    DECFSZ        CNT2,F        ;2+(2+100+1+2)*95-1+10+2+1+2=9,991
    GOTO         $-2        ;9991*1uS=10ms(about)
    
    NOP                ;調整用
    RETURN        
;--------------------------------------------------------------
T10uS    
    MOVLW    D'3'        
    MOVWF    CNT1        
    DECFSZ    CNT1,F    ;2+(1+2)*3-1=10
    GOTO    $-1
    RETURN        ;(10+1)*1uS=11usec
;*********************************************************
    END