❶ 在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;
}
}
死循环,退出忘了,楼下回答吧