標題: 新手做的單片機仿真時鐘通過編譯,但跑不起來,求各位大佬指教 [打印本頁]

作者: 米花卷    時間: 2020-4-14 05:26
標題: 新手做的單片機仿真時鐘通過編譯,但跑不起來,求各位大佬指教
#include<reg52.h>
#define uchar unsigned char;
#define uint unsigend int;
uchar position;
uchar tt;
uchar second;
uchar minute;
uchar hour;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//?????????0-9????
sbit smg_q=P1^0;   //?????????????
sbit smg_b=P1^1;
sbit smg_s=P1^2;
sbit smg_g=P1^3;
  
sbit key1=P3^7; //????4??????
sbit key2=P3^6;
sbit key3=P3^5;
sbit key4=P3^4;
void keyscan ();//????????
void display(unsigned char hour,unsigned char minute);
void delay(unsigned int timer);
void init();
void main()
{
init();
while(1)
{
  if(tt==20)
{
  tt=0;
  second++;
  if(second==60)
  {
  second=0;
  minute++;
  if(minute==60)
  {
   minute=0;
   hour++;
   if(hour==24)
   hour=0;
  }
  }
}
keyscan();
display(hour,minute);
delay(1);
}
}
  void keyscan()
  {
    if(key1==0)
{
   TR0=0;
hour++;
if(hour==24)
hour=0;
delay(200);
TR0=1;
  }
if(key2==0)
{
  TR0=0;
hour--;
if(hour<0)
hour=23;
delay(200);
TR0=1;
}
  if(key3==0)
{
  TR0=0;
minute--;
if(minute==60)
minute=0;
delay(200);
TR0=1;
}
if(key4==0)
{
  TR0=0;
minute--;
if(minute<60)
minute=59;
delay(200);
TR0=1;
}
}
  void init()
  {
    tt=0;
  position=0;
  second=0;
  minute=0;
  hour=0;
  smg_q=1;
  smg_b=1;
  smg_s=1;
  smg_g=1;
  key1=1;
  key2=1;
  TMOD=0x01;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  EA=1;
  ET0=1;
  TR0=1;
  }
  void t0() interrupt 1
  {
    TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  tt++;
  }
  void display(unsigned char hour,unsigned char minute)
  {
  P0=0xff;
  switch(position)
  {
    case 0:
   smg_g=1;
   smg_q=0;
   P0=table[hour/10];
   break;
  case 1:
   smg_q=1;
   smg_b=0;
   P0=table[hour%10];
   
    if(tt>=10);
    P0&=0x7f; //С???????????????
    break;
    case 2:
   smg_b=1;
   smg_s=0;
   P0=table[minute/10];
   break;
     case 3:
   smg_s=1;
   smg_g=0;
   P0=table[minute%10];
   break;
  }
  position++;
  if(position>3)
  position=0;

  }
  void delay(unsigned int time)
  {
   unsigned int x,y;
for(x=time;x>0;x--)
  for(y=110;y>0;y--);
  }

程序通過編譯,但在仿真上跑不起來,找了幾個小時不知道錯在哪,百度找的例子,求解啊大神

002.jpg (119.19 KB, 下載次數(shù): 95)

這是原圖

這是原圖

001.jpg (185.19 KB, 下載次數(shù): 92)

這個是我花的

這個是我花的

作者: man1234567    時間: 2020-4-15 11:17
編譯通過并不表示程序可以實現(xiàn)你想要的功能,仿真不通過并不表示實物不能實現(xiàn)功能。
如果僅求仿真通過,還是找自己的師傅比較合適。
作者: 51hei電控20210222    時間: 2020-4-15 12:56
可能出現(xiàn)了接線或者實現(xiàn)代碼的問題

作者: hyjxxy    時間: 2020-4-20 20:15
改下數(shù)碼管驅(qū)動電路試下

簡易電子時鐘.png (42.66 KB, 下載次數(shù): 87)

簡易電子時鐘.png

作者: HZ8011    時間: 2020-4-24 21:21
程序沒問題,我直接燒錄運行正常
作者: HZ8011    時間: 2020-4-24 21:22
我用的89C54,共陽
作者: 18768995280    時間: 2020-4-25 00:37
你的程序沒有問題啊,在我這里運行正常




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