基于C语言的单片机时钟设计.doc_第1页
基于C语言的单片机时钟设计.doc_第2页
基于C语言的单片机时钟设计.doc_第3页
基于C语言的单片机时钟设计.doc_第4页
基于C语言的单片机时钟设计.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

堆栈栈底80H;*;LED数码管显示器设定;P0.7-P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,a;P2.0-P2.7位控线,从左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0);显示缓冲区设定从左至右依次为78H,79H,7AH,7BH,7CH,7DH,7EH,7FH ;*;独立式键盘设定;8个按键S2至S9分别依次接在P1.0至P1.7口线;*;20H字节单元:十六进制,S2键键值01H,S3键键值02H,S4键键值04H,S5键键值08H,S6键键值10H,S7键键值20H,S8键键值40H,S9键键值80H;*;定时器/计数器资源:;T/C0:工作模式;功能;定时时间;查询或中断;*;中断系统资源;T/C0;*;键功能程序;KEYA (S2键键功能程序);KEYB (S3键键功能程序);KEYC (S4键键功能程序);KEYD (S5键键功能程序);*;中断服务程序;*;常数表格;DISBH(系统提示符P.字型代码序号表);DISBI(00-00-00字符的代码序号);TAB(共阳数码管字型代码表);*; ;子程序;DL(2毫秒延时子程序);DISP(数码管显示子程序);KEY(键扫描子程序);KEYCHULI(P1口数据处理子程序);加1子程序;*;伪指令定义 SEC EQU 30HMINEQU 31HHOUREQU 32HSECGEEQU 7FHSECSHIEQU 7EHMINGEEQU 7CHMINSHIEQU 7BHHOURGE EQU 79HHOURSHIEQU 78H;*;系统起始程序区 ORG 0000HSTART: LJMP MAINORG 000BHLJMP TC0;*;系统监控程序区ORG0030HMAIN:MOVSP,#80H ;初始化数据MOVPSW,#00HMOVTMOD,#01H ;定时器0工作方式1MOVTH0,#0D8H ;10MSMOVTL0,#0F0HSETBEASETBET0MOV R0, #20H ;RAM区首地址 MOV R7, #5FH ;RAM区单元个数 95个CHUSHI:MOV R0, #00H INC R0 ;将RAM全部清零,初始化 DJNZ R7, CHUSHI TSF: MOV DPTR, #DISBH ;系统初始化 “P.”字符代码表首地址 MOV R5, #08H MOV R0, #78HDISPTSF:CLR A MOVC A, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DISPTSFD:LCALL DISP ;调显示子程序显示提示符“P.”LCALLKEYJB20H.0,KEYALJMPD;*;键功能程序区;S2键功能程序KEYA:MOVSEC, #0 ;寄存器初始化,秒寄存器MOVMIN, #0 ;分寄存器MOVHOUR, #0 ;时寄存器MOV DPTR, #DISBI ;“00-00-00”字符代码表首地址 MOV R5, #08H MOV R0, #78HDISPTSG:CLR A MOVC A, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DISPTSGKEYAS:SETB TR0 ;开定时器DI:LCALL DISPLCALL KEYJB 20H.0,CP LJMP DICP:CLR TR0 ;S2键按下,进入调整状态DD:LCALL DISPLCALL KEYJB 20H.0,KEYASJB 20H.1,KEYBJB 20H.2,KEYCJB 20H.3,KEYDLJMP DD;S3键功能程序KEYB:LCALLHOUR_ ;调时LC:LCALLDISPLCALLKEYJB20H.0,KEYASJB20H.1,KEYBJB20H.2,KEYCJB20H.3,KEYDLJMPLC;S4键功能程序KEYC:LCALLMIN_ ;调分DIIS:LCALL DISP LCALLKEYJB20H.0,KEYASJB20H.1,KEYBJB20H.2,KEYCJB 20H.3,KEYDLJMPDIIS;S5键功能程序KEYD:LCALLSEC_ ;调秒DISS:LCALLDISPLCALLKEYJB20H.0,KEYASJB20H.1,KEYBJB20H.2,KEYCJB20H.3,KEYDLJMPDISS;中断服务程序TC0:PUSHACCPUSH BPUSHPSWSETBRS1CLRRS0MOVTH0,#0D8HMOVTL0,#0F0HINC33HMOVA,33HCJNE A,#100,REMOV33H,#0INCSECMOVA,SECMOVB,#10DIVABMOVSECSHI,AMOVSECGE, BMOVA,SECCJNEA,#60,REINCMINMOVSEC,#00HMOVSECGE,#0MOVSECSHI,#0MOVA,MINMOVB,#10DIVABMOVMINSHI, AMOVMINGE,BMOVA,MINCJNEA,#60,REINCHOURMOVMIN,#00HMOVMINGE,#0MOVMINSHI,#0MOVA,HOURMOVB,#10DIVABMOVHOURSHI,AMOVHOURGE, BMOVA,HOURCJNE A,#24,REMOVHOUR,#0MOVHOURGE,#0MOVHOURSHI,#0RE:POPPSWPOPBPOPACCRETI;延时1毫秒子程序 DL: PUSH PSW SETB RS1 SETB RS0 MOV R7, #02HDL1:MOVR6, #0FFHDL2:DJNZR6, DL2DJNZR7, DL1 POP PSWRET;显示子程序;入口:77H,78H,79H,7AH,7BH,7CH,7DH,7EH,7FH,DISP: PUSHDPHPUSHDPLPUSHACCPUSHPSW CLR RS1 ;改变当前寄存器组为组1 SETB RS0 MOV R1, #78H ;显示缓冲存储单元首地址 MOV R2, #0FEH ;从右至左显示,共阳极 DISP1:MOVA, R1MOVDPTR, #TABMOVC A, A+DPTRMOV P0, A ;送段控 MOV P2, R2 ;送位控LCALL DL ;延时2毫秒 为什么这里要延时MOV A, R2JNB ACC.7, DISP2 ;为0转移;RL AINC R1MOV R2, ALJMP DISP1DISP2:POP PSW ;恢复当前寄存器组的组号POP ACCPOP DPLPOP DPHRET;键扫描子程序KEY:LCALL KEYCHULI ;调P1口数据处理子程序 JZ EXIT ;没有键按下,转返回LCALL DISP ;调显示子程序去抖动LCALL DISP LCALL KEYCHULI ;调P1口数据处理子程序 JZ EXIT ;没有键按下,转返回MOV B,20H ;保存取反后的键值KEYSF:LCALL KEYCHULI ;调P1口数据处理子程序JZ KEY1 ;键释放,转恢复键值LCALL DISP ;调显示子程序延时 LJMP KEYSF ;等待释放KEY1:MOV 20H, B ;键值送20H保存EXIT:RET ;子程序返回;P1口数据处理子程序KEYCHULI:PUSH PSW ;保护现场CLR RS1 ;改变当前寄存器组为组1SETB RS0MOV P1,#0FFH ;先向P1口写1MOV A, P1 ;读P1口数据CPL A ;P1口数据取反MOV20H, A ;保存取反后的键值CLRRS1 ;恢复当前寄存器组为组0CLR RS0POPPSW ;恢复现场RET ;子程序返回;加1子程序SEC_:INCSECMOV A,SECMOV B,#10DIV ABMOV SECSHI,AMOV SECGE,BMOV A, SECCJNE A, #60,EXIMOV SEC, #0MOV SECGE,#0MOV SECSHI,#0LJMP EXIMIN_:INC MINMOV A,MINMOV B,#10DIV ABMOV MINSHI,AMOV MINGE,BMOV A,MINCJNE A,#60,EXIMOV MIN, #0MOV MINGE,#0MOV MINSHI,#0LJMP EXIHOUR_:INC HOURMOV A,HOURMOV B,#10DIV ABMOV HOURSHI, AMOV HOURGE, BMOV A,HOURCJNE A,#24,EXIMOV HOUR, #0MOV HOURGE, #0MOV HOURSHI, #0EXI:RET;常数表格区-;系统初始化后提示符“P.”字符代码表DISBH: DB 11H,10H,10H,10H,10H,10H,10H,1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论