《万年历汇编语言程序.doc》由会员分享,可在线阅读,更多相关《万年历汇编语言程序.doc(6页珍藏版)》请在金锄头文库上搜索。
1、程序在下面源程序:单路采集程序:MOV DPTR,#0F8FFH MOV R0,#00H ;将存储器的首地址存在R0,R1两个寄存器中 MOV R1,#00H MOV R2,#200D ;设置循环 MOV R3,#4 MOV R4,#8DMAIN: CLR P1.1 ;选中ADC0809 PUSH DPL ;DPTR入栈 PUSH DPH MOVX DPTR,A ;启动AD转换 ACALL DELAY ;延时5ms 保证采集数据频率为200HZ MOVX A,DPTR ;读数据 SETB P1.1 ;选中存储器 MOV DPL,R0 ;将存储器的地址给DPTR MOV DPH,R1 MOVX
2、DPTR,A ;存数据 INC DPTR ;指向下一存储单元 MOV R0,DPL ;将该单元地址重新存入寄存器中 MOV R1,DPH POP DPH ;DPTR出栈 POP DPL DJNZ R2,MAIN DJNZ R3,MAIN DJNZ R4,MAIN SJMP $ DELAY: ;延时程序 延时5ms MOV R5,#100D MOV R6,#24DLA:DJNZ R5,$ DJNZ R6,LA RET END 循环采集程序:MOV 30H,#00H ;将八块存储器的首地址分别存在30-3F共16个内部存储单元 MOV 31H,#00H MOV 32H,#00H MOV 33H,#
3、20H MOV 30H,#00H ;将八块存储器的首地址分别存在30-3F共16个内部存储单元 MOV 31H,#00H MOV 32H,#00H MOV 33H,#20H MOV 34H,#00H MOV 35H,#40H MOV 36H,#00H MOV 37H,#60H MOV 38H,#00H MOV 39H,#80H MOV 3AH,#00H MOV 3BH,#0A0H MOV 3CH,#00H MOV 3DH,#0C0H MOV 3EH,#00H MOV 3FH,#0E0H MOV R2,#200D ;设置外循环200*40共8000次 MOV R3,#40D MAIN: MOV
4、DPTR,#0F8FFH ;0通道的地址 MOV R0,#30H ;R0,R1作为存储器地址的中间变量 MOV R1,#31H MOV R4,#8 ;设置内循环 LOOP: CLR P1.1 ;选中ADC0809 PUSH DPL ;DPTR入栈 PUSH DPH MOVX DPTR,A ;输入一个数启动AD转换 ACALL DELAY ;等待延时以达到每秒采集200个数据 MOVX A,DPTR ;读数据 SETB P1.1 ;选中存储器 MOV DPL,R0 ;将存储器的地址给DPTR MOV DPH,R1 MOVX DPTR,A ;存数据 INC DPTR ;指向下一存储单元 MOV R
5、0,DPL ;将该单元地址重新存入内部数据存储单元 MOV R1,DPH INC R0 ;指向下一块存储器的地址 INC R0 INC R1 INC R1 POP DPH ;DPTR出栈 POP DPL INC DPH ;指向下一通道地址 DJNZ R4,LOOP ;内循环 DJNZ R2,MAIN ;外循环 DJNZ R3,MAIN SJMP $ DELAY: ;延时程序 延时600us MOV R5,#100 MOV R6,#3 LA:DJNZ R5,$ DJNZ R6,LA RET END 基于单片机的万年历汇编语言程序时间:2011-03-27 22:19:52 来源: 作者:;真正的
6、万年历:84bytes的51ASM;=SUB_WNL=万年历=*DengMiao*2004-06-01*GuangZhou*SJDATA30H;世纪BCD00TO99NHDATA31H;年号BCD00TO990000TO9999年YFDATA32H;月份BCD01TO12org000hMOVSP,#40HMOVSJ,#21H;2004-05MOVNH,#01HMOVYF,#4HACALLSUB_WNLSJMP$;=SUB_WNL=;入口:;SJDATA30H;世纪BCD00TO99;NHDATA31H;年号BCD00TO990000TO9999年;YFDATA32H;月份BCD01TO12;出
7、口;ACC-本月天数BCD28to31;B-本月1日的星期数1to6=星期1to星期6;0-星期日;使用:ACC,B,R5,R6;STACK:3bytes(不包括调用)ORG50HSUB_WNL:PUSHPSWMOVA,SJACALLBCD2BIN_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,6MOVA,R6;A=R6=SJ_BINMOD4RLCA;A=
8、A*2+CA=1,2,4,6*XRLA,#10000111B;A=87H-A;边界调整MOVR5,A;A=86H,85H,83H,81H;R5:星期MOVA,NHJZWNL_1ACALLBCD2BIN_MOD4XCHA,R5SUBBA,R5;0年;0=0+0+1+(-1)*MOVR5,AWNL_1:MOVA,YFADDA,#(WNL_TAB-$-4)MOVCA,A+PCMOVR6,ASWAPAACALLWNL_F0;大年对=3月调整准备ADDCA,R5;月调整MOVB,#7DIVAB;B=AMOD7MOVA,R6ACALLWNL_F0;大年调整准备ADDCA,#28POPPSWRETWNL_T
9、AB: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;0AHANLA,#07H;0BH;0CHANLC,F0;0DH;0EHRET;0FHDB3*2+5*32+16;10HBIT5.7:星期调整数DB2*2+1*32+16;11H