⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compare.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************COMPARE********************
;本程序实现用比较器模块输出方波。
;入口参数:正脉冲宽度在SOUH:SOU中,负脉冲宽度在RLTH:RLT中。
;出口参数:正脉冲宽度为(SOUH:SOU)*4TOSC,负脉冲宽度为(RLTH:RLT)*4TOSC。
;占用资源:W,STATUS,INT,TMR1,023H,024H,025H,028H,029H,二重堆栈。
;说明:    1.使用该程序需在中断入口程序中填入如下两条指令
;           BTFSC	PIR1,CCP1IF
;           GOTO	CMPINT
;          2.正负脉冲宽度均要求在30*4TOSC~65536*4TOSC之间

           IFNDEF       COMPARE1
            #DEFINE     COMPARE1

SAVEW       EQU         07FH            ;现场保护中保存W的地址
SAVES       EQU         07EH
                                    
COMPARE    MOVLW        03H
           SUBWF        SOU,F
           BTFSS        STATUS,C
           DECF         SOUH,F
           SUBWF        RLT,F
           BTFSS        STATUS,C
           DECF         RLTH,F          ;脉宽补偿,提高精度
           MOVF         SOUH,W
           MOVWF        CCPR1H
           MOVF         SOU,W
           MOVWF        CCPR1L
           CLRF         TMR1H
           CLRF         TMR1L           ;TMR1清0
           BSF          INTCON,PEIE   
           BSF          INTCON,GIE
           BSF          STATUS,RP0  
           BCF          PIE1,CCP1IE     ;关中断
           BCF          PIE1,TMR1IE
           BCF          TRISC,2         ;RC2输入
           BCF          STATUS,RP0
           MOVLW        B'00000000'     ;T1定时器方式,1:1分频
           MOVWF        T1CON
           MOVLW        B'00001000'     ;设置CCP1为比较工作方式,输出高电平
           MOVWF        CCP1CON
           BCF          PIR1,CCP1IF
           BSF          STATUS,RP0
           BSF          PIE1,CCP1IE     ;开中断
           BCF          STATUS,RP0
           BSF          T1CON,TMR1ON    ;开始定时          
           RETURN
;*******************比较中断************************
CMPINT     CLRF         TMR1L
           CLRF         TMR1H
           MOVWF        SAVEW
           SWAPF        STATUS,W
           CLRF         STATUS
           MOVWF        SAVES           ;保护现场
           BTFSC        CCP1CON,CCP1M0
           GOTO         NEXT59       
           MOVF         SOUH,W
           MOVWF        CCPR1H          
           MOVF         SOU,W
           MOVWF        CCPR1L          ;加载正脉冲宽度
           BSF          CCP1CON,CCP1M0  ;比较输出1
           GOTO         DONE14
NEXT59     MOVF         RLTH,W
           MOVWF        CCPR1H          
           MOVF         RLT,W
           MOVWF        CCPR1L          ;加载负脉冲宽度
           BCF          CCP1CON,CCP1M0  ;比较输出0
DONE14     BCF          PIR1,CCP1IF                    
           SWAPF        SAVES,W
           MOVWF        STATUS
           SWAPF        SAVEW,F
           SWAPF        SAVEW,W         ;恢复现场
           RETFIE
          ENDIF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -