单片机控制时钟显示源程序

发布者:muhaoying2017最新更新时间:2012-10-31 来源: 21ic 关键字:单片机  控制时钟  显示源程序 手机看文章 扫描二维码
随时随地手机看文章

这是我在大学的时候编的. 记得当时我们开发小组从下午5点调试到11点多才成功, 最有成就感的一天!  

;=======================================
; Clock  programe
; Create date: 2004_05_12
; First  Modify:  2004_05_13
; First  Modify:  2004_05_13
; Last   Modify:  2004_05_20
; Author:  Dengjingyue
;=======================================
SDA        BIT     P0.1    ;定义
SCL        BIT     P0.0    ;定义
Second_0       EQU   40H    ;定义秒个位
Second_1       EQU   41H    ;定义秒十位
LED2           EQU   42H    ;
Minute_0       EQU   43H    ;定义分个位
Minute_1       EQU   44H    ;定义分十位
LED5           EQU   45H
Hour_0         EQU   46H    ;定义小时个位
Hour_1         EQU   47H    ;定义小时十位
SECOND     EQU   48H    ;定义秒
MINUTE     EQU   49H    ;定义分
HOUR       EQU   50H    ;定义小时

ORG  0000H
     AJMP   MAIN
ORG  000BH
     AJMP   INT_CLOCK     ;中断入口
ORG  0100H
;============主程序开始=======================
MAIN:
      MOV  R7,#00H        ;赋初值
      MOV  SECOND, #00H   ;赋初值
      MOV  MINUTE, #00H   ;赋初值
      MOV  HOUR, #00H     ;赋初值
      ACALL Separate     ;拆分子程序
      ACALL DISPLAY       ;显示子程序
   ;----------------------------
      MOV  TMOD,#01H     ;设定时器0为定时方式1(16位)
      MOV TH0, #0DBH     ;定时初值高8位
      MOV TL0, #0F0H     ;定时初值低8位
      SETB EA            ;开总中断允许
      SETB ET0           ;开定时器0允许中断
      SETB TR0           ;启动定时器
      AJMP  $

;================中断服务子程序=====================
INT_CLOCK:
      MOV TH0, #0DBH       ;定时初值高8位
      MOV TL0, #0F0H       ;定时初值低8位
      INC  R7
      CJNE R7,#100, EXIT   ;每次中断时间是0.1秒, 100次是1秒.
      MOV  R7,#00          ;到1秒, R7清零
   ;-----------------------------------
      INC   SECOND         ;秒加1
      MOV   A,SECOND
      CJNE  A,#60, LP
      MOV   SECOND, #00H   ;秒清0
      INC   MINUTE         ;分加1
      MOV   A,MINUTE
      CJNE  A,#60, LP
      MOV   MINUTE, #00H   ;分清0
      INC   HOUR            ;小时1
      MOV   A,HOUR
      CJNE  A,#24, LP
      MOV   HOUR, #00H      ;小时清0
LP:    ACALL Separate       ;拆分子程序
       ACALL DISPLAY        ;显示子程序
      ; ACALL DELAY_1*       ;延时约一秒
**IT:  RETI
;===主程序结束=== [page]
;==============拆分子程序=====================
Separate:
        MOV   DPTR,#TAB1
      ;-------------------
      MOV     A,SECOND
      MOVC    A,@A+DPTR     ;查表,十六进制转为十进制数
      mov     R0,A          ;R0暂存A中的数
      ANL     A,#0FH        ;屏蔽高4位
      MOV     Second_0, A   ;送秒个位
      MOV     A,R0          ;恢复A中数
      ANL     A, #0F0H      ;屏蔽低4位
      SWAP    A             ;高4位与低4位交换
      MOV     Second_1,A    ;送秒十位
  ;--------------------
      MOV   LED2,#0FFH      ;数码管灭的显示代码
  ;--------------------
      MOV   A,MINUTE
      MOVC  A,@A+DPTR
      mov   R0,A
      ANL   A,#0FH
      MOV   Minute_0, A
      MOV   A,R0
      ANL   A, #0F0H
      SWAP  A
      MOV   Minute_1,A
   ;-----------------------
      MOV   LED5,#0FFH      ;数码管灭的显示代码
   ;-----------------------
      MOV   A,HOUR
      MOVC  A,@A+DPTR
      ANL   A,#0FH
      MOV   Hour_0, A
      MOV   A,HOUR
      ANL   A, #0F0H
      SWAP  A
      MOV   Hour_1,A
      RET
  ;-----------------------
  TAB1: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H       ; 十六进制转十进制数表
        DB 10H,11H,12H,13H,14H,15H,16H,17H,18H,19H
        DB 20H,21H,22H,23H,24H,25H,26H,27H,28H,29H
        DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
        DB 40H,41H,42H,43H,44H,45H,46H,47H,48H,49H
        DB 50H,51H,52H,53H,54H,55H,56H,57H,58H,59H
        DB 60H,61H,62H,63H,64H,65H,66H,67H,68H,69H
        DB 70H,71H,72H,73H,74H,75H,76H,77H,78H,79H
        DB 80H,81H,82H,83H,84H,85H,86H,87H,88H,89H
        DB 90H,91H,92H,93H,94H,95H,96H,97H,98H,99H
