找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

keil错误gpio.h(3): error C202: 'P0M1': undefined identifier

查看数: 4729 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-12-1 16:21

正文摘要:

gpio() { P0M1=0;P0M0=0;P1M1=0;P1M0=0; P2M1=0;P2M0=0;P3M1=0;P3M0=0; P4M1=0;P4M0=0;P5M1=0;P5M0=0; } gpio.h(3): error C202: 'P0M1': undefined identifier gpio.h(3): error C202: 'P0M0': unde ...

回复

ID:57657 发表于 2021-12-1 20:27
188610329 发表于 2021-12-1 20:09
sfr     P0M0        =   0x80;
也能不报错,编译成功,

不要直接 sfr 直接用STC的头文件,不同系列型号的地址都可能不一样。
STC8又出现了控制IO口的 PxPU、PxNCS 寄存器,很多人都没听说过。
ID:624769 发表于 2021-12-1 20:09
sfr     P0M0        =   0x80;
也能不报错,编译成功,

问题是这样真的解决问题么? 拥有P0M0的不是只有STC一家,寄存器地址不是随便填一个就OK的。
ID:57657 发表于 2021-12-1 20:03
像你这样的 PxMx 寄存器 都是STC后来加进去的,51内核是没有这些的。
ID:941608 发表于 2021-12-1 18:34
angmall 发表于 2021-12-1 17:16
前面加这个

sfr     P0M0        =   0x94;

谢谢,可以运行了
ID:941608 发表于 2021-12-1 18:33
wulin 发表于 2021-12-1 17:13
AT89x51.h头文件中没有相关寄存器,需要添加。
sfr P0M0        =   0x94;   //0000,0000 端口0模式寄存 ...

谢谢,终于弄好了
ID:624769 发表于 2021-12-1 17:33
AT89 是不能设置端口模式的。

即便添加了 SFR 也是不能正常工作的。

你最好先确认你单片机是否支持 端口模式转换,再确认是否使用了匹配的头文件。
最后,真要自己添加端口模式头文件了,再按照手册标注的寄存器地址添加。不要随便添加。每个公司的单片机寄存器定义都是不一样的。
ID:155507 发表于 2021-12-1 17:16
前面加这个

sfr     P0M0        =   0x94;
sfr     P0M1        =   0x93;
sfr     P1M0        =   0x92;
sfr     P1M1        =   0x91;
sfr     P2M0        =   0x96;
sfr     P2M1        =   0x95;
sfr     P3M0        =   0xb2;
sfr     P3M1        =   0xb1;
ID:213173 发表于 2021-12-1 17:13
111110.. 发表于 2021-12-1 16:22
代码是这样的:
#include
#include

AT89x51.h头文件中没有相关寄存器,需要添加。
sfr P0M0        =   0x94;   //0000,0000 端口0模式寄存器0
sfr P0M1        =   0x93;   //0000,0000 端口0模式寄存器1
sfr P1M0        =   0x92;   //0000,0000 端口1模式寄存器0
sfr P1M1        =   0x91;   //0000,0000 端口1模式寄存器1
sfr P2M0        =   0x96;   //0000,0000 端口2模式寄存器0
sfr P2M1        =   0x95;   //0000,0000 端口2模式寄存器1
sfr P3M0        =   0xB2;   //0000,0000 端口3模式寄存器0
sfr P3M1        =   0xB1;   //0000,0000 端口3模式寄存器1
sfr P4M0        =   0xB4;   //0000,0000 端口4模式寄存器0
sfr P4M1        =   0xB3;   //0000,0000 端口4模式寄存器1
sfr P5M0        =   0xCA;   //0000,0000 端口5模式寄存器0
sfr P5M1        =   0xC9;   //0000,0000 端口5模式寄存器1
sfr P6M0        =   0xCC;   //0000,0000 端口6模式寄存器0
sfr P6M1        =   0xCB;   //0000,0000 端口6模式寄存器1
sfr P7M0        =   0xE2;   //0000,0000 端口7模式寄存器0
sfr P7M1        =   0xE1;   //0000,0000 端口7模式寄存器1
ID:883031 发表于 2021-12-1 16:58
GPIO的头文件贴出来
ID:941608 发表于 2021-12-1 16:22
代码是这样的:
#include<AT89x51.h>
#include<intrins.h>
#include"gpio.h"
#define uint unsigned int
#define uchar unsigned char
#define x P1   
#define y P3
#define z P2
void main(void)
{
gpio();
x=0xff;
y=0xff;
while(1)
{
   z=~(x^y);
}
}

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

Powered by 单片机教程网

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