❶ 在WINCC中如何實現按鈕點一下為1再點一下為0
{
#pragma option(mbcs)
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
#define Tag ".ManPermit"
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
SetTagBit(Tag,!GetTagBit(Tag));
}
❷ 求個按鍵精靈腳本。要求是按住按鍵1時一直執行按1的操作,松開按鍵1後就不在執行按1。
按鍵精靈後面的版本我都沒用了,我用的是9.55版本,不會出現那種情況,不過,如果按鍵精靈熱鍵會影響腳本執行時間,你可以換一個方法,寫下面代碼
While True
WaitKey()
If 48 Then
For i=1 To 10
KeyPress 65,1
Next
Wend
腳本啟動熱鍵不用設1,你先啟動腳本,然後每按一次數字1,就會馬上按10個a。
❸ 怎麼用c語言編寫一個秒錶,這個秒錶按1停止,按0清零,求大神教!!
用到time.h文件
裡面有個clock();函數,返回一個clock_t類型的數字,表示從程序運行開始,CPU的"滴答"數
而在time.h里有個常量CLOCKS_PER_SEC表示每秒鍾有多少個"滴答".
這樣,(((float)clock())/CLOCKS_PER_SEC)*1000這樣的表達式就能得到從程序運行開始到現在的經過的時間.
程序的大致思路是這樣的,程序按下1的時候記下當時的程序運行時間.
從這時起,每時刻撿取程序運行時間,然後減去先前的值,就可以得到已經計時的時間了.
只要讓用戶按下0結束計時就好了
在conio.h文件里,有個函數kbhit()是個非阻塞函數,用來檢查鍵盤緩沖里有沒有按鍵按下,若有,則返回1,若沒有,則返回0,以此來作為判斷,若返回1,則撿取按鍵,測試它是不是0或者1,若返回0,則表示用戶沒有動作,繼續原來的工作,即繼續計時或等待命令.
❹ wincc7.0上做一個按下為1,松開為0的按鈕怎麼做
按鈕屬性,事件-->滑鼠-->按左鍵,「來源」選擇常數1,「目標」選擇變數(所需置位的變數),「確定」。選擇「釋放左鍵」,「來源」選擇常數0,「目標」選擇變數(所需置位的變數),「確定」。
❺ 在WINCC中如何實現按鈕擊一下為1再擊一下為0
樓上是對的,這條語句的功能是把「1-當前值」的結果賦值到當前值中
如果原來是1,按一下 新的 值為 1-1=0
如果原來是0,按一下 新的值為 1-0=1
實現了循環bool值的變換
改變值得變數你自己定義,需要改變什麼 值 點編程界面中的上方黃色「變數選擇」方框添加進來
❻ 按鍵精靈想做個單鍵C的連發腳本,理想效果是『按住C鍵開始連發,松開C鍵停止』
直接下個多鍵連發啊,挺方便的。
❼ 如何在組態王中製作一個按一次置位為1,再按一次復位為0的按鈕
雙擊按鈕,在「按下時」裡面用if語句寫,如下
if (\\本站點\按鈕變數==0)
\\本站點\按鈕變數=1;
else \\本站點\按鈕變數=0;
❽ C語言實現按一個鍵1燈亮,松開後1燈滅,1燈滅10s後2燈亮1s後2燈滅。如果這期間還按1鍵,1燈重新亮,循環
樓上說的對,如果簡單的就是延遲多少秒後,依次的亮滅就不需要中斷, 但是你提到在正常的延遲期間如果手動打斷這種定製的規則的話,那麼就必須要添加中斷,來掛起除因中斷而插入當前操作外的所有操作,在當前操作完畢後再在原來的中斷處進行原來中斷前掛起的操作!
不知道你明白了沒,中斷很好寫!網上一查就有範例,這里我就不給你寫了。
❾ 請教如何用C語言實現: On健,當按下此健時數碼管每隔1秒顯示1, 另一個為Off健,按下此健時數碼管停住
#include<iom8v.h>
#include"user_define.h"
#defineSYSCLK 1000000 //ϵͳʱÖÓ1MHZ
#defineOFF 0x00
#defineON 0x01
constunsignedcharcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
//constunsignedcharcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
volatileunsignedcharcount=0;//·¶Î§0~99
volatileunsignedcharswitch_status=OFF; //¿ª¹Ø״̬
voidTimer1_Init(void) //¶¨Ê±8ms
{
TCCR1A=(0<<WGM11)|(0<<WGM10);
TCCR1B=(1<<WGM12)|(0<<WGM13);//;
TCCR1B|=(0<<CS12)|(1<<CS11)|(1<<CS10); //fINT=SYSCLK/64
TCNT1=0x00; //Clearcount;
OCR1A=125; //timing64us*125=8ms;
TIMSK|=(1<<OCIE1A); //;
TIFR|=(1<<OCF1A);//ClearOCIF1A;
}
voidKey_Init(void)
{
PORTB|=0x03;
DDRB=0x00;
}
voidKey_Scan(void)
{
unsignedcharkey_value=0;
staticunsignedcharstatus=0;
key_value=PINB;
switch(status)
{
case0://¼ì²â°´¼ü
if((key_value&0x03)!=0x03)
{
status=1;
}
break;
case1://Óмü
//status=2;
if((key_value&0x03)==0x02)
{
status=2;
switch_status=ON;
}
elseif((key_value&0x03)==0x01)
{
status=2;
switch_status=OFF;
}
break;
case2://µÈ´ý°´¼üÊÍ·Å
if((key_value&0x03)==0x03)
{
status=0;
}
break;
}
}
voidDisplay_Init(void)
{
PORTC=0x00;
PORTD=0x00;
DDRD=0xFF;
DDRC=0x03;
}
voidDisplay(void)
{
staticunsignedcharflag=0;
unsignedchartemp1=0;
unsignedchartemp2=0;
temp1=count/10;
temp2=count%10;
PORTC|=0x03;
switch(flag)
{
case0://ÏÔʾʮλ
flag=1;
PORTC&=~0x01;
PORTD=code[temp1];
break;
case1://ÏÔʾ¸öλ
flag=0;
PORTC&=~0x02;
PORTD=code[temp2];
break;
}
}
voidmain(void)
{
Display_Init();
Timer1_Init();
Key_Init();
asm("sei");
while(1)
{
;
}
}
#pragmainterrupt_handlerTimer1_COMPA_ISR:7
voidTimer1_COMPA_ISR(void)
{
staticunsignedchartime_1s_cnt=0;//1s¶¨Ê±¼ÆÊý
Key_Scan();
switch(switch_status)
{
caseON:
if(++time_1s_cnt>125)
{
time_1s_cnt=0;
count++;
if(count>100)
{
count=0;
}
}
break;
caseOFF:
default:
time_1s_cnt=0;
break;
}
Display();
}
❿ 如何用C語言寫一個按鍵按一次數值就加一的程序一直加到99然後變為0
void main()
{
int k=0;
while(k<0)
{
bioskey(0);
k++;
if(k==100)
k=0;
}
}
死循環,退出忘了,樓下回答吧