;===================显示子程序=====================
DISPLAY:
       MOV   DPTR,#TAB2         ;送显示代码首地址
      MOV     A,Second_0        ;秒个位送A
      MOVC    A,@A+DPTR         ;显示代码查表
      ACALL   SHIFT             ;调移位子程序
      MOV     A,Second_1
      MOVC    A,@A+DPTR
      ACALL   SHIFT
      MOV     A,LED2
      MOVC    A,@A+DPTR
      ACALL   SHIFT
      MOV     A,Minute_0
      MOVC    A,@A+DPTR
      ACALL   SHIFT
      MOV     A,Minute_1
      MOVC    A,@A+DPTR
      ACALL   SHIFT
      MOV     A,LED5
      MOVC    A,@A+DPTR
      ACALL   SHIFT
      MOV     A,Hour_0
      MOVC    A,@A+DPTR
      ACALL   SHIFT
      MOV     A,Hour_1
      MOVC    A,@A+DPTR
      ACALL   SHIFT
      RET
;----------------------------------------------
TAB2: DB  11H,0D7H,32H,92H,0D4H,98H,18H,0D3H   ;0,1,2,3,4,5,6,7       显示代码
      DB  10H,90H,50H,1CH,39H,16H,38H,78H,0FFH ;8,9,A,B,C,D,E,F,灭
;---------------------------------------------
;================移位子程序==================
SHIFT:      push  a            ;A进栈暂存
            MOV     R2,#8
            CLR     C
            CLR     SCL
DL:
            RLC     A
            MOV     SDA,C
            SETB    SCL
            CLR     SCL
            DJNZ    R2,DL
            pop a             ;出栈恢复A值
            RET
;============延时约一秒子程序=============
DELAY_1S:   MOV     R6,#1FH
LOOP7:      MOV     R5,#0FFH
LOOP6:      NOP
            NOP
            NOP
            NOP
            NOP
            NOP
            NOP
            NOP
            NOP
            DJNZ    R5,LOOP6
            DJNZ    R6,LOOP7
            RET
  END
完整程序请从这里下:http://www.51hei.com/ziliao/file/shiz.rar  ,本人已经测试通过.

关键字:单片机  控制时钟  显示源程序 引用地址:单片机控制时钟显示源程序

上一篇:串口通讯程序-查询法
下一篇:单片机双机通信(C51程序)

推荐阅读最新更新时间:2024-03-16 13:11

