| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 746 人关注过本帖
标题:[求助]用单片机做时钟,我这个程序可以实现吗?
只看楼主 加入收藏
am007
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-7-9
收藏
 问题点数:0 回复次数:0 
[求助]用单片机做时钟,我这个程序可以实现吗?

本人没有实验设备,
用仿真的软件显示很乱。
要求可以显示时,分,秒。刚开始显示全零。
有一个按钮,按一下开始计时,再按一下停止,再按一下清零。
程序如下:

SECOND EQU 30H
MINITUE EQU 31H
HOUR EQU 32H
COUNT EQU 33H
ORG 00H
START: MOV SECOND,#00H ;准备开始全部清零
MOV MINITUE,#00H
MOV HOUR, #00H
MOV COUNT,#00H

AA: MOV A,#24H ;显示00
MOV P2,A
MOV A,#3FH
MOV P0,A
LCALL DELAY1

MOV A,#0DBH ;显示--
MOV P2,A
MOV A,#40H
MOV P0,A
LCALL DELAY1

MOV A,P3 ;判断是否开始计数?
LCALL DELAY2
JB ACC.5,AA

MOV TMOD,#01H ;开始计数
MOV TH0,#(65536-50000) / 256
MOV TL0,#(65536-50000) MOD 256
SETB TR0

DISP: MOV A,SECOND
MOV B,#10
DIV AB
MOV DPTR,#TABLE ;显示秒数的十位,并存于R0
MOVC A,@A+DPTR
MOV P0,A
MOV R0,A
MOV A,#0FDH
MOV P2,A
LCALL DELAY1
MOV A,B ;显示秒数的个位,并存于R1
MOVC A,@A+DPTR
MOV P0,A
MOV R1,A
MOV A,#0FEH
MOV P2,A
LCALL DELAY1

MOV A,#0DBH ;显示--
MOV P2,A
MOV A,#40H
MOV P0,A
LCALL DELAY1

MOV A,MINITUE
MOV B,#10
DIV AB
MOV DPTR,#TABLE ;显示分数的十位,并存于R2
MOVC A,@A+DPTR
MOV P0,A
MOV R2,A
MOV A,#0EFH
MOV P2,A
LCALL DELAY1
MOV A,B
MOVC A,@A+DPTR ;显示分数的个位,并存于R3
MOV P0,A
MOV R3,A
MOV A,#0F7H
MOV P2,A
LCALL DELAY1

MOV A,#0DBH ;显示--
MOV P2,A
MOV A,#40H
MOV P0,A
LCALL DELAY1

MOV A,HOUR
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR ;显示时数的十位,并存于R4
MOV P0,A
MOV R4,A
MOV A,#07FH
MOV P2,A
LCALL DELAY1
MOV A,B
MOVC A,@A+DPTR ;显示时数的个位,并存于R5
MOV P0,A
MOV R5,A
MOV A,#0BFH
MOV P2,A
LCALL DELAY1

MOV A,P3 ;判断是否停止计数?
LCALL DELAY2
JNB ACC.5,EE
SJMP WAIT
EE: LJMP CC


WAIT: JNB TF0,FF
SJMP GG
FF: AJMP DISP
GG: CLR TF0
MOV TH0,#(65536-50000) / 256
MOV TL0,#(65536-50000) MOD 256
INC COUNT
MOV A,COUNT
CJNE A,#20,NEXT1
MOV COUNT,#00H
INC SECOND
MOV A,SECOND
CJNE A,#60,NEXT2
MOV SECOND,#00H
INC MINITUE
MOV A,MINITUE
CJNE A,#60,NEXT2
MOV MINITUE,#00H
INC HOUR
MOV A,HOUR
CJNE A,#24,NEXT2
LJMP START

NEXT2: LJMP DISP
NEXT1: LJMP WAIT

CC: MOV A,#0FDH ;显示秒数的十位
MOV P1,A
MOV P0,R0
LCALL DELAY1
MOV A,#0FEH ;显示秒数的个位
MOV P1,A
MOV P0,R1
LCALL DELAY1

MOV A,#0DBH ;显示--
MOV P2,A
MOV A,#40H
MOV P0,A
LCALL DELAY1

MOV A,#0EFH ;显示分数的十位
MOV P1,A
MOV P0,R2
LCALL DELAY1
MOV A,#0F7H ;显示分数的个位
MOV P1,A
MOV P0,R3
LCALL DELAY1

MOV A,#0DBH ;显示--
MOV P2,A
MOV A,#40H
MOV P0,A
LCALL DELAY1

MOV A,#07FH ;显示时数的十位
MOV P1,A
MOV P0,R4
LCALL DELAY1
MOV A,#0BFH ;显示时数的个位
MOV P1,A
MOV P0,R5
LCALL DELAY1

MOV A,P3 ; 判断是否清零?
LCALL DELAY2
JNB ACC.5,DD
SJMP CC

DD: LJMP START

DELAY1: MOV R2,#10 ;延时5MS
D1: MOV R3,128
DJNZ R3,$
DJNZ R2,D1
RET

DELAY2: MOV R4,#20 ;延时10MS
D2: MOV R5,#128
DJNZ R5,$
DJNZ R4,D2
RET

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END

搜索更多相关主题的帖子: 单片机 时钟 
2007-07-09 17:25
快速回复:[求助]用单片机做时钟,我这个程序可以实现吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015015 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved