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

📄 timer.asm

📁 pic子程序库与运算平台(PIC系列的四则运算、多字节、浮点等运算函数)
💻 ASM
字号:
;********************TIMER********************
;本程序实现用TMR0实现时钟功能。
;入口参数:无。
;出口参数:时RLT,分SOUH,秒SOU。
;占用资源:W,STATUS,TMR0,PORTD,024H,025H,026H,028H,07FH,17FH,07EH,1重堆栈。
;说明:    1.使用该程序需在中断入口程序中填入如下两条指令
;           BTFSC	INTCON,T0IF
;           GOTO	TIMERINT
;          2.要求主频为4MHZ

           IFNDEF       TIMER1
            #DEFINE     TIMER1

SAVEW       EQU         07FH        ;现场保护中保存W的地址
SAVES       EQU         07EH
            
TIMER       CLRF        SOU         ;秒
            CLRF        SOUH        ;分
            CLRF        RLT         ;时
            MOVLW       .18
            MOVWF       TEMP1       ;TEMP1记录TMR0溢出次数
            MOVLW       0-D'217'
	    MOVWF	TMR0
	    BSF	        STATUS,RP0  ;BANK1
	    MOVLW	17H
	    MOVWF	OPTION_REG  ;1:256
	    BCF	        STATUS,RP0  ;BANK0
            BCF         INTCON,T0IF
            MOVLW       0E0H
            IORWF       INTCON,F     
            RETURN
;*******************中断程序*******************
TIMERINT    MOVWF       SAVEW       
            SWAPF       STATUS,W        
            CLRF        STATUS
            MOVWF       SAVES       ;保护现场        
            MOVLW       0-D'217'
            MOVWF       TMR0
            BSF         STATUS,RP0
            MOVLW       17H         ;重新设定预分频值
            MOVWF       OPTION_REG
            BCF         STATUS,RP0
            BCF         INTCON,T0IF   
            DECFSZ      TEMP1,F     ;到1秒了吗? 
            GOTO        DONE22
            MOVLW       .18
            MOVWF       TEMP1       ;重设溢出计数器
            INCF        SOU,F       ;秒计数器加1
            MOVLW       .60
            XORWF       SOU,W
            BTFSS       STATUS,Z    ;到60秒了吗?
            GOTO        DONE22
            CLRF        SOU         ;秒计数器清0   
            INCF        SOUH,F      ;分计数器加1
            MOVLW       .60
            XORWF       SOUH,W
            BTFSS       STATUS,Z    ;到60分了吗? 
            GOTO        DONE22
            CLRF        SOUH        ;分计数器清0
            INCF        RLT,F       ;小时计数器加1
            MOVLW       .24 
            XORWF       RLT,W       ;到24小时了吗?
            CLRF        RLT	    ;小时计数器清0
DONE22      SWAPF       SAVES,W
            MOVWF       STATUS
            SWAPF       SAVEW,F
            SWAPF       SAVEW,W    ;恢复现场
            RETFIE            
           ENDIF

⌨️ 快捷键说明

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