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);
}
}
一周热门 更多>