#include <reg52.h>
#define uchar unsigned char
sbit b=P2^2;
uchar flag;
void init()
{
TMOD=0x20;
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
TR1=1;
EA=1;
ES=1;
}
main()
{
init();
P3=0x0f;
while(1)
{
if(b==0&&flag==1)
{
ES=0;
flag=0;
SBUF=P3;
while(!
ti)
TI=0;
ES=1;
b=1;
}
}
}
void ver() interrupt 4
{
RI=0;
flag=1;
}
#include <reg52.h>
#define uchar unsigned char
sbit key=P2^2;
bit flag=1;
bit b=0;
uchar x;
void init()
{
TMOD=0x20;
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
TR1=1;
EA=1;
ES=1;
}
void keyscan() //按键识别子程序
{
static bit key_sign=0; //按键有效标志
static uchar count=0; //计数变量
if(key==0) //检测按键如果为0
{
count++; //消抖计数
if(count>=100) //100次检测按键如果为0
{
count=100; //最大数限制
if(key_sign==0) //按键有效标志为0
{
key_sign=1; //按键有效标志置1
b=1; //允许发送
}
}
}
else
{
key_sign=0; //按键有效标志清0
count=0; //消抖计数清0
}
}
void main()
{
init();
P3=0x0f;
while(1)
{
keyscan();
if(b==1&&flag==1)
{
ES=0;
flag=0;
SBUF=P3;
while(!TI)
TI=0;
ES=1;
b=0;
}
}
}
void ver() interrupt 4
{
RI=0;
flag=1;
}
补充内容 (2017-7-22 07:17):
while(!TI);这里缺一个分号
这个程序必须有回传信号触发中断,置位 flag=1,才能被允许再次发送!
大哥,方法在哪里
void ver() interrupt 4
{
if(RI)
{
RI=0;
flag=1;
}
}
大哥辛苦了,我要做的是检测P2^2,变成低电平就发送1个信号给PC,这个不是我需要的
我换个方法,但是这把也发不出去信号了
一周热门 更多>