专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
51单片机中如何做到像PLC那样有几千个中间寄存器M
2020-01-23 14:23
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
13693
13
13
51单片机中如何做到像PLC那样有几千个中间寄存器M,
一直不明白51单片机中资源这么少怎么样才能像PLC中那样能做到那么多的M。
有兴趣的大家讨论一下。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
Hello_World
2020-01-24 10:58
原来也是出身工控的朋友,我的常用方法:
typedef struct
{
bool BIT0: 1;
bool BIT1: 1;
bool BIT2: 1;
bool BIT3: 1;
bool BIT4: 1;
bool BIT5: 1;
bool BIT6: 1;
bool BIT7: 1;
}TYPE_BIT; //定义一个只能按位域寻址的新变量类型
typedef union
{
TYPE_BIT BIT; //可以按位域寻址
unsigned char BYTE; //可以按字节寻址
}TYPE_BIT_BYTE; //定义一个既能按位域寻址也可按字节寻址的新变量类型
TYPE_BIT_BYTE __xdata M[64]; // 位元件 M 存储位
使用的时候
M[0].BIT.BIT0相当于M0
M[0].BIT.BIT1相当于M1
M[0].BIT.BIT2相当于M2
...
依次类推,建议用宏定义预先对应好
我用的是IAR编译器,不管是8051还是AVR,都是这样用
因为IAR直接支持bool类型,所以用起来很方便
上面的示例中,数组个数为64,则实际为512个M元件,根据实际需求和RAM的大小适当的调整数组个数
这是来自之前本论坛的开源PLC项目中项目的一段源码,他用的是Keil编译,我稍作改后就成这样了。源程序作者是高手,在此感谢,深表敬佩!
楼主想用51来模仿三菱PLC,内部M元件问题不大,但里面的D元件会让你发疯(每个D元件都是16bit的)
我了解过几款国产51单片机来仿三菱PLC,其内部元件都不能与三菱完全兼容,毕竟51的RAM有限。但,如果芯片是特制的就另当别论了。
加载中...
查看其它13个回答
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
typedef struct
{
bool BIT0: 1;
bool BIT1: 1;
bool BIT2: 1;
bool BIT3: 1;
bool BIT4: 1;
bool BIT5: 1;
bool BIT6: 1;
bool BIT7: 1;
}TYPE_BIT; //定义一个只能按位域寻址的新变量类型
typedef union
{
TYPE_BIT BIT; //可以按位域寻址
unsigned char BYTE; //可以按字节寻址
}TYPE_BIT_BYTE; //定义一个既能按位域寻址也可按字节寻址的新变量类型
TYPE_BIT_BYTE __xdata M[64]; // 位元件 M 存储位
使用的时候
M[0].BIT.BIT0相当于M0
M[0].BIT.BIT1相当于M1
M[0].BIT.BIT2相当于M2
...
依次类推,建议用宏定义预先对应好
我用的是IAR编译器,不管是8051还是AVR,都是这样用
因为IAR直接支持bool类型,所以用起来很方便
上面的示例中,数组个数为64,则实际为512个M元件,根据实际需求和RAM的大小适当的调整数组个数
这是来自之前本论坛的开源PLC项目中项目的一段源码,他用的是Keil编译,我稍作改后就成这样了。源程序作者是高手,在此感谢,深表敬佩!
楼主想用51来模仿三菱PLC,内部M元件问题不大,但里面的D元件会让你发疯(每个D元件都是16bit的)
我了解过几款国产51单片机来仿三菱PLC,其内部元件都不能与三菱完全兼容,毕竟51的RAM有限。但,如果芯片是特制的就另当别论了。
一周热门 更多>