P2^2一接地就无限发送,怎么样才能就发一个数据?求大神帮忙

2019-07-15 10:09发布

#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;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
wulinwl
1楼-- · 2019-07-16 13:25
碎觉吧 发表于 2017-7-22 10:27
我换个方法,但是这把也发不出去信号了

不知道你想要的什么具体功能,如果只是为了P2.2每一个低电平触发发送一个数据,根本不需要开中断,程序极为简单。你自己对照电路改P端口,以经串口助手验证无误。
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
sbit b=P2^2;
uchar flag=0;
void init()
{
        TMOD=0x20;
        SCON=0x50;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
}
void main()
{
        init();
        P1=0xfe;    //LED显示1111 1110
        while(1)
        {
                if(b==0)
                {
                        if(flag==0)
                        {
                                flag=1;
                                P1=_crol_(P1,1);//LED显示左移一位
                                SBUF=P1;                        //发送到串口
                                while(!TI);
                                TI=0;
                        }
                }
                else flag=0;
        }
}
QQ图片20170722170105.png

一周热门 更多>