找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1035|回复: 8
打印 上一主题 下一主题
收起左侧

求助修改单片机代码错误

[复制链接]
跳转到指定楼层
楼主
ID:503921 发表于 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();}}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:503921 发表于 2019-4-3 11:20 | 只看该作者
本帖最后由 DarkNISS 于 2019-4-3 11:26 编辑

新手小白,请求大神帮忙看看代码错误。
回复

使用道具 举报

板凳
ID:451718 发表于 2019-4-3 12:42 | 只看该作者
你不知道先贴在记事本里面,然后再拷贝粘贴过来么?  
回复

使用道具 举报

地板
ID:395176 发表于 2019-4-3 12:55 | 只看该作者
求求你好好排下版,再发出来好吧,你这样太乱了
回复

使用道具 举报

5#
ID:246251 发表于 2019-4-3 13:11 | 只看该作者
问题也不说,报错也不贴,版也不排.....
回复

使用道具 举报

6#
ID:160500 发表于 2019-4-3 13:42 | 只看该作者
看的我是眼花缭乱,不知所踪。
回复

使用道具 举报

7#
ID:314246 发表于 2019-4-3 14:36 | 只看该作者
看着代码,有一种晕车的感觉
回复

使用道具 举报

8#
ID:213173 发表于 2019-4-3 17:34 | 只看该作者
DarkNISS 发表于 2019-4-3 11:20
新手小白,请求大神帮忙看看代码错误。

错误不是一点点,是错得离谱,好像是东拼西凑抄的来,并且抄都没有抄好。 而且楼主根本没有说明程序功能,神仙也难办。
回复

使用道具 举报

9#
ID:155507 发表于 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. }




复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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