#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;
}
不知道你想要的什么具体功能,如果只是为了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;
}
}
一周热门 更多>