标题: 求帮助 !!keil编译时出现错误:'PWM':redefinition [打印本页]

作者: syx102    时间: 2022-12-17 17:15
标题: 求帮助 !!keil编译时出现错误:'PWM':redefinition
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit INC=P3^4;
sbit DEC=P3^5;
sbit DIR=P3^6;
sbit PWM=P3^7;
void delay(uint);
int PWM= 900;
void main(void)
{
   DIR=1;
  while(1)
  {
     if(!INC)
    PWM=PWM>0 ? PWM-1 : 0;
    if(!DEC)
    PWM=PWM<1000?PWM+1:1000;
    PWM=1;
    delay(PWM);
    PWM=0;
    delay(1000-PWM);
   }
}
void delay(uint j)
{
     for(;j>0;j--)
  {
       _nop_ ();
  }
}
作者: xuyaqi    时间: 2022-12-18 07:51
PWM同时定义为位变量和int变量,前后矛盾。
作者: zjjhtony    时间: 2022-12-18 08:41
错误提示,字面意思是PWM重复定义,
这里PWM定义的引脚端口,寄存器,
可以sbit PWM_pin=P3^7;
      int  PWM_period = 900;
防止冲突。

1.jpg (5.75 KB, 下载次数: 73)

1.jpg

作者: wpppmlah    时间: 2022-12-18 08:55
本帖最后由 wpppmlah 于 2022-12-18 11:23 编辑

确实是:PWM同时定义为位变量和int变量,前后矛盾。

作者: angmall    时间: 2022-12-18 13:00
改成这样 PWM -->> PWM_Val


  1. #include "reg51.h"
  2. #include "intrins.h"
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit INC=P3^4;
  6. sbit DEC=P3^5;
  7. sbit DIR=P3^6;
  8. sbit PWM=P3^7;
  9. void delay(uint);
  10. uint PWM_Val= 900;  //改成这样 PWM -->> PWM_Val
  11. void main(void)
  12. {
  13.    DIR=1;
  14.   while(1)
  15.   {
  16.     if(!INC)
  17.     PWM_Val=PWM_Val>0 ?   PWM_Val-1 : 0;
  18.     if(!DEC)
  19.     PWM_Val=PWM_Val<1000 ? PWM_Val+1: 1000;
  20.     PWM=1;
  21.     delay(PWM_Val);
  22.     PWM=0;
  23.     delay(1000-PWM_Val);
  24.    }
  25. }
  26. void delay(uint j)
  27. {
  28.    for(;j>0;j--)
  29.   {
  30.        _nop_ ();
  31.   }
  32. }

复制代码

作者: Longan.Wang    时间: 2022-12-19 14:24
sbit PWM=P3^7;

int PWM= 900;
明显冲突了!!!!




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