资源描述:
《51单片机数字钟汇编程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、SECEQU32H;秒即时时间伪指令MINEQU31H;分HOUREQU30H;时DAYEQU35H;EIMONEQU34H;月YEAREQU33H;年MIN_1EQU41H;分定时器1路、开存储单元HOUR_1EQU42H;时DAY_1EQU43H;MON_1EQU44H;YEAR_1EQU45H;MIN_11EQU40H;分定时器1路、关存储单元HOUR_11EQU46H;时DAY_11EQU47H;EIMON_11EQU48H;月YEAR_11EQU49H;年ORG0000HUMPMAINORG0003H;中断转换显示年月日、IN
2、TO(SB4键)LJMPWB0ORGOOOBH;计数卞断TO、方式1UMPTTOORG0013HLJMPWB1;调整时间.定时、INTI(SBO键);・—・主程序ORG0030HMAIN:MOVYEAR,#02;初始化付值MOVMON,#05MOVDA£#01MOVHOUR,#00MOVMIN,#00MOVSEC,#00CLR40H;定时单元1路清零CLR41HCLR42HCLR43HCLR44HCLR45HCLR46HCLR47HCLR48HCLR49H;-……开中断MOVTMOD,#01H;计数、模式1、TOMOVTLO,#OBOH;
3、100SM计数定时MOVTHO,#3CH;CLRP3.0MOV20H,#OAH;10次*100SMSETBPTO;T0为最高级SETBTRO;允许计数SETBETO;允许TO中断SETBEXO;允许INTO中断SETBEXI;允许INT1屮断SETBEA;开总中断■■显示、定时器启动判断LOOP:MOVRl,#30H;存储单元MOVR4,#01H;位选通MOVR3,#03H;三纟ft显示NEXT:MOVAZ@R1;MOVB,#10;将存储单元转换成两高低两组的BCD码DIVABSWAPAORLA,BMOVP0,A;输出MOVP2,R4IN
4、CR1;下一单元MOVA,R4;RLA;位移MOVR4,ALCALLDE5SM;延吋0.5SMDJNZR3,NEXT;全扫描显示一偏;……判断定时输出(只编写了一路)CJNER7,#88H,LOOP;是8则开,否则、定时已关、转;——开MOVA,YEARCJNEAZYEAR_1,LOOP_1;年比较,不等转关MOVA,MONCJNEAZMON_1ZLOOP_1MOVA,DAYCJNEA,DAY_1,LOOP_1MOVA,HOURCJNEA,HOUR_1,LOOP_1MOVA,MINCJNEA,MIN_1,LOOP_1CPLP3.0;——关
5、LOOP1:MOVA,YEARCJNEA,YEAR_11,LOOP;年比较MOVA,MONCJNEA,MON_11,LOOPMOVA,DAYCJNEA,DAY_11,LOOPMOVA,HOURCJNEA,HOUR_11ZLOOPMOVA,MINCJNEA,MIN_11,LOOPCPLP3.0LJMPLOOP;・--年刀日显示中断子程序WBO:PUSHPSWPUSHACCPUSHBPUSH01HPUSH02HPUSH03HPUSH04HMOVR2,#0FFH;中断扫描次数TURN:MOVR1,#33HMOVR4,#01HMOVR3,#03H
6、NEXT_1:MOVA,@R1MOVB,#10DIVABSWAPAORLA,BMOVP0,AMOVP2,R4INCR1RLAMOVR4ZALCALLDE5SMDJNZR3,NEXT_1DJNZR2JURN;反复显示一定时间后返回POP04HPOP03HPOP02HPOP01HPOPBPOPACCPOPPSWRETI;■一计数中断服务子程序TTO:PUSHPSWPUSHACCPUSHBPUSH06HMOVTH0,#3CH;fi装计数MOVTLO,#OBH;DJNZ20H,OUT;转到屮断跳出pop程序MOV20H,#0AH;重装:100*1
7、0=1000;…-进位程序INCSECMOVR6,SEC;CJNER6,#60,OUT;比较MOVSEC,#OO;INCMINMOVR6,MINCJNER6,#60,OUTMOVMIN,#00INCHOURMOVR6,H0URCJNER6,#25,OUTMOVHOUR,#00INCDAYMOVR5,MONCJNER5,#1,MON_22;是否1月、不是转2月MOVR5,DAYCJNER5,#32,OUT;本刀是否益出INCMONMOVDAy#lLJMPOUTOUT:POP06HPOPBPOPACCPOPPSWRETIMON_22:MOVR
8、5,MONCJNER5,#2,MON_33;是否2月、不是转3月MOVA,YEAR;判断是否瑞年MOVB,#4DIVABMOVA,BJNZMOVCJNEOUT_1;不是则转(A不为零则转)R5