找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1972|回复: 7
收起左侧

C语言建一个数组然后做对比要如何实现?

[复制链接]
ID:327265 发表于 2020-10-12 11:27 | 显示全部楼层 |阅读模式
怎么做我启动A和B、C模式,但我按暂停更改模式A和B、D再启动怎么做区分我把C模式换成D模式,
我想到的是建一个数组然后做对比,如果更改模式把a标志置1,没更改a标志为0;但我不知道怎么实现
回复

使用道具 举报

ID:750420 发表于 2020-10-12 18:53 | 显示全部楼层
使用一个变量int mode=0;
使能a模式的话
mode|=0x8;
使能b模式的话
mode|=0x4;
使能c模式的话
mode|=0x2;
使能d模式的话
mode|=0x1;
回复

使用道具 举报

ID:327265 发表于 2020-10-13 08:57 | 显示全部楼层
wyqf 发表于 2020-10-12 18:53
使用一个变量int mode=0;
使能a模式的话
mode|=0x8;

这个我明白就是我不明白的就是我怎么做对比启动前和暂停更改模式要一个一个的去对比很麻烦而且也占字节,我的模式有十几种,这样也不好对比
回复

使用道具 举报

ID:748788 发表于 2020-10-13 10:45 | 显示全部楼层
大长句子表明你的思路不清晰。你说的模式是什么?模式之间有可比性吗?不妨举个例子向大家说明一下。
回复

使用道具 举报

ID:327265 发表于 2020-10-13 12:44 | 显示全部楼层
wwh2382 发表于 2020-10-13 10:45
大长句子表明你的思路不清晰。你说的模式是什么?模式之间有可比性吗?不妨举个例子向大家说明一下。

就是我要做的是个操控显示板,下面还有一个作为一个主控板。我开机默认A B模式并启动同时发送给主控板告诉它说我按下A B模式让它执行相对应的模式动作,如果我暂停并重新选模式如改成A C模式,我再次启动我得告诉下面主控板说我上面切换模式啦,得重新对于A C模式运行。就是我每更改模式都会把相对应的模式发下去,但是我想要加一个说明我更改模式的标志,我就是想请教这个问题
回复

使用道具 举报

ID:466578 发表于 2020-10-13 14:52 | 显示全部楼层
取一个字节(8bit)或2字节(16bit)做模式状态暂存,1为开,0为关
bit0   模式A
bit1   模式B
bit2   模式C
...
上次模式暂存异或当前模式暂存,如果=0,表示没修改模式,否则表示模式修改
回复

使用道具 举报

ID:750420 发表于 2020-10-15 20:56 | 显示全部楼层
whwteng 发表于 2020-10-13 08:57
这个我明白就是我不明白的就是我怎么做对比启动前和暂停更改模式要一个一个的去对比很麻烦而且也占字节, ...

为什么,要一个个对比?正常来讲这种模式就是借鉴了单片机中寄存器控制的方式,这样操作的话只需要吧所有的操作模式定义到一个全局变量中就可以进行控制了,比较的的话需要你自己记住他的每一位代表的含义也是和单片机的寄存器操作类似的,可以采用int a=mode&0x80;//0x80是我之前回复你设置模式a用的,a>0则被使能,a==0则不被使能。很简单的操作,而且关于你说的很占字节我不是很理解,这种方式应该是最省字节的方式了int16的话可以同时控制16种模式的开启关闭。希望你能再详细描述下你的需求
回复

使用道具 举报

ID:414556 发表于 2020-10-15 21:16 | 显示全部楼层
模式是唯一执行的吧,一个数就可以了。
MODE=0;//启动默认模式
主程序里
if (MODE==0){}//执行模式0状态
if (MODE==1){}//执行模式1状态
if (MODE==2){}//执行模式2状态
。。。。。。




回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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