找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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, 下载次数: 20)

1111111.png

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

2222.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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;

也很方便的
回复

使用道具 举报

5#
ID:308437 发表于 2018-9-30 09:11 | 只看该作者
同意一楼的。你的问题是头文件错误:不是定义变量问题
回复

使用道具 举报

6#
ID:402376 发表于 2018-9-30 12:33 | 只看该作者
飞云居士 发表于 2018-9-29 23:42
头文件用的不是对应芯片的。也就是头文件不对

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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