標題: 幫我看看程序 一個簡單的數(shù)字累加器 [打印本頁]

作者: 破翳の刃    時間: 2012-4-25 13:01
標題: 幫我看看程序 一個簡單的數(shù)字累加器
#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 //中斷函數(shù)定時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) //顯示函數(shù),顯示五位數(shù) { 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)//延時函數(shù)造成殘影 { uint a,y; for(a=x;a>0;a--) for(y=110;y>0;y--); } 謝謝了 小弟剛剛學 希望各位不吝賜教 附加附件 [upload=c,計數(shù)器.c]viewFile.asp?ID=1051[/upload]
[此貼子已經(jīng)被作者于2012-4-25 13:02:36編輯過]

作者: xuqinghua    時間: 2012-4-25 17:00
不能用嗎?
作者: 破翳の刃    時間: 2012-4-25 19:15
恩 跑不了 ,只是顯示000001 幫忙瞅瞅吧?
作者: sxchenwf    時間: 2012-5-2 17:01
大致看了一下,z的數(shù)據(jù)類型錯了,不應該是uint類型的.還有中斷服務程序再調(diào)用函數(shù),太復雜,中斷服務程序越短小越好
作者: zhubaohua123    時間: 2012-11-21 17:16

已經(jīng)給你修改過了  你寫的有點小問題

 

 

 

#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  //中斷函數(shù)定時1秒
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 tt++; 
 if(tt==20)
 {
  tt=0;
  z++;
  if(z==10000)
  z=0;
  display();
 }
}
void display()
    //顯示函數(shù),顯示五位數(shù)
{    
  
  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)//延時函數(shù)造成殘影
{
 uint a,y;
 for(a=x;a>0;a--)
  for(y=110;y>0;y--);
}






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1