《应用程序设计.doc》由会员分享,可在线阅读,更多相关《应用程序设计.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数字电子钟(汇编)技术文档在旁边的日志里面 有系统的硬件和软件结构,以及按键的功能 需要分析和说明的朋友可以联系我sunxinhe116学校电子设计大赛的作品,可能有些地方不是很简洁,望各位高手批评指正.;*;* 数字电子钟 *;* by:孙新贺 07.4.25 * ;*;变量定义和内存分配DISP_BUFDATA30H ;显示缓冲区KEY_BUFEQU33H ;键盘缓冲区KEYTEMPEQU34H;临时按键值HOURDATA40H;小时位变量MINDATA41H;分钟位变量SECDATA42H;秒位变量ALHOURDATA43H;闹铃小时位ALMINDATA44H;闹铃分钟位;TFLAGBI
2、T2000H;定时结束的标志RUNBITBIT2001H;运行标志(为1则运行,否则停止)ALARMBIT2002H;闹铃标志位ALARMRBIT2003H;闹铃运行标志位;ORG 0000HLJMP MAIN;到主程序ORG000BHLJMPCT0S;到定时器0的中断服务程序;*;以下是延时子程序,延时时间为10msORG0020DELAY: MOV R5,#05H D1: MOV R6,#01HD2: MOV R4,#1 DJNZ R4,$ DJNZ R6,D2 DJNZ R5,D1 RET ;延时10ms子程序结束;*;以下是按键扫描子程序;p1口为按键的接口ORG 0050HKEY_S
3、CAN:MOVKEY_BUF,#00HMOVKEYTEMP,#00HMOVP1,#0FFHMOV A,P1CJNEA,#0FFH,KNEXTLJMPKRETKNEXT:MOVKEYTEMP,AKDELAY: MOV R5,#2 DD1: MOV R6,#250DD2: MOV R4,#80 DJNZ R4,$ DJNZ R6,DD2 DJNZ R5,DD1 NOP MOVP1,#0FFH MOVA,P1 CJNEA,KEYTEMP,KRET MOVKEY_BUF,AKRET:RET;*;*;*;主程序开始ORG 0100HMAIN:;初始化部分;初始化缓冲区MOV30H,#00HMOV31H,
4、#00HMOV32H,#00HMOV33H,#00HMOV40H,#00HMOV41H,#00HMOV42H,#00HMOV43H,#00HMOV44H,#00HCLRTFLAG;初始化堆栈指针MOVSP,#70H;初始化P1口MOVP1,#0FFH;初始化R7(20次50ms的中断)MOVR3,#20;初始化运行标志位SETBRUNBITCLRALARMSETBP3.6SETBP3.7;初始化T0定时器 MOVTMOD,#01HMOVTH0,#04BHMOVTL0,#0FFHSETBET0SETBEASETBTR0;*;大循环开始 MAINC:LJMPMNEXT;走时部分ORG0400H;1
5、s 的延时子程序CT0S:MOVTMOD,#01HMOVTH0,#04BHMOVTL0,#0FFHDECR3CJNER3,#00H,EEMOVR3,#20;秒增加的程序MOVR0,#SECMOVA,R0ADDA,#01HDAAMOVR0,A;分钟增加的程序CJNEA,#60H,RENDMOVSEC,#00HMOVA,MINADDA,#01HDAAMOVMIN,A;小时增加的程序CJNEA,#60H,RENDMOV MIN,#00HMOVA,HOURADDA,#01HDAAMOVHOUR,ACJNEA,#24H,DAYENDMOVHOUR,#00HEE:RETIDAYEND:RETIREND:M
6、OVR3,#20RETIMNEXT:LCALL DISPLAY ;显示子程序MOVKEY_BUF,#00HLCALL KEY_SCAN ;按键扫描子程序LCALL KEY_P ;按键处理子程序LCALLALARM_S;闹铃管理子程序LJMP MNEXT;*;*;*;以下是显示子程序;p2口输出位码,p0口输出段码ORG 0200HDISPLAY:JBALARM,ALDISP;以下是显示小时的部分MOVP2,#03HMOVA,HOURANLA,#0F0HSWAPAMOVDPTR,#CHARMOVCA,A+DPTRMOVP0,AMOVA,#80HCPL AMOV P2,ACALLDELAYCALL
7、DELAYMOVA,HOURANLA,#0FHMOVDPTR,#CHARMOVCA,A+DPTRMOVP0,AMOVA,#40HCPL AMOV P2,ACALLDELAYCALLDELAY;以下是显示分钟的部分MOVP2,#03HMOVA,MINANLA,#0F0HSWAPAMOVDPTR,#CHARMOVCA,A+DPTRMOVP0,AMOVA,#20HCPL AMOV P2,ACALLDELAYCALLDELAYMOVA,MINANLA,#0FHMOVDPTR,#CHARMOVCA,A+DPTRMOVP0,AMOVA,#10HCPL AMOV P2,ACALLDELAYCALLDELAY
8、;以下是显示秒的部分MOVP2,#03HMOVA,SECANLA,#0F0HSWAPAMOVDPTR,#CHARMOVCA,A+DPTRMOVP0,AMOVA,#08HCPL AMOV P2,ACALLDELAYCALLDELAYMOVA,SECANLA,#0FHMOVDPTR,#CHARMOVCA,A+DPTRMOVP0,AMOVA,#04HCPL AMOV P2,ACALLDELAYCALLDELAYRETALDISP:;以下是显示AL小时的部分MOVP2,#03HMOVA,ALHOURANLA,#0F0HSWAPAMOVDPTR,#CHARMOVCA,A+DPTRMOVP0,AMOVA,
9、#80HCPL AMOV P2,ACALLDELAYCALLDELAYMOVA,ALHOURANLA,#0FHMOVDPTR,#CHARMOVCA,A+DPTRMOVP0,AMOVA,#40HCPL AMOV P2,ACALLDELAYCALLDELAY;以下是显示AL分钟的部分MOVP2,#03HMOVA,ALMINANLA,#0F0HSWAPAMOVDPTR,#CHARMOVCA,A+DPTRMOVP0,AMOVA,#20HCPL AMOV P2,ACALLDELAYCALLDELAYMOVA,ALMINANLA,#0FHMOVDPTR,#CHARMOVCA,A+DPTRMOVP0,AMO
10、VA,#10HCPL AMOV P2,ACALLDELAYCALLDELAY;以下是显示AL的部分MOVP0,#0EFHMOVA,#08HCPL AMOV P2,ACALLDELAYCALLDELAYMOVP0,#1CHMOVA,#04HCPL AMOV P2,ACALLDELAYCALLDELAYRETCHAR:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H;字型码表;*;以下是按键处理子程序ORG0300HKEY_P:MOVA,KEY_BUFCJNEA,#11111110B,NKN1;按键0的处理程序;秒增加的程序MOVA,SECADD
11、A,#01HDAACJNEA,#60H,KPRET1MOV SEC,#00HRETKPRET1:MOVSEC,ARET;按键0的处理程序结束NKN1:CJNEA,#11111101B,NKN2;按键1的处理程序;分钟增加的程序JBALARM,ALKNMOVA,MINADDA,#01HDAACJNEA,#60H,KPRET2MOV MIN,#00HRETALKN:MOVA,ALMINADDA,#01HDAACJNEA,#60H,AKPRET2MOV ALMIN,#00HRETKPRET2:MOVMIN,ARETAKPRET2: MOVALMIN,ARET;按键1的处理程序结束NKN2:CJNEA
12、,#11111011B,NKN3;按键2的处理程序;小时增加的程序JBALARM,ALKMMOVA,HOURADDA,#01HDAACJNEA,#24H,KPRET3MOV HOUR,#00HRETALKM:MOVA,ALHOURADDA,#01HDAACJNEA,#24H,AKPRET3MOV ALHOUR,#00HRETKPRET3:MOVHOUR,ARETAKPRET3:MOVALHOUR,ARET;按键2的处理程序结束NKN3:CJNEA,#11110111B,NKN4;按键3的处理程序;预置时间按键JBTR0,NKN3NSETBTR0RETNKN3N:CLRTR0RET;按键3的处理
13、程序结束NKN4:CJNEA,#11101111B,NKN5;按键4的处理程序;12小时和24小时转换部分MOVA,HOURCJNEA,#12H,ZH_PLJMPZHRET;A大于12则C为0,否则C为1ZH_P:JCZHRETCLRCSUBBA,#12HDAAMOVHOUR,AZHRET:RET;按键4的处理程序结束NKN5:CJNEA,#11011111B,NKN6;按键5的处理程序 JBALARM,ALNEXT SETBALARM RETALNEXT: CLRALARM RET;按键5的处理程序结束NKN6:CJNEA,#10111111B,NKN7;按键6的处理程序 JBALARMR,ALRNEXT SETBALARMR CLRP3.6 RETALRNEXT: CLRALARMR SETBP3.6 RET;按键6的处理程序结束NKN7:CJNEA,#01111111B,NKN8;按键7的处理程序;按键7的处理程序结束NKN8:RET;* ORG0500HALARM_S:JB ALARMR,ALSNRETALSN:MOVA,HOURCJNEA,ALHOUR,NOALMOVA,MINCJNEA,ALMIN,NOALCLRP3。7NOAL:SETBP3.7RET;*;*;*END
限制150内