问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

单片机数字时钟汇编程序设计分析

发布网友 发布时间:2022-05-04 13:38

我来回答

2个回答

热心网友 时间:2022-06-22 13:02

时钟设计基本上就是通过电子 定时器定时 到1s给一个中断 让单片机去执行中断 跳转至相应的数码管位 然后修改当前显示值 再设置到10进位加一 之后就出来数字时钟的效果 弄懂定时器 一切就顺下来了
这是一个C得时钟程序 你看明白思想 就好说汇编的语句了
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char

sbit la=P3^7;

sbit L1=P2^0;
sbit L2=P2^1;
sbit L3=P2^2;
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;

uchar aa;
uchar code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
uchar nummiao,numfen,numshi,t0;

void delayms(uchar xms)
{
uchar i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void init()
{
TMOD=0x11;
TH0=(65536-50000)%256;
TL0=(65536-50000)/256;

EA=1;
ET0=1;

}
void display(uchar nummiao,numfen,numshi)
{
uchar shishi,geshi,shifen,gefen,shimiao,gemiao;
shimiao=nummiao/10;
gemiao=nummiao%10;
shifen=numfen/10;
gefen=numfen%10;
shishi=numshi/10;
geshi=numshi%10;

la=1;
P0=table[shimiao];
la=0;
L1=0;
L2=1;
L3=1;
delayms(5);

la=1;
P0=table[gemiao];
la=0;
L1=1;
L2=1;
L3=1;
delayms(5);

la=1;
P0=0x40;
la=0;
L1=1;
L2=0;
L3=1;
delayms(5);

la=1;
P0=table[gefen];
la=0;
L1=0;
L2=0;
L3=1;
delayms(5);

la=1;
P0=table[shifen];
la=0;
L1=1;
L2=1;
L3=0;
delayms(5);

la=1;
P0=0x40;
la=0;
L1=0;
L2=1;
L3=0;
delayms(5);

la=1;
P0=table[geshi];
la=0;
L1=1;
L2=0;
L3=0;
delayms(5);

la=1;
P0=table[shishi];
la=0;
L1=0;
L2=0;
L3=0;
delayms(5);

}

void keyscan()
{
if(key1==0)
{
delayms(10);
if(key1==0)
{

numshi++;
if(numshi==24)
numshi=0;
while(!key1);

}

}

if(key2==0)
{
delayms(10);
if(key2==0)
{

if(numfen==60)
numfen=0;
numfen++;
while(!key2);

}
}

if(key3==0)
{
delayms(10);

if(key3==0)
{

nummiao=0;
while(!key3);

}
}

if(key4==0)
{
delayms(10);
if(key4==0)
{

while(!key4);
TR0=~TR0;

}
}
}

void main()
{

init();

aa=0xfe;

while(1)
{
P1=aa;

if(nummiao==60)
{
numfen++;
nummiao=0;}
if(numfen==60)
{ numshi++;
numfen=0;}
if(numshi==24)
numshi=0;
keyscan();
display(nummiao,numfen,numshi);

}

}

void t0time()interrupt 1
{

TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
t0++;
if(t0==20)
{
t0=0;

nummiao++;}

aa=_crol_(aa,1);

}

热心网友 时间:2022-06-22 13:02

楼主想要做这个产品,那是需要花钱的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
绿茶要猛冲吗,绿茶鲜嫩不需要(绿茶冲泡的正确方式) 绿茶为什么越好越不耐泡 绿茶要泡几泡?哪种绿茶最耐泡? 哪种绿茶最耐泡 职场故事:美女职员遇到暴躁老板 老板脾气坏得要命,我该怎么办 老板老爱发脾气,我们应该怎么做呀? 害怕老总发脾气怎么办 网络上用名字测和另一个人的关系准确吗 一个男生把自己的名字和另一个人的名字放在一起,中间放个"&amp;"符号... 51单片机中所有的io口默认都是高电平,为什么在执行程序之前还要执行wela=1呢? 单片机的C语言位显示 求教,利用51单片机编写两个数码管60秒倒计时,个位是从5开始计时之后才是9开始倒计时,十位显示不 #include &lt;reg52.h&gt; sbit dula=P2^6; sbit wela=P2^7;看到很多程序都用dula,wela,它们有中文意思吗? c51单片机,请问这两行代码作用 单片机延时误差的问题,求大神解答 求单片机大神告诉我怎么定义dula、wela和最下面的两个错误。 在51单片机中事牍艿亩 允?C(23): error C141: syntax error near &#39;dula&#39;什么意思 89c52单片机的wela引脚跟dula引脚在哪,求高手帮忙! 我拿不粘锅蒸东西,不粘锅烧干了,锅底变成这样了,怎么办&#128561;还能用吗?_百度问一问 单片机锁存器的使用? 单片机程序中如何让数码管关闭,单片机进入休眠状态? 单片机的一个段选语句: 前面书上都写得是 dula=1; P0=table[num]; dula= 单片机 sbit dula=P2^6 wela=1 dula=1 这三句什么意思 单片机 LCD为什么要关闭dula,wela 单片机dula和diola什么意思 Xcode6 beta 6 -- “the ios 8.0 simulator runtime is not available” 三步上篮的技巧? 怎样快速三步上篮 篮球3步上篮步骤 京东方A市值估值多少合理?京东方A今天股价是多少钱?京东方A吧(000725)? 京东方A高盛估值?京东方A合理股价是多少?明日京东方A走势? 京东方A的合理股价到底是多少 京东方a市值能上万亿吗 京东方可以涨到30元,为什么没有人敢说 市值才那么一千亿,京东方到底亏了多少钱 京东方利好不断股价两市最低 foxmail为什么不显示当前邮件 foxmail 7.2版邮箱客户端右侧不能预览邮件 Foxmail 7.2邮件好多显示不出来 幼儿园中班艺术泡泡泥教案《瓶盖乌龟》 哈啰出行如停点没有位怎么办? 小苏打能用来洗口罩吗? 一次性口罩用完之后,用消毒粉消毒,还可以用么? 一次性口罩带了用84泡一下还能带吗? 以L打头男的英文名 一次性口罩怎么洗可以再次用 一次性口罩洗了还可以用吗 一次性口罩放洗衣机里杀菌后还能用吗? 口罩消毒可以用小苏打和盐?