STC12C5204AD单片机串口通讯红色部分为什么P2和P3调换就传送不了数据!急求
时间:10-02
整理:3721RD
点击:
void delay1ms(x) //0.5ms
{
int y,z;
for(y=x;y>0;y--)
for(z=60;z>0;z--);
}void init_uart()
{
TMOD=0x20; //定时器/计算器工作模式寄存器
TH1=0xFD; //timer high 1
TL1=0xFD; //timer low 1
TR1=1; //定时器T1的运行控制位
SCON=0x50; //串行控制寄存器
EA=1; //CPU的总中断允许控制位
ES=1; //串行口中断允许位
}
void UART_R() interrupt 4
{
RI=0;
Serial_digtal[ch++]=SBUF;
if(ch==N) //获取SBUF接收到的数据
flag=1;
}
void main()
{
init_uart();
while(1)
{
if(flag==1) //接收完成标志为1
{
ES=0; //关串口中断
for(ch=0;ch<N;ch++)
{
SBUF=Serial_digtal[ch]; //发送数据
while(!TI); //等待发送中断请求标志位为1
TI=0;
} //发送中断请求标志位清0
ES=1; //开串口中断
ch=0;
flag=0; //接收完成标志清0
}
// P2=~Serial_digtal[0];
// P3=digtalW[2];
P3=~Serial_digtal[0];
P2=digtal1[6];
delay1ms(10);
}
}
{
int y,z;
for(y=x;y>0;y--)
for(z=60;z>0;z--);
}void init_uart()
{
TMOD=0x20; //定时器/计算器工作模式寄存器
TH1=0xFD; //timer high 1
TL1=0xFD; //timer low 1
TR1=1; //定时器T1的运行控制位
SCON=0x50; //串行控制寄存器
EA=1; //CPU的总中断允许控制位
ES=1; //串行口中断允许位
}
void UART_R() interrupt 4
{
RI=0;
Serial_digtal[ch++]=SBUF;
if(ch==N) //获取SBUF接收到的数据
flag=1;
}
void main()
{
init_uart();
while(1)
{
if(flag==1) //接收完成标志为1
{
ES=0; //关串口中断
for(ch=0;ch<N;ch++)
{
SBUF=Serial_digtal[ch]; //发送数据
while(!TI); //等待发送中断请求标志位为1
TI=0;
} //发送中断请求标志位清0
ES=1; //开串口中断
ch=0;
flag=0; //接收完成标志清0
}
// P2=~Serial_digtal[0];
// P3=digtalW[2];
P3=~Serial_digtal[0];
P2=digtal1[6];
delay1ms(10);
}
}
P2和P3是啥变量啊
应该是在其他与P2,P3有关的地方死循环了。注意查显示部分的程序
P2P3就是单片机的P2P3脚
P2P3就是单片机的P2P3脚
不能这样定义啊,
刚开始我还以为是P2P3口呢,如果你已经定义为引脚的话,可能程序其他地方冲突了,
嗯嗯,是真个p3口p2口呢
嗯嗯,是整个p3口p2口呢
我再检查一下。
我再检查一下。
串口调试助手发送的数据P2所有的管脚都没办接收到数据什么情况?我想接收六组数据然后在六个不同的数码管进行显示,P2是段选,P3是位选。请大神赐教!万分感激!