找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7191|回复: 1
打印 上一主题 下一主题
收起左侧

80c51单片机四位秒表显示程序

[复制链接]
跳转到指定楼层
楼主
ID:20464 发表于 2009-12-25 14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

以下是一个我写的一个51单片机的秒表显示程序,要求计时范围是0.000--999.9,精度为0.1秒。有两个开关控制,一个控制计时开始,一个控制计时结束。但是在实验室编译没有问题,却调不出要的效果来,LED数码管那四位一开始应该显示000.0的,但是上来确实000.0.,右边多了一个小数点,我改成左循环的话就是00.0.0,左边就会多出一个小数点,很是郁闷。希望与高手能帮忙指点一下哪里有问题···

ORG 0000H

MIAN:

 MOV 30H,#0H
 MOV 31H,#0H
 MOV 32H,#0AH
 MOV 33H,#0H;缓冲单元初始化
 MOV R3,#0AH
 MOV R4,#0AH
 MOV R5,#0AH
 MOV R6,#0AH;循环次数初始化
 
X0: 

MOV C,P1.0
 JC  X2;判断是否开始计时
 MOV C,P1.1
 JC  X6;判断是否停止计时
 MOV A,#20H;位地址
 MOV R0,#30H;指向缓冲单元

 

X1:

 MOV R1,#21H; 位选码
 PUSH ACC
 MOVX @R1,A
 MOV A,@R0
 MOV DPTR,#TAB
 MOVC A,@A+DPTR
 MOV R1,#22H;段选码
 MOVX @R1,A
 POP ACC
 JB ACC.2,X0;是否到末尾,是则跳
 RR A
 INC R0
 LJMP X1  

 

X2: 

LCALL DELAY
 MOV R0,#33H
 INC @R0
 DJNZ R3,X0
 

X3: 

MOV R0,#32H
 INC @R0
 DJNZ R4,X0

X4: 

MOV R0,#31H
 INC @R0
 DJNZ R5,X0
 

X5: 

MOV R0,#30H
 INC @R0
 DJNZ R6,X0

X6: SJMP $

 

DELAY:

MOV R2,#02H
LP: MOV TMOD,#01H
 MOV TH0,#30H
 MOV TL0,#0B0H
 SETB TR0
LOOP: JBC TF0,NEXT
 SJMP LOOP
NEXT: DJNZ R2,LP
 RET       ;0.1秒延时


TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,40H,79H,24H,30H,19H,12H,02H,78H,0H,10H;后十个为带小数点的十个数字

 END

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:63588 发表于 2014-7-7 13:03 | 只看该作者

不错的例程,,感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表