找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5157|回复: 4
收起左侧

帮我看看程序 一个简单的数字累加器

[复制链接]
ID:38293 发表于 2012-4-25 13:01 | 显示全部楼层 |阅读模式
#include #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; uchar ge, shi, bai, qian, wan,tt; uint z; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; void display(uint z); void delay(uchar x); void main() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; z=0; while(1); } void timer0() interrupt 1 //中断函数定时1秒 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++; if(tt==20) { tt=0; z++; if(z==10000) z=0; display(z); } } void display(z) //显示函数,显示五位数 { while(1) { wan=z/10000; qian=z%10000/1000; bai=z%1000/100; shi=z%100/10; ge=z%10; dula=1; P0=table[wan]; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(1); dula=1; P0=table[qian]; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(1); dula=1; P0=table[bai]; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(1); dula=1; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(1); dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0xef; wela=0; delay(1); } } void delay(uchar x)//延时函数造成残影 { uint a,y; for(a=x;a>0;a--) for(y=110;y>0;y--); } 谢谢了 小弟刚刚学 希望各位不吝赐教 附加附件 [upload=c,计数器.c]viewFile.asp?ID=1051[/upload]
[此贴子已经被作者于2012-4-25 13:02:36编辑过]
回复

使用道具 举报

ID:35775 发表于 2012-4-25 17:00 | 显示全部楼层
不能用吗?
回复

使用道具 举报

ID:38293 发表于 2012-4-25 19:15 | 显示全部楼层
恩 跑不了 ,只是显示000001 帮忙瞅瞅吧?
回复

使用道具 举报

ID:39537 发表于 2012-5-2 17:01 | 显示全部楼层
大致看了一下,z的数据类型错了,不应该是uint类型的.还有中断服务程序再调用函数,太复杂,中断服务程序越短小越好
回复

使用道具 举报

ID:46654 发表于 2012-11-21 17:16 | 显示全部楼层

已经给你修改过了  你写的有点小问题

 

 

 

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar ge, shi, bai, qian, wan,tt,z;

uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
void display(uchar z);
void delay(uchar x);
void main()
{
 TMOD=0x01;
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 EA=1;
 ET0=1;
 TR0=1; 
 z=0;
 while(1)

{
void display();

}
}

void timer0() interrupt 1  //中断函数定时1秒
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 tt++; 
 if(tt==20)
 {
  tt=0;
  z++;
  if(z==10000)
  z=0;
  display();
 }
}
void display()
    //显示函数,显示五位数
{    
  
  wan=z/10000;
  qian=z%10000/1000;
  bai=z%1000/100;
  shi=z%100/10;
  ge=z%10;
  dula=1;
     P0=table[wan];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xfe;
  wela=0;
  delay(1);

  dula=1;
  P0=table[qian];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xfd;
  wela=0;
  delay(1);

  dula=1;
  P0=table[bai];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xfb;
  wela=0;
  delay(1);

  dula=1;
  P0=table[shi];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xf7;
  wela=0;
  delay(1);

  dula=1;
  P0=table[ge];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xef;
  wela=0;
  delay(1);
    
   }
void delay(uchar x)//延时函数造成残影
{
 uint a,y;
 for(a=x;a>0;a--)
  for(y=110;y>0;y--);
}

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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