No.101899 作者:mcubase 邮件:mcubase@163.com ID:66985 登陆:8次 文章数:8篇 最后登陆IP:116.24.171.51 最后登陆:2007/11/7 15:50:40 注册:2007/1/4 19:51:49 财富:195 发帖时间:2007/1/16 12:53:14 发贴者IP:202.105.131.91 标题:mcubase:单片机数字时钟电路设计(含源码) 摘要:No.101899单片机数字时钟电路设计(含源码) / 基于单片机数字时钟程序(51与HOLTEK) / 因程序代码太长,摘些代码供网友参考 / 硬件电路及详细源码请到 单片机基地网站参考 该数字钟可实现精度误差≤ 1S/天的变精度时钟,并能方便地调节时钟、时间、定时时间等,秩序结构清晰,一看即懂,还可以配编附加一些功能如计数器功能等(扩展键盘)。 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 ; *************** 定时器 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 ;保存高位 ......
>>返回讨论的主题
|