标题: 求助修改单片机代码错误 [打印本页]

作者: DarkNISS    时间: 2019-4-3 11:18
标题: 求助修改单片机代码错误
用的是keil 5,芯片是AT89C52
#include<reg51.h>#define uchar unsigned char#define uint unsegned intsbit g=P2^1;sbit s=P2^0;bit button,flag;uchar shi,ge,temp,t0;uchar code table[]={0x3f,0x6f,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}void display(shi,ge)void delay(uint z){              uint x,y;              for(x=z;x>0;x--)                            for(y=110;y>0;y--);}uchar switchscan(){              temp=P1;              if(temo==0xfe)              {                            delay(5)                            temo=P1;                            if(temo==0xfe)                            {                                          button=~button;                                          if(button)                                          TR0=1;                                          else                                          TR0=0;t0=0;                                          flag=0;                                          shi=o;                                          ge=0;                            }              }              while (temp==0xfe)              {                            temp=P1;                            desplay(shi,ge);              }              return button;}void keyscan(){              temp=P1;              if(temp==0xfd||temp==0xfb||temp==0xf7)              {delay(5);temp=P1;if               (temp==0xfd||temp==0xfb||temp==0xf7)                           switch(temp)                                          {                                          case 0xfd:                                          {                                                        TR0=~TR0;                                          }                                          break;                                          case 0xfb:                                          {                                          TR0=0;                                          t0=0;                                          shi=0;                                          ge=0;                                          }                                          break;                                          case 0xf7:{flag=~flag;}                                          break;                            }              }}while(gemp==0xfd||temp==0xfb||temp==0xf7)              {              temp=P1;              display(shi,ge);              }}Void display(shi,ge){              P0=table[shi];              s=o;              P0=table[shi];delay(1);s=1;P0=table[ge];g=o;P0=table[ge];delay(1);g=1;}void count(){              t0=0;              ge++;              if(ge==10){ge=0;shi++;}              if(shi==10)              shi=0;}main(){shi=0;ge=0;button=0;TM0D=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=0;while(1){display(shi,ge);switchscan();{while(button){display(shi,ge);switchscan();if(button)keyscan();}while(!button){TR0=0;display(shi,ge);switchscan();}}}            }void timer0() interrut 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0++;if(flag){if(t0>=2)count();}if(!flag){if(t0>=20)count();}}

作者: DarkNISS    时间: 2019-4-3 11:20
本帖最后由 DarkNISS 于 2019-4-3 11:26 编辑

新手小白,请求大神帮忙看看代码错误。
作者: robinsonlin    时间: 2019-4-3 12:42
你不知道先贴在记事本里面,然后再拷贝粘贴过来么?  
作者: 飞机翻筋斗    时间: 2019-4-3 12:55
求求你好好排下版,再发出来好吧,你这样太乱了
作者: new_hand    时间: 2019-4-3 13:11
问题也不说,报错也不贴,版也不排.....
作者: liuzx66    时间: 2019-4-3 13:42
看的我是眼花缭乱,不知所踪。
作者: lrkeji1982    时间: 2019-4-3 14:36
看着代码,有一种晕车的感觉
作者: wulin    时间: 2019-4-3 17:34
DarkNISS 发表于 2019-4-3 11:20
新手小白,请求大神帮忙看看代码错误。

