kylew
kylew
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 107 個
工控威望: 214 點
下載積分: 534 分
在線時間: 208(小時)
注冊時間: 2010-08-08
最后登錄: 2024-09-13
查看kylew的 主題 / 回貼
樓主  發(fā)表于: 2017-05-13 10:04
要求在觸摸屏上做50到100個開關(guān)吧,同時只能接通一個開關(guān),
比如當(dāng)前有一個開關(guān)置位,按下另一個開關(guān)時當(dāng)前開關(guān)復(fù)位,按下的開關(guān)置位。
怎樣才能簡單點呢?我做的功能是有了,就是寫的程序太繁雜了!
sjbandmm
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 237 個
工控威望: 407 點
下載積分: 987 分
在線時間: 167(小時)
注冊時間: 2008-08-23
最后登錄: 2024-05-22
查看sjbandmm的 主題 / 回貼
1樓  發(fā)表于: 2017-05-13 10:54
LD SM400
MOV K0 Z0
MOV K0 D0
FOR K96
LD M0Z0
INC D0
LD SM400
INC Z0
NEXT
LD SM400
BMOV K4M0 D10 K6
LD= D0 K1
BMOV K4M0 D2 K6
LD= D0 K2
BKXOR D10 D2 D20 K6
BMOV D20 K4M0 K6
LD> D0 K2
BKRST M0 K96
END
m0-M95為開關(guān),共96個D0統(tǒng)計按鈕按下個數(shù)d10-d15保存當(dāng)前按鈕狀態(tài)當(dāng)按下一個按鈕時直接把所有按鈕狀態(tài)保存到d2-d7中當(dāng)按下2個按鈕時,將當(dāng)前按鈕狀態(tài)與原始狀態(tài)異或,得到當(dāng)前狀態(tài),其他狀態(tài)歸零并將異或得到的值傳回到m0-m95正常時不會超過2個按鈕按下,但為了防止意外,超過2個按鈕就將所有按鈕復(fù)位

我寫的復(fù)雜了,其實只要保存當(dāng)前狀態(tài),下個循環(huán)時間檢測一下本次狀態(tài)與上次狀態(tài)是否相同,如果不同執(zhí)行一次異或就可以,然后再將異或結(jié)果返回到當(dāng)前m就可以了。
[ 此帖被sjbandmm在2017-05-13 11:34重新編輯 ]
sjbandmm
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 237 個
工控威望: 407 點
下載積分: 987 分
在線時間: 167(小時)
注冊時間: 2008-08-23
最后登錄: 2024-05-22
查看sjbandmm的 主題 / 回貼
2樓  發(fā)表于: 2017-05-13 11:09
這只是我一個方法,請有其他思路的也說下自己的想法,大家一起學(xué)習(xí)!
sjbandmm
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 237 個
工控威望: 407 點
下載積分: 987 分
在線時間: 167(小時)
注冊時間: 2008-08-23
最后登錄: 2024-05-22
查看sjbandmm的 主題 / 回貼
3樓  發(fā)表于: 2017-05-16 22:27
8樓的思路不錯,就是還要完善下,某個按鈕按下后就不能自復(fù)位,必須要用別的按鈕復(fù)位。