您当前的位置:五五电子网电子知识单片机-工控设备51单片机AT89C51数字电子钟(已测试通过) 正文
AT89C51数字电子钟(已测试通过)

AT89C51数字电子钟(已测试通过)

点击数:7910 次   录入时间:03-04 11:39:27   整理:http://www.55dianzi.com   51单片机
该数字钟可实现精度误差≤ 1S/天的变精度时钟,并能方便地调节时钟、时间、定时时间等. 
  
       LED1 bit p1.0       ;LED定义
       led2 bit p1.1     
       led3 bit p1.2
       led4 bit p1.3
       led5 bit p1.4
       led6 bit p1.5
       led7 bit p1.6
       led8 bit p1.7

       s1 bit p0.0        ;数码管位数定义 
       s2 bit p0.1
       s3 bit p0.2
       s4 bit p0.3 
       s5 bit p0.4 
       s6 bit p0.5
       s7 bit p0.6
       s8 bit p0.7 

       led_data equ p2      ;数码管定义

       key1 bit p3.5        ;按键定义
       key2 bit p3.6
       key3 bit p3.7
       key equ 56h

       time_h equ 57h       ;定时初值高位
       time_l equ 58h       ;低位 

       t_h equ 60h        ;时分秒对应的地址
       t_s equ 61h 
       t_m equ 62h
       time equ 63h        ;时钟计数单元
       timer_h equ 64h       ;定时时单元
       timer_m equ 65h      ;定时分单元
      
       timset bit 00h       ;设置时间标志

       disstart equ 70h      ;显示单元首地址 

       int_data equ 45h      ;中断数据地址
       count_data equ 44h     ;计数单元地址
       timer_data equ 43h     ;定时地址
; ************** 以上为预定义部分 

; ************** 以下程序开始 
       org 00h          ;程序开始地址 
       jmp main          ;跳转到代码开始处 

       org 1bh          ;定时器 T1 中断服务程序入口
       jmp tim1 

       org 030h          ;主程序开始的地址 30H 

     main: MOV  sp,#30h        ;首先定义堆栈
       lcall rest         ;初始化
       lcall pro_set       ;设置定时器开始工作
     lpp:lcall time_set       ;接受用户设置时间 
       lcall timer        ;时钟处理 
       lcall time_pro       ;时间格式处理,码型变化等 
       lcall time_display     ;显示
       jmp lpp
; ************* 初始化程序 ***************************
     rest: MOV  a,#00h         ;累加器清零 
        MOV  b,#00h
        MOV  p0,#0          ;数码管禁止显示 
        MOV  t_h,#0         ;时单元
        MOV  t_m,#0         ;分单元
        MOV  t_s,#0         ;秒单元
        MOV  time,#00h       ;计数溢出次数,溢出20次为一秒 
       clr timset         ;定时设置标志位,0->增加 1 ->减少
        MOV  timer_h,#12      ;定时器时单元,设置定时为 12:00 
        MOV  timer_m,#00h      ;定时器分单元
        MOV  p2,#255        ;禁止显示数码管 
       clr beep          ;禁止蜂鸣器 
       ret            ;返回 
; *************** 定时器 T1 中断服务程序 **** 
     tim1:clr tr1          ;首先停止定时操作
        MOV  th1,time_h       ;
        MOV  tl1,time_l 
       inc time          ;自增
        MOV  a,time         ;取得溢出次数
       cjne a,#20,retend      ;如果满20此表示到 1 秒 
       cpl p1.0          ;取反p1.0,p1.1指示秒钟 
       cpl p1.1
        MOV  time,#00h       ;重新开始等待1秒
       inc t_s          ;秒单元加1 
    retend:setb tr1          ;定时开始 
       reti            ;中断返回
; ***************** 设置定时器初始化,定时时间为 50ms ****
   pro_set: MOV  dptr,#0000h       ;数据指针清零 
        MOV  tmod,#10h       ;设置定时器1工作在方式1
        MOV  time_h,#3ch       ;计算定时50ms需要的初值
        MOV  th1,time_h       ;保存高位
        MOV  time_l,#0c1h      ;低位 
        MOV  tl1,time_l       ;保存低位
       setb ea          ;总的中断允许 
       setb et1          ;定时器1允许
       setb tr1          ;定时器1开始运行
       ret             ;返回 

; ****************** timer 程序主要完成数据的处理 **********
    timer: MOV  a,t_s          ;取得秒单元数据
       cjne a,#60,tend       ;秒不到60返回
        MOV  t_s,#00h         ;清除秒单元
       inc t_m           ;为分单元加1
        MOV  a,t_m          ;取得分单元数据
       cjne a,#60,tend       ;分不等于60返回 
        MOV  t_m,#00h        ;分单元清零 
       setb beep          ;整点短鸣提示
       lcall delay         ;鸣叫延时
       clr beep          ;停止蜂鸣器
       inc t_h           ;同时为时单元加1
        MOV  a,t_h          ;取得时单元数据
       cjne a,#24,timetest     ;如果不等于24,查看定时
        MOV  t_h,#00h        ;时单元清零
       jmp tend           ;返回 
   timetest:cjne a,timer_h,tend    ;不等于定时的时单元,返回 
        MOV  a,t_m         ;取得定时的分单元
       cjne a,timer_m,tend    ;当前分不等于定时的分单元,返回
       setb beep          ;定时到,蜂鸣提示 
       lcall delay
       clr beep 
       lcall delay 
       setb beep
       lcall delay
       clr beep          ;连续发出短音提示 
     tend:ret            ;返回 

; ************ time_display 程序主要为显示时间值用 *************
time_display:  MOV  r0,#disstart      ;取得显示单元首地址 

[1] [2] [3]  下一页


本文关键字:电子钟  51单片机单片机-工控设备 - 51单片机