找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6004|回复: 6
收起左侧

一位数码管,用定时器定时1秒,在P0口接BCD数码管,每秒显示的数字加1,帮忙修改代码

[复制链接]
ID:162360 发表于 2017-1-25 15:55 | 显示全部楼层 |阅读模式
求教一位数码管,用定时器定时1秒,在P0口接数码管(BCD数码管),每秒显示的数字加一,如何用定时器延时编写,我只会用延时函数写,请大神帮忙修改成定时器定时1s,帮忙修改下程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code seg7ca[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
      };   //0  1  2   3   4    5    6    7    8     9
void delay(uint t)
{
  uint i,j;
  for(i=0;i<t;i++)
  {
   for(j=0;j<124;j++);
  }
}
void main()
{
  while(1)
  {
    uchar i=0;
        for(i=0;i<10;i++)
        {
          P0=seg7ca[i];
          delay(1000);
        }

  }
}
F)%VBZX@C}UR)C9AEY3J6EY.png
回复

使用道具 举报

ID:162841 发表于 2017-1-25 20:46 来自手机 | 显示全部楼层
你看下看单片机的书籍就知道了,这个很简单的
回复

使用道具 举报

ID:57657 发表于 2017-1-27 20:51 | 显示全部楼层
定时器不能一次定1秒的话就改成200个5毫秒的,中断200次数码管值加1就行。
回复

使用道具 举报

ID:161488 发表于 2017-1-27 22:41 | 显示全部楼层
while(1)是什么意思
回复

使用道具 举报

ID:155507 发表于 2017-1-27 22:55 | 显示全部楼层
C语言中的while(1)的意思
无限循环,因为1恒为真,所以循环会一直进行下去,这个经常用到的。
while(1);
意义:这是一个死循环,代码不再向下执行。搜索
用途:
1. 一般在调试代码时,为了检测一部分代码是否OK,防止后面的代码干扰执行结果,会在观测点加上while(1);
2. 有些代码检测到运行错误时,会抛出错误(打印、设置错误码),然后进入while(1);
3. 机器需要复位时,停止喂看门狗,进入while(1); 迫使看门狗超时,产生硬件复位
while( 1 ) { 代码 }
意义:这里将会重复执行{}中的代码
用途:
1. 单片机在不使用操作系统时,主程序一般都使用这种架构
2. 操作系统中的进程,执行任务时,有些也会使用这种架构
3. {}中的代码不停地检测某个条件,当条件符合时,跳出该循环,继续向下执行
回复

使用道具 举报

ID:162935 发表于 2017-2-2 12:40 | 显示全部楼层
定时器设置延时好简单的,建议你看下书
回复

使用道具 举报

ID:137676 发表于 2017-2-2 16:35 | 显示全部楼层

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code seg7ca[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
      };   //0  1  2   3   4    5    6    7    8     9
void main()
{
        while(1)
        {
                TMOD = 0x01;
                TL0 = (65535-50000)%256;
                TH0 = (65535-50000)/256;
                TR0 = 1;
                ET0 = 1;
                EA = 1;
                count = 0;
                for(i=0;i<10;i++)
                {
                        P0=seg7ca[i];
                        while(flag);
                        flag=0;
                }
        }
}
void tm0_isr() interrupt 1 using 1
{
    TL0 = (65535-50000)%256;
    TH0 = (65535-50000)/256;
    if (coun++ == 20) flag=1,count =0;
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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