;真正的万年历: 84 bytes 的 51 ASM
;==SUB_WNL=== 万年历 ==* Deng Miao * 2004-06-01 ***** GuangZhou ******
SJ DATA 30H ; 世纪 BCD 00 TO 99
NH DATA 31H ; 年号 BCD 00 TO 99 0000 TO 9999 年
YF DATA 32H ; 月份 BCD 01 TO 12
org 000h
MOV SP, #40H
MOV SJ, #21H ;2004-05
MOV NH, #01H
MOV YF, #4H
ACALL SUB_WNL
SJMP $
;===============SUB_WNL===================
; 入口:
; SJ DATA 30H ; 世纪 BCD 00 TO 99
; NH DATA 31H ; 年号 BCD 00 TO 99 0000 TO 9999 年
; YF DATA 32H ; 月份 BCD 01 TO 12
; 出口
; ACC -- 本月天数 BCD 28 to 31
; B -- 本月1日的星期数 1 to 6 == 星期1 to 星期6
; 0 -- 星期日
; 使用: ACC, B, R5, R6
; STACK: 3 bytes (不包括调用)
ORG 50H
SUB_WNL:
PUSH PSW
MOV A, SJ
ACALL BCD2BIN_MOD4
; x 400年: (大周期)
; =146097天 = 7 * 20871 + 0 天
; x 100年:
; 000年 = 7 * 0 + 0 + 1 - 1 1 = 0 * 2 + 1 ****
; 100年 = 7 * 5217 + 7 + 1 - 2 2 = 1 * 2
; 200年 = 7 * 10435 + 7 + 1 - 4 4 = 2 * 2
; 300年 = 7 * 15653 + 7 + 1 - 6 6 = 3 * 2
; {1,2,4,6}
MOV A, R6 ; A=R6= SJ_BIN MOD 4
RLC A ; A=A*2+C A = {1,2,4,6} ****
XRL A, #10000111B ; A = 87H - A ; 边界调整
MOV R5, A ; A = {86H, 85H, 83H, 81H} ; R5: 星期
MOV A, NH
JZ WNL_1
ACALL BCD2BIN_MOD4
XCH A, R5
SUBB A, R5 ; 0 年 ; 0 = 0 + 0 + 1 + (-1) ***
MOV R5, A
WNL_1:
MOV A, YF
ADD A, #(WNL_TAB-$-4)
MOVC A, @A+PC
MOV R6, A
SWAP A
ACALL WNL_F0; 大年对>=3月调整准备
ADDC A, R5 ; 月调整
MOV B, #7
DIV AB ; B = A MOD 7
MOV A, R6
ACALL WNL_F0; 大年调整准备
ADDC A, #28
POP PSW
RET
WNL_TAB:
DB 3*2 + 5 * 32+0 ;1 BIT 0 : "2月" 标志
DB 0*2+1+1 * 32+0 ;2 ** BIT 1..2: 月大小
DB 3*2 + 1 * 32+16 ;3 00:28 天
DB 2*2 + 4 * 32+16 ;4 01:----
DB 3*2 + 6 * 32+16 ;5 10: 30 天
DB 2*2 + 2 * 32+16 ;6 11: 31 天
DB 3*2 + 4 * 32+16 ;7 BIT 3: 0 -----
DB 3*2 + 7 * 32+16 ;8 BIT 4: 0: 1/2月
DB 2*2 + 3 * 32+16 ;9 1: >=3月
WNL_F0: ; 6 BYTES ; 大年调整准备
RRC A ;0AH
ANL A, #07H ;0BH
;0CH
ANL C, F0 ;0DH
;0EH
RET ;0FH
DB 3*2 + 5 * 32+16 ;10H BIT 5..7: 星期调整数
DB 2*2 + 1 * 32+16 ;11H 0:---
DB 3*2 + 3 * 32+16 ;12H 1-7: 调整数
BCD2BIN_MOD4:
; 功能:A. 1 BYTES BCD TO BIN
; B. MOD 4
; C. MUL 2
; 入口:
; A : SJ OR NH
; F0 : 大世纪
; 出口
; ACC -- (BIN(A) \ 4) * 2 - (BIN(A) MOD 4) - F0
; R6 -- BIN(A) MOD 4
; C -- IIF( (BIN(A) MOD 4)=0, 1, 0 )
; 使用: ACC, B, R6, PSW
; STACK: 0 bytes (不包括调用)
MOV R6, A ; BCD ==> BIN
ANL A, #0F0H ; 16X+Y ==> 10X+Y
SWAP A
MOV B, #(256-6) ; (256-6)*X + (16X+Y)
MUL AB ;
ADD A, R6 ; = 256X + (10X+Y)
MOV R6, A ; MOD4
ANL A, #3
XCH A, R6 ; R6 = BIN MOD 4 = {0,1,2,3}
; X 4年:3 * 365 + 366 = 7*209 + (-2) **
XRL A, R6 ; A = (BIN \ 4)
RR A ; A = (BIN \4 ) * 2 **
MOV C, F0 ; 大世纪调整
SUBB A, R6
;X 1 年:
;0 年 0 = 0 + 0 + 1 + (-1) ***
;1 年 366 = 7*52 + 1 + 1
;2 年 366 + 365 = 7*104 + 2 + 1
;3 年 366 + 365 + 365 = 7*156+3 + 1
; {-1,1,2,3}
CJNE R6, #1, $ + 3 ; C = IIF(R6>=1, 0, 1)
MOV F0, C ; C=1 为大年/大世纪
RET
;-----------------------------
END ;======== END OF FILE
基于单片机的万年历汇编语言程序
- 万年历(23638)
相关推荐
万年历
用单片机做万年历过程中,程序调试无错误,仿真成功。但是按照电路焊接好之后却无法正常显示,表现在:1、要施加很高电压,大概7.5V时显示屏才有数字出现2、按键调整时,数字会在其位置显示,数据显的位置不对3、显示多个85望高手予以解答,小生不胜感激!
2014-04-04 17:02:50
万年历
跪求设计一种多功能万年历,该万年历可以显示时间、实时显示温度和湿度,同时还具有农历提示功能,显示中国传统节日相关信息,具有整点报时功能,每当整点到来蜂鸣器会发出一声鸣叫。主要技术指标:温湿度测量范围
2013-03-05 14:20:52
万年历54单片机,LCD12864,DS1302,18B20
万年历54单片机,LCD12864,DS1302,18B20舍弃了闹钟和报警温度,很单纯的万年历绝对可行,
2014-03-02 20:10:06
万年历制作求助
题 目:万年历电路设计内容要求:(包括规定阅读的文献、应完成的程序、图纸、实验、说明书等)一、任务设计并制作一个万年历,其组成框图如图所示。它是以单片机为主控制器,时间数据是通过AT89C52芯片
2012-10-14 00:12:02
单片机万年历
跪求一个万年历的设计,能进行阴阳历转换,基于52单片机和LCD1602液晶显示屏,各位大哥大姐,谁帮帮我呀?我真的很感谢!在线等,有代码最好呀,先谢谢了!!!
2012-05-11 00:06:40
单片机万年历设计(含程序和原理图以及PCB文件)
单片机万年历设计(含程序和原理图以及PCB文件),尽供学习哦。https://www.elecfans.com/soft/33/2008/200807215380.html
2014-10-30 14:10:34
单片机多功能万年历学习合集
平衡式的两排LED,这除了在旋转时能较好的保持平衡外,主要能利用两边交替显示方式,比单排要快一倍。 万年历-给女友做的生日礼物 纯手工打造摇摆LED时钟——原理图+程序 【电子diy设计作品
2012-11-13 17:07:34
单片机的万年历汇编语言程序
;真正的万年历: 84 bytes 的 51 ASM;==SUB_WNL=== 万年历 ==******* SJ DATA30H ; 世纪BCD00 TO 99 NH DATA31H ; 年号
2012-08-30 20:58:11
fpga 用VerilogHDL语言及DS1302设计一个万年历,将时钟及万年历信息显示在数码管上
用VerilogHDL语言及DS1302设计一个万年历,将时钟及万年历信息显示在数码管上。
2017-04-23 21:02:55
使用51单片机自制电子万年历(包含驱动、基本万年历、闹钟、日程、修改时间等)精选资料分享
归档51单片机制作电子万年历,以及proteus仿真电路图,本设计涵盖蜂鸣器、uart、timer、矩阵扫描、lcd1602显示、基本万年历(年/月/日/时/分/秒)、闹钟、日程、修改时间和小游戏等各项功能,基本上覆盖使用了51单片机内部所有资源。
2021-07-22 06:53:11
关于无字库12864万年历
手头有个无字库的12864液晶屏和两个DS12C887时钟芯片一个STC89C52单片机,想做一个万年历,苦于一直找不到相应的程序,那位好心人给发一个完整的程序啊
2014-01-15 22:15:36
基于51单片机汇编语言的数字钟课程设计报告(含有闹钟万年历) PDF文档
多功能数字钟,利用汇编语言实现了大部分学校单片机课程设计数字钟的要求功能,如报时,闹钟,万年历,生日提醒等,所有项目都是可预置的,还有一些附带功能,课程设计题目源于李群芳版单片机课本(绿皮的),对本设计有不懂的地方,可以在我的百度主页留言.附件下载:
2011-02-18 16:10:32
基于51单片机液晶万年历设计 精选资料推荐
、闹钟等功能。该电子万年历主要采用STC89C52单片机作为主控核心,用DS1302时钟芯片作为时钟、液晶12864显示屏显示。STC89C52单片机是由宏晶公司推出的,功耗小,电压可选用4~6V电压供电...
2021-07-19 08:04:59
基于单片机的万年历
想做一个基于单片机的万年历系统,时钟芯片为ds1302,max7219驱动八位数码管,动态显示年月日,时分秒,哪位大神会此c语言程序啊,,有7219的驱动也行啊,,,,
2013-06-27 11:54:37
基于单片机的液晶多功能万年历设计资料分享
单片机实训之万年历(具有时分秒,日期,星期调校功能什么是万年历????年历是中国古代传说中最古老的一部太阳历。万年历是记录一定时间范围内(比如100年或更多)的具体阳历与阴历的日期的年历,方便有需要
2021-11-10 08:04:05
基于C51单片机的万年历设计
单片机C51设计万年历注:该程序基于普中科技C51 V2.2开发板设计,库函数和硬件资料均来自普中科技,侵删。main.c大部分为原创,如有雷同,纯属巧合。名称:C51万年历。硬件:以C51芯片为
2021-07-21 09:07:20
基于FPGA的verilog万年历程序_万年历设计_明德扬资料
万年历工程说明在FPGA设计中,数字万年历属于小规模集成电路。从原理上来讲,是典型的数字电路,包括组合逻辑电路和时序电路。基于FPGA开发除设计简便、开发成本低、电路简洁等,更具备功能设计灵活方面
2017-08-02 18:05:06
基于stc89c58的万年历设计 精选资料分享
小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用STC90C516RD+单片机作为核心,功耗小,能在3V的低压工作,电压...
2021-07-20 06:30:34
如何做万年历?
屏幕是spi串口tft屏,驱动是ST7735,8线。如图。单片机是iap15l2k61s2,还有一块ds1302模块。现在想做成一个万年历。弄了好久,都不行。求大神给一个程序,谢谢。
2019-09-12 02:06:19
如何在51单片机实现电子万年历 精选资料分享
51单片机制作万年历的基本功能部分,软件特性可以在proteus上仿真,使用51单片机定时器T0做万年历计时信号源,电子万年历计时系统在timer模块,本模块主要是将年/月/日/星期/时/分/秒等
2021-07-19 07:44:08
最强万年历源码(支持24节气、支持所有单片机、ARM)
最强万年历源码(支持24节气、支持所有单片机、ARM)最强万年历源码V2.0 :1、 支持所有的单片机、ARM、AVR、MSP430、PIC等(支持C开发) 2、可嵌入任何标准C编译器 BC++
2012-08-15 22:18:41
求单片机做的万年历的keil程序和protues仿真图,要带阴历的
求单片机做的万年历的keil程序和protues仿真图,要带阴历的,不胜感激邮箱:617559176@qq.com
2015-07-19 19:34:19
求一种基于STC89C52单片机的电子万年历设计方案
基于STC89C52单片机的电子万年历是由哪些部分组成的?基于STC89C52单片机的电子万年历具有哪些功能?怎样去设计一种基于STC89C52单片机的电子万年历?
2021-07-19 08:29:23
电子万年历设计
基于STC51单片机的电子万年历,有多个595级联,有呼吸灯设计,60个LED秒灯,按键调整,含闹钟功能,闹钟数据掉电自动保存在单片机内部EEPROM中,希望对51单片机爱好者有帮助。
2013-08-08 10:44:11
跪求 基于单片机的万年历设计
基于单片机的万年历设计拟实现的基本功能:(1)可显示公历年、月、日和时、分、秒。(时钟芯片DS1302)(2)可显示公历所对应的农历年、月、日。(3)具有较高的精确度,一年的误差为1s以下。(4
2016-01-07 10:17:34
评论
查看更多