用单片机的汇编语言编写一个(十秒秒表 的编程)

要十秒秒表的哦... 要十秒秒表的哦 展开
 我来答
大别山的蜗牛
高粉答主

2016-01-13 · 一只互联网搬运的蜗牛
大别山的蜗牛
采纳数:6928 获赞数:12024

向TA提问 私信TA
展开全部
这是一个秒表,有按键实现 启动、暂停核清零功能。
#include <reg51.H>
sbit P3_5 =P3^5;
unsigned char code dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00};
unsigned char second;
unsigned char keycnt;
unsigned int tcnt;

void main(void)
{
unsigned char i,j;

TMOD=0x02;
ET0=1;
EA=1;
second=0;
P1=dispcode[second/10];
P2=dispcode[second%10];
while(1)
{
if(P3_5==0)
{
for(i=20;i>0;i--)
for(j=248;j>0;j--);
if(P3_5==0)
{
keycnt++;
switch(keycnt)
{
case 1:
TH0=0x06;
TL0=0x06;
TR0=1;
break;
case 2:
TR0=0;
break;
case 3:
keycnt=0;
second=0;
P1=dispcode[second/10];
P2=dispcode[second%10];
break;
}
while(P3_5==0);
}
}
}
}

void t0(void) interrupt 1 using 0
{
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
if(second==100)
{
second=0;
}
P1=dispcode[second/10];
P2=dispcode[second%10];
}
}
开发电子产品的致开
推荐于2018-03-09 · TA获得超过113个赞
知道答主
回答量:43
采纳率:0%
帮助的人:63.5万
展开全部
;功能:0~9,数码管显示计时;共阳接法
;P1口接数码管
ORG 0000H
LJMP MAIN
ORG 001BH ;定时器T1,中断入口
LJMP T1_ISR

ORG 0030H
;主程序
MAIN: MOV TMOD,#10H ;定时器初始化
MOV TH1,#3CH ;设定时时间50ms
MOV TL1,#0B0H
SETB EA ;开中断
SETB ET1
SETB TR1 ;启动T1
MOV R0,#20 ;中断计数器(循环次数)
MOV A,#00 ;显示计时初值
LCALL DISP ;调显示程序
SJMP $
;定时中断子程序
T1_ISR: DJNZ R0,ISR_OUT ;一秒不到退出
MOV R0,#20 ;到了,重赋计数器初值
INC A ;计时值加1
LCALL DISP ;调转换显示程序
CJNE A,#9,ISR_OUT ;判断计时值是否大于9,不是退出
MOV A,#00 ;大于9,重新赋0
ISR_OUT:MOV TH1,#3CH ;重新给计数器赋初值
MOV TL1,#0B0H
RETI
;显示子程序
DISP: MOV DPTR,#TAB ;查表
MOVC A,@A+DPTR
MOV P1,A
RET
;字符表,共阳接法0~9
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

END

曾经回答过一个类似题目,这个是在那个基础上修改的,你用Proteus仿真一下有问题Hi我
http://zhidao.baidu.com/question/158422617.html
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
性季能晓骞
2019-02-15 · TA获得超过3550个赞
知道小有建树答主
回答量:3087
采纳率:28%
帮助的人:156万
展开全部
这是一个秒表,有按键实现
启动、暂停核清零功能。
#include
<reg51.H>
sbit
P3_5
=P3^5;
unsigned
char
code
dispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00};
unsigned
char
second;
unsigned
char
keycnt;
unsigned
int
tcnt;
void
main(void)
{
unsigned
char
i,j;
TMOD=0x02;
ET0=1;
EA=1;
second=0;
P1=dispcode[second/10];
P2=dispcode[second%10];
while(1)
{
if(P3_5==0)
{
for(i=20;i>0;i--)
for(j=248;j>0;j--);
if(P3_5==0)
{
keycnt++;
switch(keycnt)
{
case
1:
TH0=0x06;
TL0=0x06;
TR0=1;
break;
case
2:
TR0=0;
break;
case
3:
keycnt=0;
second=0;
P1=dispcode[second/10];
P2=dispcode[second%10];
break;
}
while(P3_5==0);
}
}
}
}
void
t0(void)
interrupt
1
using
0
{
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
if(second==100)
{
second=0;
}
P1=dispcode[second/10];
P2=dispcode[second%10];
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
letstone
2010-06-14 · 超过30用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:79.2万
展开全部
用的是什么单片机?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式