基于C语言的单片机时钟设计Word格式.docx
- 文档编号:16473215
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:10
- 大小:17.50KB
基于C语言的单片机时钟设计Word格式.docx
《基于C语言的单片机时钟设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于C语言的单片机时钟设计Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
子程序;
DL(2毫秒延时子程序)
DISP(数码管显示子程序)
KEY(键扫描子程序);
KEYCHULI(P1口数据处理子程序)
加1子程序
伪指令定义
SECEQU30H
MINEQU31H
HOUREQU32H
SECGEEQU7FH
SECSHIEQU7EH
MINGEEQU7CH
MINSHIEQU7BH
HOURGEEQU79H
HOURSHIEQU78H
系统起始程序区
ORG0000H
START:
LJMPMAIN
ORG000BH
LJMPTC0
系统监控程序区
ORG0030H
MAIN:
MOVSP,#80H;
初始化数据
MOVPSW,#00H
MOVTMOD,#01H;
定时器0工作方式1
MOVTH0,#0D8H;
10MS
MOVTL0,#0F0H
SETBEA
SETBET0
MOVR0,#20H;
RAM区首地址
MOVR7,#5FH;
RAM区单元个数95个
CHUSHI:
MOV@R0,#00H
INCR0;
将RAM全部清零,初始化
DJNZR7,CHUSHI
TSF:
MOVDPTR,#DISBH;
系统初始化“P.”字符代码表首地址
MOVR5,#08H
MOVR0,#78H
DISPTSF:
CLRA
MOVCA,@A+DPTR
MOV@R0,A
INCR0
INCDPTR
DJNZR5,DISPTSF
D:
LCALLDISP;
调显示子程序显示提示符“P.”
LCALLKEY
JB20H.0,KEYA
LJMPD
键功能程序区
S2键功能程序
KEYA:
MOVSEC,#0;
寄存器初始化,秒寄存器
MOVMIN,#0;
分寄存器
MOVHOUR,#0;
时寄存器
MOVDPTR,#DISBI;
“00-00-00”字符代码表首地址
MOVR5,#08H
DISPTSG:
DJNZR5,DISPTSG
KEYAS:
SETBTR0;
开定时器
DI:
LCALLDISP
JB20H.0,CP
LJMPDI
CP:
CLRTR0;
S2键按下,进入调整状态
DD:
JB20H.0,KEYAS
JB20H.1,KEYB
JB20H.2,KEYC
JB20H.3,KEYD
LJMPDD
S3键功能程序
KEYB:
LCALLHOUR_;
调时
LC:
JB20H.0,KEYAS
JB20H.1,KEYB
JB20H.2,KEYC
JB20H.3,KEYD
LJMPLC
S4键功能程序
KEYC:
LCALLMIN_;
调分
DIIS:
LCALLDISP
LJMPDIIS
S5键功能程序
KEYD:
LCALLSEC_;
调秒
DISS:
LCALLDISP
LJMPDISS
中断服务程序
TC0:
PUSHACC
PUSHB
PUSHPSW
SETBRS1
CLRRS0
MOVTH0,#0D8H
INC33H
MOVA,33H
CJNEA,#100,RE
MOV33H,#0
INCSEC
MOVA,SEC
MOVB,#10
DIVAB
MOVSECSHI,A
MOVSECGE,B
CJNEA,#60,RE
INCMIN
MOVSEC,#00H
MOVSECGE,#0
MOVSECSHI,#0
MOVA,MIN
MOVMINSHI,A
MOVMINGE,B
INCHOUR
MOVMIN,#00H
MOVMINGE,#0
MOVMINSHI,#0
MOVA,HOUR
MOVHOURSHI,A
MOVHOURGE,B
CJNEA,#24,RE
MOVHOUR,#0
MOVHOURGE,#0
MOVHOURSHI,#0
RE:
POPPSW
POPB
POPACC
RETI
延时1毫秒子程序
DL:
PUSHPSW
SETBRS1
SETBRS0
MOVR7,#02H
DL1:
MOVR6,#0FFH
DL2:
DJNZR6,DL2
DJNZR7,DL1
POPPSW
RET
显示子程序
入口:
77H,78H,79H,7AH,7BH,7CH,7DH,7EH,7FH,
DISP:
PUSHDPH
PUSHDPL
PUSHACC
CLRRS1;
改变当前寄存器组为组1
MOVR1,#78H;
显示缓冲存储单元首地址
MOVR2,#0FEH;
从右至左显示,共阳极
DISP1:
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A;
送段控
MOVP2,R2;
送位控
LCALLDL;
延时2毫秒为什么这里要延时
MOVA,R2
JNBACC.7,DISP2;
为0转移;
RLA
INCR1
MOVR2,A
LJMPDISP1
DISP2:
POPPSW;
恢复当前寄存器组的组号
POPDPL
POPDPH
键扫描子程序
KEY:
LCALLKEYCHULI;
调P1口数据处理子程序
JZEXIT;
没有键按下,转返回
LCALLDISP;
调显示子程序去抖动
MOVB,20H;
保存取反后的键值
KEYSF:
JZKEY1;
键释放,转恢复键值
调显示子程序延时
LJMPKEYSF;
等待释放
KEY1:
MOV20H,B;
键值送20H保存
EXIT:
RET;
子程序返回
P1口数据处理子程序
KEYCHULI:
PUSHPSW;
保护现场
CLRRS1;
SETBRS0
MOVP1,#0FFH;
先向P1口写1
MOVA,P1;
读P1口数据
CPLA;
P1口数据取反
MOV20H,A;
CLRRS1;
恢复当前寄存器组为组0
CLRRS0
POPPSW;
恢复现场
RET;
SEC_:
INCSEC
MOVSECSHI,A
CJNEA,#60,EXI
MOVSEC,#0
MOVSECSHI,#0
LJMPEXI
MIN_:
INCMIN
CJNEA,#60,EXI
MOVMIN,#0
MOVMINSHI,#0
HOUR_:
INCHOUR
MOVHOURSHI,A
CJNEA,#24,EXI
MOVHOURGE,#0
MOVHOURSHI,#0
EXI:
RET
常数表格区------------------------------------------------------------
系统初始化后提示符“P.”字符代码表
DISBH:
DB11H,10H,10H,10H,10H,10H,10H,10H;
“P.”字符序号
DISBI:
DB00H,00H,12H,00H,00H,12H,00H,00H
显示字符段选码表(共阳极代码)
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;
0-8
DB90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH;
9,A,B,C,D,E,F,灭,p.END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 语言 单片机 时钟 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)