;动态数码时钟显示实验参考程序
;使用资源:
;1,TMRO定时器。确定显示的位,及显示延时。
;2,TMR1定时器。秒信号产生。
;3,PORTA端口。六共阳极位数码管的位选信号,低电平有效
;4,PORTC端口。数码管的七段,RC7不用。
;功能说明:
;1.六位数码管动态扫描显示时间(格式为:HHMMSS,24小时制)。
;2.时钟信号由单片机内部定时器硬件单元编程产生。
;本实战的目的是让大家进一步熟悉定时器的编程,多位数码管动态扫描显示的编程。
;硬件接法:
;1.实验板上拨码开关S4、S5的所有位必须置ON,其他都可以关闭。
;2.最好把93C46跟24CXX存储器从板上取下。
;本实例原提供者:pic16论坛会员 leef728 ,在此鸣谢leef728同志共享本实例.
;由深圳市乾龙盛电子科技有限公司技术部钟闺田(工程师)(论坛网名:zhongruntian)验正并加于整理、注释.
;程序文件名“TIME.ASM"
;程序清单如下:
;************************************
LIST P=16F877A
INCLUDE"P16F877A.INC"
ERRORLEVEL -302
;***********************************
__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC;
;***************文件寄存器定义**************
CBLOCK 0X20
WAW
YIW
BAW
QIW
GEW
SHW
TEMP
COUNTER
S3
DAA
STATUS_TMP
W_TMP
ENDC
;********************程序开始****************
ORG 0000H
NOP ;复位地址
GOTO MAIN
ORG 0004H
;********************中断处理程序***********
MOVWF W_TMP
SWAPF STATUS,W
CLRF STATUS
MOVWF STATUS_TMP ;以上4条指令为中断现场保护
BCF INTCON,2 ;清除TMRO中断标志位
MOVF TEMP,W ;时间存放单元的地址
MOVWF FSR
MOVF INDF,W ;取得某一位的时间值
CALL BMA ;查表得时间的显示代码
MOVWF PORTC ;送数码管显示
COMF DAA,W ;位码取反
MOVWF PORTA ;点亮相应的数码管
RLF