stc单片机电子时钟汇编

时间: 2023-08-07 18:10:28 浏览: 49
以下是STC单片机电子时钟的汇编程序示例: ``` ;*************************************************** ;STC单片机电子时钟汇编程序 ;*************************************************** ; 定义常量 YearAdd EQU 20H ; 年份加数,例如2020年就是20H MonthAdd EQU 21H ; 月份加数 DayAdd EQU 22H ; 日子加数 HourAdd EQU 23H ; 小时加数 MinAdd EQU 24H ; 分钟加数 SecAdd EQU 25H ; 秒数加数 ; 定义变量 Year DB 0 ; 年份 Month DB 0 ; 月份 Day DB 0 ; 日子 Hour DB 0 ; 小时 Min DB 0 ; 分钟 Sec DB 0 ; 秒数 ; 定义常量和变量的初始值 ORG 0 ; 程序从地址0开始执行 LJMP Main ; 跳转到主程序 ; 中断服务程序 ISR: PUSH ACC ; 保存中断前的ACC值 PUSH PSW ; 保存中断前的PSW值 MOV IE, #00H ; 禁止中断 CLR TR0 ; 停止计时器0 DJNZ TH0, Exit ; 如果TH0不为0,则退出中断服务程序 DJNZ TL0, Exit ; 如果TL0不为0,则退出中断服务程序 MOV TH0, #0FFH ; 重新设置TH0 MOV TL0, #0FFH ; 重新设置TL0 INC Sec ; 秒数加1 MOV A, Sec ; 把秒数放入累加器A中 CJNE A, #60, Skip ; 如果秒数不等于60,则跳转到Skip标号处 CLR Sec ; 秒数清零 INC Min ; 分钟加1 Skip: MOV A, Min ; 把分钟放入累加器A中 CJNE A, #60, Skip1 ; 如果分钟不等于60,则跳转到Skip1标号处 CLR Min ; 分钟清零 INC Hour ; 小时加1 Skip1: MOV A, Hour ; 把小时放入累加器A中 CJNE A, #24, Skip2 ; 如果小时不等于24,则跳转到Skip2标号处 CLR Hour ; 小时清零 INC Day ; 日子加1 Skip2: MOV A, Day ; 把日子放入累加器A中 CJNE A, #32, Skip3 ; 如果日子不等于32,则跳转到Skip3标号处 CLR Day ; 日子清零 INC Month ; 月份加1 Skip3: MOV A, Month ; 把月份放入累加器A中 CJNE A, #13, Exit ; 如果月份不等于13,则退出中断服务程序 CLR Month ; 月份清零 INC Year ; 年份加1 Exit: MOV TH0, #0FFH ; 重新设置TH0 MOV TL0, #0FFH ; 重新设置TL0 SETB TR0 ; 启动计时器0 POP PSW ; 恢复中断前的PSW值 POP ACC ; 恢复中断前的ACC值 RETI ; 从中断返回 ; 主程序 Main: MOV P0, #0FFH ; P0口输出高电平 MOV P1, #0FFH ; P1口输出高电平 MOV P2, #0FFH ; P2口输出高电平 MOV P3, #0FFH ; P3口输出高电平 MOV TMOD, #01H ; 设置计时器0为模式1 MOV TH0, #0FFH ; 设置计时器0的初值 MOV TL0, #0FFH ; 设置计时器0的初值 SETB ET0 ; 允许计时器0中断 SETB EA ; 开启总中断 MOV A, #YearAdd ; 把年份加数放入累加器A中 ADD A, #2020 ; 加上2020年 MOV Year, A ; 把结果放入Year变量中 MOV A, #MonthAdd ; 把月份加数放入累加器A中 ADD A, #10 ; 加上10月份 MOV Month, A ; 把结果放入Month变量中 MOV A, #DayAdd ; 把日子加数放入累加器A中 ADD A, #7 ; 加上7日子 MOV Day, A ; 把结果放入Day变量中 MOV A, #HourAdd ; 把小时加数放入累加器A中 ADD A, #8 ; 加上8小时 MOV Hour, A ; 把结果放入Hour变量中 MOV A, #MinAdd ; 把分钟加数放入累加器A中 ADD A, #30 ; 加上30分钟 MOV Min, A ; 把结果放入Min变量中 MOV A, #SecAdd ; 把秒数加数放入累加器A中 ADD A, #50 ; 加上50秒数 MOV Sec, A ; 把结果放入Sec变量中 Loop: SJMP Loop ; 进入死循环 ``` 该程序使用STC单片机的计时器0来实现电子时钟的功能。在中断服务程序中,每当计时器0计时到0时,就会触发中断,然后将秒数加1,如果秒数达到60,则将秒数清零,将分钟加1,以此类推。在主程序中,将初始时间的年份、月份、日子、小时、分钟、秒数分别存储在常量和变量中,并且启动计时器0和总中断,然后进入死循环。

相关推荐

最新推荐

recommend-type

STC单片机 IAP(EEPROM)的使用

STC89C51、52内部都自带有2K字节的EEPROM,54、55和58都自带有16K字节的EEPROM,STC单片机是利用IAP技术实现的EEPROM,内部Flash擦写次数可达100,000 次以上,先来介绍下ISP与IAP的区别和特点。
recommend-type

如何编写STC单片机的ISP协议

本文即介绍此情况下的ISP(In-System-Programming)程序设计方法,以及在SST和STC单片机上的具体实现.。
recommend-type

基于STC单片机的超声波清洗机

针对目前工业清洗问题,设计了一款基于STC单片机超声波清洗机系统。该系统采用STC15F2系列的单片机为控制核心,加以功率调节、半桥逆变、PWM发生与控制等模块电路,利用了调谐匹配和阻抗匹配,使压电换能器输出最大...
recommend-type

基于STC单片机的智能LED路灯控制器设计

为了充分节约能源,提高路灯控制系统的智能化,介绍了一种基于STC 单片机的智能LED 路灯控制器,引入在线监测、PWM 和电力线载波通信技术,实践应用效果良好,具有成本低、运行稳定的特点。本控制器对智能化路灯管理...
recommend-type

STC15W系列单片机初学者教程

2.STC15W4K32S4单片机简介--资料 3.单片机可以用来做什么呢? 4.单片机示例!写一个串口通讯程序,并用电脑显示图形化显示数据 您也可以直接先从这步开始学习 5.相关资料链接(数据手册,其他进阶例子,开拓眼界)
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。