标题: 51单片机扩展IO口PC口定义位变量怎么做 [打印本页]

作者: LonelyLiar    时间: 2018-9-29 19:29
标题: 51单片机扩展IO口PC口定义位变量怎么做
本人想将PC口的低三位输出作为LCD1602的RS RW E  3个量,但是sbit RS = PC^0;        //液晶引脚定义sbit RW = PC^1;
sbit EN = PC^2;
这样Keil报错了,不是很清楚为什么,我个人觉得应该是地址的问题,希望大神求解。
(控制字在主程序里写了COM=0x80;)


1111111.png (47.75 KB, 下载次数: 28)

1111111.png

2222.png (244.91 KB, 下载次数: 26)

2222.png

作者: 飞云居士    时间: 2018-9-29 23:42
头文件用的不是对应芯片的。也就是头文件不对
作者: sxhwdz    时间: 2018-9-30 07:25
sbit是定义特殊功能寄存器的位变量。bit和sbit都是C51扩展的变量类型。也就是说,只有51单片机的特殊功能寄存器可以这样定义,而8255的端口是不能这样定义的。要注意的是,51单片机也不是所有特殊功能寄存器都能位定义的,只有地址能被8整除的特殊功能寄存器才可以。
作者: sxhwdz    时间: 2018-9-30 07:36
可以先定义:

#define RS  0x01
#define RW 0x02
#define EN 0x04

PC=RS|RW;    // RS=1; RW=1;EN=0;

也很方便的

作者: yousunny    时间: 2018-9-30 09:11
同意一楼的。你的问题是头文件错误:不是定义变量问题
作者: LonelyLiar    时间: 2018-9-30 12:33
飞云居士 发表于 2018-9-29 23:42
头文件用的不是对应芯片的。也就是头文件不对

能告诉我是哪一个头文件不对吗,新手不是很懂




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