找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机扩展IO口PC口定义位变量怎么做

[复制链接]
ID:402376 发表于 2018-9-29 19:29 | 显示全部楼层 |阅读模式
本人想将PC口的低三位输出作为LCD1602的RS RW E  3个量,但是sbit RS = PC^0;        //液晶引脚定义sbit RW = PC^1;
sbit EN = PC^2;
这样Keil报错了,不是很清楚为什么,我个人觉得应该是地址的问题,希望大神求解。
(控制字在主程序里写了COM=0x80;)


1111111.png
2222.png
回复

使用道具 举报

ID:404160 发表于 2018-9-29 23:42 | 显示全部楼层
头文件用的不是对应芯片的。也就是头文件不对
回复

使用道具 举报

ID:387733 发表于 2018-9-30 07:25 | 显示全部楼层
sbit是定义特殊功能寄存器的位变量。bit和sbit都是C51扩展的变量类型。也就是说,只有51单片机的特殊功能寄存器可以这样定义,而8255的端口是不能这样定义的。要注意的是,51单片机也不是所有特殊功能寄存器都能位定义的,只有地址能被8整除的特殊功能寄存器才可以。
回复

使用道具 举报

ID:387733 发表于 2018-9-30 07:36 | 显示全部楼层
可以先定义:

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

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

也很方便的
回复

使用道具 举报

ID:308437 发表于 2018-9-30 09:11 | 显示全部楼层
同意一楼的。你的问题是头文件错误:不是定义变量问题
回复

使用道具 举报

ID:402376 发表于 2018-9-30 12:33 | 显示全部楼层
飞云居士 发表于 2018-9-29 23:42
头文件用的不是对应芯片的。也就是头文件不对

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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