I/O状态判断

[复制链接]
3628|15
 楼主| aonifly 发表于 2007-10-27 08:41 | 显示全部楼层 |阅读模式
请问:单片机有12个端口为输入,也就是有2的12次方种状态.在程序里怎样判断.
我是菜鸟,还别见笑!
huntington 发表于 2007-10-27 09:06 | 显示全部楼层

RE

MOV DPH,P2
MOV DPL,P0
ANL DPH,#0FH

比较DPTR和需要的值就可以了
ayb_ice 发表于 2007-10-27 09:08 | 显示全部楼层

将IO状态放在16位的变量中即可。。。

computer00 发表于 2007-10-27 09:38 | 显示全部楼层

每种情况都要处理?那你的程序量够大的...

 楼主| aonifly 发表于 2007-10-27 19:27 | 显示全部楼层

就是啊

就是这么多状态都要判断.根据各种状态的不同而让串口发送不同的组合.请问有没有简单一点的方法
computer00 发表于 2007-10-27 23:17 | 显示全部楼层

除非有规律,否则没有其它办法。

写成case语句的话,光case就有4K种,不累晕你...不知道是什么玩意,要弄这么多状态?
xwj 发表于 2007-10-27 23:27 | 显示全部楼层

先说清楚是组合状态还是12个IO各管各的!

赤铸 发表于 2007-10-28 00:34 | 显示全部楼层

LS 说到点子上了

即使是组合,也应该(而且必须)把对应操作统一编码,不可能每种情况都对应一堆不同的具体指令
5880527 发表于 2007-10-28 12:17 | 显示全部楼层

整个表来查嘛

不过里面肯定大部分的组合是不需要的,如果没规律那表也太难整了
huangqi412 发表于 2007-10-28 20:50 | 显示全部楼层

不可能这么多种没有规律的吧,

3.3v 发表于 2007-10-28 21:00 | 显示全部楼层

查表

查表
fsaok 发表于 2007-10-28 22:26 | 显示全部楼层

看你要求的组合数,

组合数少可以直接用真值表去化简,组合多就用查表法。
maxking 发表于 2007-10-29 01:08 | 显示全部楼层

从0000H开始比较

MOV   DPH,P2
MOV   DPL,P0
ANL   DPH,#0FH
然后DPTR与0000H比较,不相等就增1,再与0001H比较....
5880527 发表于 2007-10-29 09:23 | 显示全部楼层

4096种情况CASE或是CJNE下来黄花菜都凉了

ayb_ice 发表于 2007-10-29 10:01 | 显示全部楼层

"4096种情况CASE或是CJNE下来黄花菜都凉了"

SWITCH这种情况KEIL会产生散转指令,执行是很快的,关键是FLASH够用否。。。
5880527 发表于 2007-10-29 10:28 | 显示全部楼层

看来还是楼主的理解有问题

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

本版积分规则

4

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部