led0-99-tmr0-int.asm
来自「自己编写的一个PIC程序」· 汇编 代码 · 共 124 行
ASM
124 行
;*****************************************************
;功能:实现两位数码管的0-99递增动态扫描,递增速度约为1秒
;特点:使用了TMR0的定时与中断功能,实现了数码管的动态扫描
;时间:2007年5月30日
;不足:1秒定时还不够精确
;*****************************************************
include<p16f877.inc>
TimeNum EQU 20H ;定义时间控制变量
DisNum EQU 21H ;定义显示位控制变量
DelNum EQU 22H ;定义延迟函数变量
Second EQU 23H ;定义时间秒变量
Minute EQU 24H ;定义时间分钟变量
org 0
goto main
;********************中断服务子程序********************
org 4
incf TimeNum,1 ;控制秒是否该加1
movlw 0eh
subwf TimeNum,0
btfss STATUS,Z
goto BACK
clrf TimeNum
incf Second,1
movlw 0Ah ;控制分钟是否该加1
subwf Second,0
btfss STATUS,Z
goto BACK
clrf Second
incf Minute,1
movlw 0Ah
subwf Minute,0
btfss STATUS,Z
goto BACK
clrf Minute
BACK bcf INTCON,T0IF ;清楚中断标志位
movlw 0
movwf TMR0 ;TMR0重新装入
retfie
;*****************************************************
;*****************主程序开始**************************
main
bcf STATUS,RP0
bcf STATUS,RP1
clrf TimeNum ;清楚自定义变量
clrf DisNum
clrf Second
clrf Minute
movlw 0a0h
movwf INTCON ;开总中断,使能TMR0中断
bsf STATUS,RP0
bcf STATUS,RP1
movlw 07H ;将分频器分配给TMRO,分频比比1:256,时钟源为内部时钟源
movwf OPTION_REG
movlw 0
movwf TRISC ;设置RC口为输出
movwf TRISD ;设置RD口为输出
bcf STATUS,RP0
bcf STATUS,RP1
movlw 0
movwf PORTD
movwf PORTC
movwf TMR0 ;装入TMR0初始值
Display incf DisNum,1 ;控制数码管显示位
movlw 01h
andwf DisNum,w
addwf PCL,F
goto DisS
goto DisG
DisS movf Minute,0 ;显示十位
call TABLE
movwf PORTD
movlw 0x01
movwf PORTC
call Delay
clrf PORTC
goto BACK1
DisG movf Second,0 ;显示个位
call TABLE
movwf PORTD
movlw 0x02
movwf PORTC
call Delay
clrf PORTC
BACK1 goto Display
;**************************************************
;**************查表子程序**************************
TABLE
addwf PCL
retlw 0c0h
retlw 0f9h
retlw 0a4h
retlw 0b0h
retlw 99h
retlw 92h
retlw 82h
retlw 0f8h
retlw 80h
retlw 90h
;**************************************************
;************延迟子函数****************************
Delay movlw 0ffh
movwf DelNum
NEXT1 decf DelNum,1
btfss STATUS,Z
goto NEXT1
movlw 0ffh
movwf DelNum
NEXT2 decf DelNum,1
btfss STATUS,Z
goto NEXT2
return
;**************************************************
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?