欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于數碼管秒表的問題 [打印本頁]

作者: a123    時間: 2012-1-13 03:34
標題: 關于數碼管秒表的問題
寫了個秒表的程序,用到了三個數碼管,分別用三個獨立按鍵進行暫停(into),開始(t0),清零(s4)的控制,測試中發現在按下鍵時,總有一個數碼管會單獨亮,并且隨機的停留在某個數字上。松開按鍵后才會暫;蚴情_始!并且在暫停時按清零,數碼管并不能及時的顯示0,而是在按下開始后才從零開始!

作者: admin    時間: 2012-1-13 03:36

程序發出來 我幫你看看


作者: a123    時間: 2012-1-13 03:39
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar bai,shi,ge;
uint t,a;
sbit duan=P2^6;
sbit wei=P2^7;
sbit into=P3^2;
sbit t0=P3^4;
sbit s4=P3^6;
void keyscan();

void delay(uint t)
{
 uint x,y;
 for(x=t;x>0;x--)
  for(y=110;y>0;y--);
}

void init()
{
 TMOD=0X01;
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 EA=1;
 ET0=1;
 TR0=1;
}

void timer0() interrupt 1
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 t++;
 if(t==2)
 {
  t=0;
  a++;
  bai=a/100;
  shi=a%100/10;
  ge=a%10;
  if(a==1000)
  {
   a=0;
  }
 }
}

void display(uchar bai,uchar shi,uchar ge)
{
//************************
 P0=table[bai];
 duan=1;
 duan=0;
 P0=0xff;
 P0=0xfe;
 wei=1;
 wei=0;
 delay(5);
//************************
 P0=table[shi];
 duan=1;
 duan=0;
 P0=0xff;
 P0=0xfd;
 wei=1;
 wei=0;
 delay(5);
//************************
 P0=table[ge];
 duan=1;
 duan=0;
 P0=0xff;
 P0=0xfb;
 wei=1;
 wei=0;
 delay(5);
}

void main()
{
 init();
 while(1)
 {
  keyscan();
  display(bai,shi,ge);
 }
}

void keyscan()
{
 if(into==0)
 {
  delay(10);
  if(into==0)
  {
   while(!into);
   TR0=0;
  }
 }
 if(t0==0)
 {
  delay(10);
  if(t0==0)
  {
   while(!t0);
   TR0=1;
  }
 }
 if(s4==0)
 {
  delay(10);
  if(s4==0)
  {
   t=0;
   a=0;
   while(!s4);
  }
 }
}

作者: wangchengcheng    時間: 2012-1-13 09:25
因為你的按鍵是死等在那里的,當然會有問題了
作者: fufeifeng    時間: 2012-1-13 21:03
因為你的按鍵是死等在那里的,當然會有問題了




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