本帖最后由 a1b2c8d9 于 2012-3-24 21:17 编辑
#include<reg51.h> //包含单片机寄存器的头文件
sbit p=PSW^0;
/*****************************************************
函数功能:接收一个字节数据
***************************************************/
unsigned char Receive(void)
{
unsigned char dat;
while(RI==0) //只要接收中断标志位RI没有被置"1"
; //等待,直至接收完毕(RI=1)
RI=0; //为了接收下一帧数据,需将RI清0
ACC=SBUF; //将接收缓冲器中的数据存于dat
if(RB8==p)
{
dat=ACC;
return dat;
}
}
/*****************************************************
函数功能:主函数
***************************************************/
void main(void)
{
TMOD=0x20; //定时器T1工作于方式2
SCON=0xd0; //SCON=1101 0000B,串口工作方式1,允许接收(REN=1)
PCON=0x00; //PCON=0000 0000B,波特率9600
TH1=0xfd; //根据规定给定时器T1赋初值
TL1=0xfd; //根据规定给定时器T1赋初值
TR1=1; //启动定时器T1
REN=1; //允许接收
while(1)
{
P1=Receive(); //将接收到的数据送P1口显示
}
}
上面的程序,sbit p=PSW^0 省略,直接 if(RB8==PSW^0)为什么结果会不一样?
补充问一下,RB8跟PSW^0有什么必然联系么? |