找回密码
 立即注册

QQ登录

只需一步,快速开始

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

C语言编程遇到了宏定义的问题,求解答,万分感谢

[复制链接]
跳转到指定楼层
楼主
ID:364183 发表于 2019-3-21 17:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序是初始化一块OLED
贴出来如下

void Initial_ic(void)
{
IOCLR=0xffffffff;                     
IOSET=bBS1|bBS2|bRES|bCS|bE_RD;
IOCLR=bD_C|bR_W;
Reset_SSD1331Z();
Write_Register(0xae); //Display off
Write_Register(0x81); //set contrast for colorA
Write_Register(0x91); //145
Write_Register(0x82); //set contrast for colorB
Write_Register(0x50); //80
Write_Register(0x83); //set contrast for colorC
Write_Register(0x7d); //125
Write_Register(0x87); //master current control
Write_Register(0x06); //6
Write_Register(0x8a); //Set Second Pre-change Speed For ColorA
Write_Register(0x64); //100
Write_Register(0x8b); //Set Second Pre-change Speed For ColorB
Write_Register(0x78); //120
Write_Register(0x8c); //Set Second Pre-change Speed For ColorC
Write_Register(0x64); //100
Write_Register(0xa0); //set re=map &dataformat
Write_Register(0x74);
Write_Register(0xa1); //set display start line
Write_Register(0x00);
Write_Register(0xa2); //set display offset
Write_Register(0x00);
Write_Register(0xa4); //set display mode
Write_Register(0xa8); //set multiplex ratio
Write_Register(0x3f);
Write_Register(0xad); //set master configuration
Write_Register(0x8e);
Write_Register(0xb0); //set power save
Write_Register(0x00);
Write_Register(0xb1); //phase 1 and 2 period adjustment
Write_Register(0x31);
Write_Register(0xb3); //display clock divider / oscillator frequency
Write_Register(0xf0);
Write_Register(0xbb); //Set Pre-Change Level
Write_Register(0x3a); //58
Write_Register(0xbe); //set vcomh
Write_Register(0x3e); //62
Write_Register(0xaf); //set display on
}

void Reset_SSD1331Z(void)
{
IOCLR=bRES;
Delay_1ms(10);
IOSET=bRES;
        
}
        
void Write_Register (unsigned char out_command)
{
IOCLR=bD_C;
IOCLR=bCS;
IOCLR=bR_W;
IOCLR=0x000000ff;
IOSET= out_command;
IOSET=bR_W;
IOSET=bCS;
}

void Write_Data (unsigned char out_data)
{
IOSET=bD_C;
IOCLR=bCS;
IOCLR=bR_W;
IOCLR=0x000000ff;
IOSET=out_data;
IOSETbR_W;
IOSET=bCS;
}





编译错误是
SSD1331.c(1241): error C202: 'IOCLR': undefined identifier
SSD1331.c(1242): error C202: 'IOSET': undefined identifier
SSD1331.c(1243): error C202: 'IOCLR': undefined identifier

这几个错误说没有定义,需要引用哪个文件能解决呢?
单片机入门小白,不耻下问,跪求大神,万分感谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:246251 发表于 2019-3-21 18:52 | 只看该作者
这个是寄存器吧,找书册看寄存器部分
回复

使用道具 举报

板凳
ID:234075 发表于 2019-3-21 21:02 | 只看该作者
错误提示和你描述的一样,IOCLR和IOSET不管是什么,你既然引用了,就必须在引用之前进行定义,至于你问需要引用哪个文件,你这个程序从哪儿来的?你到哪儿找,除了写这个程序的人,名称、含义、库函数大都是根据个人喜好进行命名的,所以你的这个问题别人解答不了。
从程序判断,这两个应该定义的是引脚的IO接口
回复

使用道具 举报

地板
ID:136106 发表于 2019-3-21 22:33 | 只看该作者
你的头文件有没有定义并且包含进来?
回复

使用道具 举报

5#
ID:365802 发表于 2019-3-22 08:24 | 只看该作者
看起来是控制的IO脚, 看看实际的电路定义一下就好.
回复

使用道具 举报

6#
ID:18297 发表于 2019-3-22 10:21 | 只看该作者
SSD1331.c(1241): error C202: 'IOCLR': undefined identifier
SSD1331.c(1242): error C202: 'IOSET': undefined identifier
SSD1331.c(1243): error C202: 'IOCLR': undefined identifier
这个需要看你的硬件连接,IOCLR接单片机的哪个引脚,就定义哪个?
如#define IOCLR P2^2
如果程序是别人的,可能硬件连接不一样,一定要按照自己的电路板来定义,不然编译正确了,功能也是不对的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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