找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1372|回复: 5
收起左侧

求帮助 !!keil编译时出现错误:'PWM':redefinition

[复制链接]
ID:1058056 发表于 2022-12-17 17:15 来自手机 | 显示全部楼层 |阅读模式
#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_ ();
  }
}
回复

使用道具 举报

ID:94031 发表于 2022-12-18 07:51 | 显示全部楼层
PWM同时定义为位变量和int变量,前后矛盾。
回复

使用道具 举报

ID:18297 发表于 2022-12-18 08:41 | 显示全部楼层
错误提示,字面意思是PWM重复定义,
这里PWM定义的引脚端口,寄存器,
可以sbit PWM_pin=P3^7;
      int  PWM_period = 900;
防止冲突。
1.jpg
回复

使用道具 举报

ID:68189 发表于 2022-12-18 08:55 | 显示全部楼层
本帖最后由 wpppmlah 于 2022-12-18 11:23 编辑

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

使用道具 举报

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

复制代码
回复

使用道具 举报

ID:77589 发表于 2022-12-19 14:24 | 显示全部楼层
sbit PWM=P3^7;

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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