基于单片机的万年历汇编语言程序
;真正的万年历:84bytes的51asm
;==sub_wnl===万年历==*dengmiao*2004-06-01*****guangzhou******
sjdata30h;世纪bcd00to99
nhdata31h;年号bcd00to990000to9999年
yfdata32h;月份bcd01to12
org000h
movsp,#40h
movsj,#21h;2004-05
movnh,#01h
movyf,#4h
acallsub_wnl
sjmp$
;===============sub_wnl===================
;入口:
;sjdata30h;世纪bcd00to99
;nhdata31h;年号bcd00to990000to9999年
;yfdata32h;月份bcd01to12
;出口
;acc--本月天数bcd28to31
;b--本月1日的星期数1to6==星期1to星期6
;0--星期日
;使用:acc,b,r5,r6
;stack:3bytes(不包括调用)
org50h
sub_wnl:
pushpsw
mova,sj
acallbcd2bin_mod4
;x400年:(大周期)
;=146097天=7*20871+0天
;x100年:
;000年=7*0+0+1-11=0*2+1****
;100年=7*5217+7+1-22=1*2
;200年=7*10435+7+1-44=2*2
;300年=7*15653+7+1-66=3*2
;{1,2,4,6}
mova,r6;a=r6=sj_binmod4
rlca;a=a*2+ca={1,2,4,6}****
xrla,#10000111b;a=87h-a;边界调整
movr5,a;a={86h,85h,83h,81h};r5:星期
mova,nh
jzwnl_1
acallbcd2bin_mod4
xcha,r5
subba,r5;0年;0=0+0+1+(-1)***
movr5,a
wnl_1:
mova,yf
adda,#(wnl_tab-$-4)
movca,@a+pc
movr6,a
swapa
acallwnl_f0;大年对>=3月调整准备
addca,r5;月调整
movb,#7
divab;b=amod7
mova,r6
acallwnl_f0;大年调整准备
addca,#28
poppsw
ret
wnl_tab:
db3*2+5*32+0;1bit0:2月标志
db0*2+1+1*32+0;2**bit1..2:月大小
db3*2+1*32+16;300:28天
db2*2+4*32+16;401:----
db3*2+6*32+16;510:30天
db2*2+2*32+16;611:31天
db3*2+4*32+16;7bit3:0-----
db3*2+7*32+16;8bit4:0:1/2月
db2*2+3*32+16;91:>=3月
wnl_f0:;6bytes;大年调整准备
rrca;0ah
anla,#07h;0bh
;0ch
anlc,f0;0dh
;0eh
ret;0fh
db3*2+5*32+16;10hbit5..7:星期调整数
db2*2+1*32+16;11h0:---
db3*2+3*32+16;12h1-7:调整数
bcd2bin_mod4:
;功能:a.1bytesbcdtobin
;b.mod4
;c.mul2
;入口:
;a:sjornh
;f0:大世纪
;出口
;acc--(bin(a)\4)*2-(bin(a)mod4)-f0
;r6--bin(a)mod4
;c--iif((bin(a)mod4)=0,1,0)
;使用:acc,b,r6,psw
;stack:0bytes(不包括调用)
movr6,a;bcd==>bin
anla,#0f0h;16x+y==>10x+y
swapa
movb,#(256-6);(256-6)*x+(16x+y)
mulab;
adda,r6;=256x+(10x+y)
movr6,a;mod4
anla,#3
xcha,r6;r6=binmod4={0,1,2,3}
;x4年:3*365+366=7*209+(-2)**
xrla,r6;a=(bin\4)
rra;a=(bin\4)*2**
movc,f0;大世纪调整
subba,r6
;x1年:
;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}
cjner6,#1,$+3;c=iif(r6>=1,0,1)
movf0,c;c=1为大年/大世纪
ret
;-----------------------------
end;========endoffile
Pintech品致诚邀您参加9月22日第五届(苏州)电动工具控制与充电技术研讨会
率先实现100次流片,新思科技DSO.ai引领AI设计芯片进入规模化时代
iPhone8什么时候上市?下一代iPhone那么多名字哪个最靠谱?
荣耀V9:深度解析这四大实用功能,2599元真心不贵!
5G之后又迎来了WIFI6,两者相比哪个用途更大
基于单片机的万年历汇编语言程序
多功能手机的ESD保护方法
PCB板的设计怎样变得更加实用
CBN砂轮修整设备 无需传感器的砂轮自动修整方案
今晚将有四场发布会扎堆举行 索尼Xperia 1 Ⅱ与realme真我X50 Pro 5G将亮相
澳大利亚如何利用物联网应用于智能建筑和智能城市的发展?
联发科天玑系列5G智能手机处理器预计今年的出货量将超过4500万
180°电机控制及基于uPD78F0712的家电风机解决方案
微雪电子ROC-RK3308主板CC-网络配置介绍
苹果收购3D传感器公司,智能电视和智能手表有戏?
三大运营商2019年财报对比 实力差距有多大
储能系统有哪些?
英飞凌针对NFC无源锁等应用推出集成了半桥驱动IC的单芯片解决方案NAC1080
商用咖啡机单相异步电机的优势
IIC-2012参展商芯愿景详解三大优势服务