作者: 来源:互联网
带有时间设置和秒显示的数字闹钟程序
带有时间设置和秒显示的数字闹钟程序,我发一个自己用汇编写的,抛砖引玉!
第一部分:
;*********************************************************
; 题目:带有时间设置和秒显示的数字闹钟
; Date : 2006.3.13 12MHZ晶振
; Create by : 逸飞 E-mail:mcu-yf@163.com
; P3.2设置键 P3.3小时调整键 P3.5分钟调整键 P1.7定时输出指示
;**************************************************************
;*********************************************************
; 变量地址分配
;*********************************************************
SwDelay equ 2; 设置按键时去抖动时间
DisplayBuffer equ 30h; 设置显示缓冲区的地址为30h-35h共6个字节
BeepVal equ 36h; 蜂鸣时间长短存储器地址
OneSecondCounter equ 39h; 设置1秒计数器的地址,1秒计数器是用来计数1秒内计时器的中断次数
Hour equ 3ah; 设置小时计数器的地址
Minute equ 3bh; 设置分钟计数器的地址
Second equ 3ch; 设置秒计数器的地址
P1Val equ 3dh; 设置数码管位驱动值的地址
ClockMode equ 20h.0; 模式(正常走时/闹时)设置寄存器地址,值为0时正常走时,为1时闹时
设定
AlarmOnOff equ 20h.1; 闹钟开启/关闭标志,为0关闭,为1开启
AlarmTimeOn equ 20h.2; 此位为1时表示闹时时间到
DispHour equ 21h; 设置小时显示寄存器的地址
DispMinute equ 22h; 设置分钟显示寄存器的地址
DispSecond equ 23h; 设置秒显示寄存器的地址
AlarmHour equ 2eh; 设置闹时小时计数器的地址
AlarmMinute equ 2fh; 设置闹时分钟计数器的地址
AlarmSetKey bit P3.2; 闹钟设置键
MinuteKey bit P3.5; 定义分设置键
HourKey bit P3.3; 定义小时设置键
RelayOut equ P1.7; 定义输出引脚
;**********************************************************************
; 程序开始
;**********************************************************************
org 00h
ajmp Reset; 程序开始
org 0bh ; Timer0中断向量地址
ajmp TimeInt; 跳到中断处理程序
org 0020h
Reset: ; 以下为初始化程序,为各个变量赋初值
mov sp,#70h;
setb RelayOut
mov OneSecondCounter,#125
;
mov Hour,#12;
mov Minute,#00;
mov Second,#00; 设置上电时时钟显示的初值
;
mov AlarmHour,#06;
mov AlarmMinute,#00; 设置上电时闹时时间的初值
;
clr AlarmOnOff; 上点复位后闹时功能处于关闭状态
clr ClockMode; 正常走时模式
clr AlarmTimeOn;
setb RelayOut; 清闹时输出
;************************************
; Use Timer 0 Mode 1
; 400us interrupt
;************************************
mov tmod,#00000001b;
mov th0,#0E3h;
mov tl0,#39h;
mov ie, #82h; 开全局中断
setb tr0; 开定时中断
;************************************