uart通信试验程序中:
//设置McBSP的PCR寄存器指针,用于读写其I/O端口
ioport unsigned int *PCR_1=(unsigned int *)0x2c12;
#define REG_PCR1 (*PCR_1)
interrupt void timer0Isr(void)
{
temp = REG_PCR1;
//Receive
if((uart_bitcnt==0)&&(uart_recstart==0))
{
if((temp&0x0010)==0) //PCR寄存器的第4位,即DRSTAT域为0//
{
timer0_cnt = 0;
timer0_cnten = 1;
uart_bitscan = 0;
uart_rec = 0;
uart_recstart = 1;
}
}
if(timer0_cnten==1)
{
timer0_cnt++;
if((temp&0x0010)!=0) //PCR寄存器的第4位,即DRSTAT域为1//
{
uart_bitscan++;
}
if(timer0_cnt==10)
{
timer0_cnt = 0;
if(uart_bitscan>5)
{
switch(uart_bitcnt)
{
case 0: uart_rec = 0;
timer0_cnten = 0;
uart_recstart = 0;
break;
case 1: uart_bitcnt++;
uart_rec |= 0x01;
break;
case 2: uart_bitcnt++;
uart_rec |= 0x02;
break;
case 3: uart_bitcnt++;
uart_rec |= 0x04;
break;
case 4: uart_bitcnt++;
uart_rec |= 0x08;
break;
case 5: uart_bitcnt++;
uart_rec |= 0x10;
break;
case 6: uart_bitcnt++;
uart_rec |= 0x20;
break;
case 7: uart_bitcnt++;
uart_rec |= 0x40;
break;
case 8: uart_bitcnt++;
uart_rec |= 0x80;
break;
case 9: uart_bitcnt = 0;
timer0_cnten = 0;
uart_recflag = 1;
uart_recstart = 0;
break;
default: break;
}
}
else
{
uart_bitcnt++;
if(uart_bitcnt>9)
{
uart_bitcnt = 0;
timer0_cnten = 0;
}
}
uart_bitscan = 0;
}
}
}
由于*PCR_1指向地址0x2c12,初始值为0,所以temp中初始值为0?
那DR引脚接收到的值是如何执行接收操作的呢?0x2c12中的值即temp的值如何改变?