;*********************************************************************************************;
;以下程序能用于24小时计时,能作为秒表使用,能定时闹铃1分钟(也可关).
;使用方法:开机后在00:00:00起开始计时,(1)长按P1.0进入调分状态:分单元闪烁
;按P1.0加1,按P1.1减1.再长按P1.0进入时调整状态,时单元闪烁,加减调整同调分.
;按长按退出调整状态. (2)按下P1.1进入秒表状态:按P1.2暂停,再按P1.2秒表清零,再按
;P1.2秒表又启动,按P1.1退出秒表回到时钟状态. (3)按P1.3进入设定闹时状态: 00:00: -,可进
;行分设定,按P1.2分加1,再按P1.3为时调整,00:00:- ,按P1.2时加1,按P1.1闹铃有效,显示为00:00:-0,再按
;P1.1闹铃无效(显示00:00:- ,),按P1.3调闹钟结束.在闹铃时可按P1.3停闹,不按闹铃1分钟.
;定时器T0、T1溢出周期为50MS,T0为秒计数用, T1为调整时闪烁及秒表定时用,
;P1.0、P1.1、P1.2、P1.3为调整按钮,P0口为字符输出口,P2为扫描口,P1.7为蜂呜器口,采用共阳显示管。
;50H-55H为闹钟定时单元,60H-65H为秒表计时单元,70H-75H为显示时间单元,76H-79H为分时计时单元。
;03H标志=0时钟闪烁,=1秒表, 05H=0,不闹铃,=1要闹铃. 07H每秒改变一次,用作间隔呜叫.
;***********************************************************************************************;
DISPFIRST EQU 30H ;显示首址存放单元
BELL EQU P1.7 ;小喇叭
CONBS EQU 2FH ;存放报时次数
;
;****************************************
;; 中断入口程序 ;;
;****************************************
;
ORG 0000H ;程序执行开始地址
LJMP START ;跳到标号START执行
ORG 0003H ;外中断0中断程序入口
RETI ;外中断0中断返回
ORG 000BH ;定时器T0中断程序入口
LJMP INTT0 ;跳至INTTO执行
ORG 0013H ;外中断1中断程序入口
RETI ;外中断1中断返回
ORG 001BH ;定时器T1中断程序入口
LJMP INTT1 ;跳至INTT1执行
ORG 0023H ;串行中断程序入口地址
RETI ;串行中断程序返回
;
;****************************************
;; 以下程序开始 ;;
;****************************************
;整点报时用
QQQQ : MOV A,#10H
MOV B,79H
MUL AB
ADD A,78H
MOV CONBS,A
BSLOOP: LCALL DS20MS
LCALL DL1S
LCALL DL1S
LCALL DL1S
DJNZ CONBS,BSLOOP
CLR 08H ;清整点报时标志
AJMP START1
;
;****************************************
;; 主程序开始 ;;
;****************************************
;
START: LCALL ST ;上电显示年月日及班级学号
MOV R0,#00H ;清00H-7FH内存单元
MOV R7,#80H ;
CLEARDISP: MOV @R0,#00H ;
INC R0 ;
DJNZ R7,CLEARDISP ;
MOV 20H,#00H ;清20H(标志用)
MOV 7AH,#0AH ;放入"熄灭符"数据
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] 下一页
本文关键字:程序 51单片机,单片机-工控设备 - 51单片机