找回密码
 立即注册

QQ登录

只需一步,快速开始

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

想用定时器做延时该如何实现

[复制链接]
跳转到指定楼层
楼主
ID:59121 发表于 2014-2-15 01:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*------------------*/
/* 动态数码管扫描显字                           */
/* P0 口为段选,                                   */
/* P1 口为位选。                                   */     
/* 8位数码管一直累加计数                      */
/*---------------- -*/
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
char code duan[]={     //段数组编码    0、1、2、3、4、5、6、7、8、9、0、A、B、C、D、E、F
  0x3f,0x06,0x5b,0x4f,
  0x66,0x6d,0x7d,0x07,
  0x7f,0x6f,0x77,0x7c,
  0x39,0x5e,0x79,0x71};
//uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};   //位数组编码 个、十、百、千。。。
uchar ge,shi,bai,qian,wan,swan,bwan,qwan,a;
long num;
void display(uchar,uchar,uchar,uchar,uchar,uchar,uchar,uchar);
void inti()           //程序初始化
{
TMOD=0x11;
TH0=(65536-50000);
TL0=(65536-50000);
EA=1;
ET0=1;
TR0=1;
num=0;
}
void delay(uint x)        //约为1ms延时.
{
uint i,j;
for(i=x;i>0;i--)
  for(j=121;j>0;j--);
}
void main()
{
inti();  
while(1)
{

  display(qwan,bwan,swan,wan,qian,bai,shi,ge);  //输入任意8位数。
}
}
void display(uchar a1,uchar a2,uchar a3,uchar a4,uchar a5,uchar a6,uchar a7,uchar a8)
{

P1= 0xfe;
P0= duan[a1];
     delay(1);
P0= 0;
  
P1= 0xfd;
P0= duan[a2];
  delay(1);
P0= 0;
P1= 0xfb;
P0= duan[a3];
  delay(1);
P0= 0;
P1= 0xf7;
P0= duan[a4];
  delay(1);
P0= 0;
P1= 0xef;
P0= duan[a5];
  delay(1);
P0= 0;
P1= 0xdf;
P0= duan[a6];
  delay(1);
P0= 0;
P1= 0xbf;
P0= duan[a7];
  delay(1);
P0= 0;
P1= 0x7f;
P0= duan[a8];
  delay(1);
P0= 0;
  
}
void timer0() interrupt 1
{
    TH0=(65536-50000);
TL0=(65536-50000);
a++;
if(a==49)
{
  a=0;  
  num++;
  
  ge  = num%10;
  shi = num%100/10;
  bai = num%1000/100;
  qian= num%10000/1000;
  wan = num%100000/10000;
  swan= num%1000000/100000;
  bwan= num%10000000/1000000;
  qwan= num%100000000/10000000;
}
}
想将delay()函数替换用计时器做延时,不想用 循环方式做延时,该如何改?
求好心人帮忙解答!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2014-2-22 15:16 | 只看该作者
定时器延时太占用资源了  定时器是很重要的 浪费在延时上划不来
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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