51单片机定时器控制LED灯
考试考完了,闲得无聊,正好手头有一块51学习板,捣鼓一下。控制任务如下: P1.0 控制一个 LED 灯,亮0.5s,灭0.5s。 设计思路:这里我们只用 定时器 ,不用软延时。51的定时器最多定时60ms,所以我们设置定时器每50ms中断一次,通过在中断程序设置一个变量来统计中断次数,从而实现较长时间的定时。这里我们是每500ms执行一次灯亮灯灭的动作,所以每10个中断等于500ms(50ms x 10)。第6行,全局变量 ti mer50msCount 就是中断次数。第19-23行,当timer50msCount 为10时,代表500ms时间到,把P1.0 取反,动作一次。 这里有个繁琐的地方,定时器的初值需要手工计算。不
[单片机]
51<font color='red'>单片机</font>定时器<font color='red'>控制</font>LED灯
高性能MCU重塑行业的5大特性
自动化工厂和智能汽车的进一步发展需要高级联网、实时处理、边缘分析和更先进的电机控制拓扑。这些功能的加入使得对高性能微控制器 (MCU) 的需求快速增长,这种微控制器需要超越传统MCU并提供类似处理器的功能。本文将介绍高性能Sitara™ AM2x MCU帮助设计工程师克服当前和未来系统挑战的五大特性,如图1所示。 图1:Sitara AM2x高性能MCU的优势 实现更强大的性能 MCU最近在内存大小、模拟功能集成和低功耗方面取得了不少进步。但在很多应用中,快速处理大量实时控制和传感器数据的能力同样重要。在自动化工厂中,可编程逻辑控制器(PLC)和机器人电机控制系统的处理要求已从每个内核大约100MHz增加到
[单片机]
高性能<font color='red'>MCU</font>重塑行业的5大特性
手把手教学51单片机 | 第三课之 定时器中断
1. 中断 (1)外部中断 打开总中断EA,选择外部中断EX0或EX1,因为ie可寻址,所以直接对EX0或者EX1操作,然后设置IT0(TCOD中)为电平触发还是跳变沿触发(上电默认寄存器0,为电平触发方式),然后写中断处理函数根据下表优先级确定 interrupt 后面的数字 (2)定时器中断 TMOD是定时器/计数器的工作方式寄存器, TCON是控制寄存器,控制T0T1的启动和停止及设置溢出标志 如果选用01工作方式,TH TL是16位 2^16=65536 (65536-N)/256相当于一个能装65536的水桶舀出N单位的水,然后每1us加入1单位的水的时间,最后用了5000us=50ms 接下来是TC
[单片机]
手把手教学51<font color='red'>单片机</font> | 第三课之 定时器中断
MCU为何会一再成为焦点?
随着越来也多的电子厂商不断为物联网(IoT)推出新产品,全球MCU出货量正出现巨大成长动能。特别是当前LED控制器行业的竞争给MCU的发展带来巨大的前景。 何谓MCU?我相信从事电子行业的都很清楚,MCU本质为一片单片机,它将计算机的CPU、RAM、ROM、定时计数器和多种I/O接口集成在一片芯片上想成的芯片级的计算机。MCU其实存在于我们每天接触到得各种家电、数码产品、办公设备、汽车电子以及各种仪器仪表中。 MCU经过不断的研究和发展,经历了从4位、8位、16位到现在32位的发展史。到目前为止4位MCU基本退出历史舞台。8位MCU自推出后长期处在主流地位,16位MCU的功能及地位比较尴尬,目前MCU市场份额已很少。而32位
[单片机]
<font color='red'>MCU</font>为何会一再成为焦点?
低功耗MCU发威 智能手表电池寿命大增
北京时间10月17日消息,中国触摸屏网讯,延长电池使用寿命是智慧型手表的首要开发考量。为达成此一目标,设计人员须选用在工作/动态模式下功耗较低,且能同时维持高性能运作的微控制器(MCU),并导入快速唤醒功能,以便让MCU尽可能处于休眠或閒置模式,进一步降低系统总体功耗。 所谓的智慧型手表该如何定义呢?基本上,智慧型手表是设计成手表外型、可戴式的运算装置,当和智慧型手机无线连结时,可提供更多的智慧型功能。一般常见的功能包括了日曆通知、电子邮件或简讯提示。若是同时还内建感应器,如加速度计或温度感测器等,智慧型手表就能够帮助记录与监控使用者的运动进度、表现和心跳率等。有些手表还能控制音乐、读取简讯,甚至能透过使用者手机的蓝牙低
[单片机]
多费率电能表中基于单片机串行口红外通信的设计
作者Email: 3-14159265@163.com 摘要:利用单片机的串行口、定时器/计数器T0、定时器/计数器T1、红外发射管和红外接收管等简单的软硬件就可靠地实现了多费率电能表的红外通信功能。本设计详细介绍了串行口红外通信的软硬件设计方法,并给出了具体的电路原理图、波形图和51单片机程序。 关键词: 红外通信 串行接口 电能表 SSU7301单片机 0 引言 多费率电能表是我国目前节约用电和计划用电政策下不可缺少的电能计量产品,多费率电能表的通信接口一般兼有红外接口和RS485接口。红外通信具有直观、操作简便、可靠性高等优点,是电能表中使用最为普遍的一种通信方式,是电能表和掌机之间实现抄表、编程、校时、数据管理
[应用]
第七章 点阵LED的学习
我们现在走在马路上,经常看到马路两侧有一些LED点阵广告牌,这些广告牌看起来绚烂夺目,非常吸引人,而且还会变化很多种不同的显示方式。本章我们就会学习到点阵LED的控制方式,按照惯例,先普及部分C语言知识。 7.1 变量的作用域 所谓的作用域就是指变量起作用的范围。变量按他的作用域可以分为局部变量和全局变量 1.局部变量 在一个函数内部声明的变量是内部变量,他只在本函数内有效,在此函数以外是不能使用的,这样的变量就是局部变量。此外,函数的形参也是局部变量,形参我们后边详细解释。 比如上节课定义的unsigned long stopwatch = 0,这个变量是定义在main函数内部的,所以只能由main函数使用,中断函数
[单片机]
第七章 点阵LED的学习
PC机与单片机间串行通信的实现
单片微型计算机简称单片机,它是将中央处理器(CPU)、存储器(RAM,ROM)、定时/计数器和各种接口电路都集成到一块集成电路芯片上的微型计算机。随着计算机技术尤其是单片机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、湿度等参数进行检测和控制。PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS 232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。因此如何实现PC机与单片机之间的通信具有非常重要的现实意义。针对一些远距离控制或者是危险性比较高的数据采集和控制的应用情况,本文主要介绍一种用双工方式实现PC机与单片机之间的串行通信。 1 设计方案
[单片机]
PC机与<font color='red'>单片机</font>间串行通信的实现
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved