找回密码
 立即注册

QQ登录

只需一步,快速开始

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

我这个单片机程序怎么改啊?搞好几天了error C231: 'timer': redefinition

[复制链接]
跳转到指定楼层
楼主
大佬们帮我改一下

error C231: 'timer': redefinition

单片机源程序如下:
  1. #include<REGX51.H>
  2. //void main()
  3. //{
  4. // while(1)
  5. // {
  6. //   P2_7=0;
  7. //   P2_3=0;
  8. //   P2_2=0;
  9. //  }
  10. //}

  11. #include"INTRINS.H"

  12. sbit TRIG=P2^1;
  13. sbit ECHO=P2^0;
  14. sbit Buzzer=P2^4;
  15. sbit key1=P3^4;
  16. sbit key3=P3^3;
  17. sbit key4=P3^2;
  18. sbit key5=P3^5;
  19. sbit LEDy=P2^2;
  20. sbit LEDw=P2^3;

  21. void delay(unsigned int xms)
  22. {
  23.         unsigned int i,j;
  24.         for(i=xms;i>0;i--)
  25.         for(j=112;j>0;j--);
  26. }
  27.         
  28.         
  29. void main()
  30. {
  31.         unsigned char flag1=1;
  32.         unsigned char flag2=1;
  33.         unsigned char flag3=1;
  34.         float a;
  35.         while(1)
  36.         {
  37.                 if(key1==0)  
  38.                 {
  39.                         while(key1==0);
  40.                         flag1++;
  41.                         if(flag1>1)
  42.       {
  43.                         flag1=0;
  44.                         }
  45.                         if(flag1==0)
  46.                         {
  47.                         Buzzer=0;
  48.             delay(20);
  49.             Buzzer=1;
  50.                         }
  51.                    if(flag1==1)
  52.                         {
  53.                                 LEDw=1;
  54.                          Buzzer=0;
  55.              delay(20);
  56.              Buzzer=1;
  57.                         }
  58.                 }
  59.                 if(key3==0)  
  60.                 {
  61.                         delay(20);
  62.                         while(key3==0);
  63.                         delay(20);
  64.                         flag2++;
  65.                         if(flag2>1)
  66.       {
  67.                         flag2=0;
  68.                         }
  69.                         if(flag2==0)
  70.                         {
  71.                                 LEDy=0;
  72.                                 Buzzer=0;
  73.               delay(20);
  74.               Buzzer=1;
  75.                         }
  76.                    if(flag2==1)
  77.                         {
  78.                                 LEDy=1;
  79.                                 Buzzer=0;
  80.               delay(20);
  81.               Buzzer=1;
  82.                         }
  83.                 }
  84.                         if(key4==0)
  85.                 {
  86.                         delay(20);
  87.                         while(key4==0);
  88.                         delay(20);
  89.                         while(1)
  90.                         {
  91.                                 timer();
  92.                 ultradsonicwave_init();
  93.     ultradsonicwave_measure();
  94.                                 a=ultradsonicwave_measure();  
  95.                                 if(a<30)
  96.                                 {
  97.                                         LEDy=0;
  98.                                         LEDw=0;
  99.                                 }
  100.                                 if(a>=30)
  101.                                 {
  102.                                         LEDy=1;
  103.                                         LEDw=1;
  104.                                 }
  105.                                 delay(20);
  106.                                 if(key4==0)
  107.                                 {
  108.                                 delay(20);
  109.                                 while(key4==0);
  110.                                 delay(20);
  111.                                 break;
  112.                                 }
  113.                           }
  114.                 }
  115.         }
  116. }
  117. void timer()
  118. {
  119.         TMOD &=0xF0;
  120.         TMOD |=0x01;
  121.         TL0=0x66;
  122.         TH0=0xFC;
  123.         TF0=0;
  124.         TR0=1;
  125.         ET0=1;
  126.         EA=1;
  127.         PT0=1;
  128. }
  129. void ultrasonicwave_init(void)
  130. {
  131.         TRIG=0;
  132. timer();
  133. }
  134. float ultrasonicwave_measure(void)
  135. {
  136.         unsigned short temp_buf[10];
  137.         unsigned short temp;
  138.         unsigned int temp_sum=0;
  139.         unsigned char i=0,j=0;
  140.         float ftemp;
  141.         for(i=0;i<10;i++)
  142.         {
  143.                 TRIG=1;
  144.                 delay(20);
  145.                 TRIG=0;
  146.                 while(ECHO==1);
  147.                 TH0=0x00;
  148.                 TL0=0x00;
  149.                 TR0=0;
  150.                 while(ECHO==0);
  151.                 TR0=1;
  152.                 temp_buf[i]=TH0*256+TL0;
  153.                 delay(80);
  154.         }
  155.         
  156.         
  157.         for(i=0;i<9;i++)
  158.         {
  159.         for(j=i+1;j<10;j++)
  160.                 {
  161.                         if(temp_buf[i]>temp_buf[j])
  162.                         {
  163.                                 temp=temp_buf[i];
  164.                                 temp_buf[i]=temp_buf[j];
  165.                                 temp_buf[j]=temp;
  166.                         }
  167.                 }
  168.                 for(i=2;i<8;i++)temp_sum+=temp_buf[i];
  169.                 ftemp=(float)temp_sum/6;
  170.                 reture(float)(ftemp*0.00034/2)*100;
  171.         }
  172. }

复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2023-12-17 00:31 | 只看该作者
第120行缺interrupt关键字。
回复

使用道具 举报

板凳
ID:1057978 发表于 2023-12-17 08:17 | 只看该作者
用定时器中断得有interrupt 关键字,不用就是timer重定义,报错信息说得很清楚,你对症下药
回复

使用道具 举报

地板
ID:195496 发表于 2023-12-17 10:34 | 只看该作者
你把main函数放在最后,可以去掉很多警告
回复

使用道具 举报

5#
ID:1104621 发表于 2023-12-17 10:38 | 只看该作者
Hephaestus 发表于 2023-12-17 00:31
第120行缺interrupt关键字。

float expec‘sizeof’怎么解决啊
回复

使用道具 举报

6#
ID:883242 发表于 2023-12-17 13:36 | 只看该作者
beeee 发表于 2023-12-17 10:38
float expec‘sizeof’怎么解决啊

我不是算命的。
回复

使用道具 举报

7#
ID:384109 发表于 2023-12-17 20:36 | 只看该作者
未在函数被调用前对函数进行声明,timer只是定时器初始化,不需要interrupt,就像楼上说的,把main放到最后
回复

使用道具 举报

8#
ID:384109 发表于 2023-12-17 20:37 | 只看该作者
float前的return写错了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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