错误不是一点点,是错得离谱,好像是东拼西凑抄的来,并且抄都没有抄好。 而且楼主根本没有说明程序功能,神仙也难办。
作者: angmall    时间: 2019-4-3 20:33
给你改了,对比一下就知道哪里错了。

  1. //用的是keil 5,芯片是AT89C52
  2. #include<reg51.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit g=P2^1;
  6. sbit s=P2^0;
  7. bit button, flag;
  8. uchar shi, ge, temp, t0;

  9. uchar code table[]={0x3f,0x6f,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  10. void display(uchar shi, uchar ge);
  11. void delay(uint z)
  12. {
  13.         uint x, y;
  14.        
  15.         for(x=z;x>0;x--)
  16.            for(y=110;y>0;y--);
  17. }
  18. uchar switchscan()
  19. {
  20.         temp=P1;
  21.         if(temp==0xfe)
  22.         {
  23.                 delay(5);
  24.                 temp=P1;
  25.                 if(temp==0xfe)                           
  26.                 {                                          
  27.                         button=~button;
  28.                         if(button)
  29.                         TR0=1;
  30.                         else   
  31.                         TR0=0;
  32.                
  33.                         t0=0;
  34.                         flag=0;
  35.                         shi=0; //o;
  36.                         ge=0;
  37.                 }              
  38.         }
  39.         while (temp==0xfe)
  40.         {
  41.                 temp=P1;
  42.                 display(shi, ge);
  43.         }
  44.         return button;
  45. }
  46. void keyscan()
  47. {
  48.         temp=P1;
  49.         if(temp==0xfd||temp==0xfb||temp==0xf7)
  50.         {
  51.                 delay(5);
  52.                 temp=P1;
  53.                 if  (temp==0xfd||temp==0xfb||temp==0xf7)
  54.                 switch(temp)
  55.                 {
  56.                 case 0xfd:
  57.                         {
  58.                                 TR0=~TR0;
  59.                         }
  60.                         break;
  61.                 case 0xfb:
  62.                         {
  63.                                 TR0=0;
  64.                                 t0=0;
  65.                                 shi=0;
  66.                                 ge=0;
  67.                         }  
  68.                         break;
  69.                 case 0xf7:
  70.                         {
  71.                                 flag=~flag;
  72.                         }                                          
  73.                         break;
  74.                 }
  75.         }
  76.         //}
  77.         while(temp==0xfd||temp==0xfb||temp==0xf7)
  78.         {
  79.                 temp=P1;
  80.                 display(shi, ge);
  81.         }
  82. }
  83. void display(uchar shi, uchar ge)
  84. {
  85.         P0=table[shi];
  86.         s=0; //o;
  87.         P0=table[shi];
  88.         delay(1);
  89.         s=1;
  90.         P0=table[ge];
  91.         g=0; //o;
  92.         P0=table[ge];
  93.         delay(1);
  94.         g=1;
  95. }
  96. void count()
  97. {
  98.         t0=0;
  99.         ge++;
  100.         if(ge==10)
  101.         {
  102.                 ge=0;
  103.                 shi++;
  104.         }            
  105.         if(shi==10)
  106.         shi=0;
  107. }
  108. main()
  109. {
  110.         shi=0;
  111.         ge=0;
  112.         button=0;
  113.         TMOD=0x01;  //TM0D=0x01;
  114.         TH0=(65536-50000)/256;
  115.         TL0=(65536-50000)%256;
  116.         EA=1;    //允许总中断
  117.         ET0=1;       //允许定时器0中断 ET0=0;
  118.         while(1)
  119.         {
  120.                 display(shi, ge);
  121.                 switchscan();
  122.                 {
  123.                         while(button)
  124.                         {
  125.                                 display(shi,ge);
  126.                                 switchscan();
  127.                                 if(button)  
  128.                                 keyscan();
  129.                         }
  130.                         while(!button)
  131.                         {
  132.                                 TR0=0;
  133.                                 display(shi,ge);
  134.                                 switchscan();
  135.                         }
  136.                 }
  137.         }            
  138. }

  139. void timer0() interrupt 1
  140. {
  141.         TH0=(65536-50000)/256;
  142.         TL0=(65536-50000)%256;
  143.         t0++;
  144.         if(flag)
  145.         {
  146.                 if(t0>=2) count();
  147.         }
  148.         if(!flag)
  149.         {
  150.                 if(t0>=20) count();
  151.         }
  152. }




复制代码





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1