c语言问题,谢谢回答*((unsigned char pdata *)R0)什么意思?????
//复位脚MR=P4^6;P0^4~P0^7分别控制A2,A1,A0,/CS2脚,晶振为11.0592M,波特率设为115200bps,无奇偶校验,8位数据位,1位停止位...
//复位脚MR=P4^6;P0^4~P0^7分别控制A2,A1,A0,/CS2脚,晶振为11.0592M,波特率设为115200bps,无奇偶校验,8位数据位,1位停止位
void TL16C550_Init(void)
{
int i;
uchar R0;
P4 = 0x40 ; //复位好tl16c550
for(i=0;i<25;i++) ;
P4 = ~0x40 ;
for(i=0;i<25;i++) ; //延时,等待稳定
EMI0CN = 0XFF ; //外部寻址
P0 = 0x6f ; //选中LCR寄存器
*((unsigned char pdata *)R0)= 0x80 ; //设置LCR.7=1,设置波特率,一个读时序需要10个时钟周期
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
P0 = 0x0f ; //选中除数锁存低位
*((unsigned char pdata *)R0)= 0x06 ; //设置波特率=时钟/16/除数
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
P0 = 0x2f ; //选中除数锁存高位
*((unsigned char pdata *)R0)= 0x00;
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
P0 = 0x6f ; //选中LCR寄存器
*((unsigned char pdata *)R0)= 0x03; //LCR设置数据帧格式,数据位8位,1个停止位
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
P0 = 0x4f ; //选中LCR寄存器
*((unsigned char pdata *)R0)= 0x07; // 接收FIFO 有效, 1个字节一次中断
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
P0 = 0x2f ; //选中LCR寄存器
*((unsigned char pdata *)R0)= 0x01;// IER 中断允许控制器,只允许接收数据有效及超时有效
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
P0 = 0x8f ; //选中LCR寄存器
*((unsigned char pdata *)R0)= 0x08 ; // modem 控制器bit3 控制中断打开
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
} 展开
void TL16C550_Init(void)
{
int i;
uchar R0;
P4 = 0x40 ; //复位好tl16c550
for(i=0;i<25;i++) ;
P4 = ~0x40 ;
for(i=0;i<25;i++) ; //延时,等待稳定
EMI0CN = 0XFF ; //外部寻址
P0 = 0x6f ; //选中LCR寄存器
*((unsigned char pdata *)R0)= 0x80 ; //设置LCR.7=1,设置波特率,一个读时序需要10个时钟周期
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
P0 = 0x0f ; //选中除数锁存低位
*((unsigned char pdata *)R0)= 0x06 ; //设置波特率=时钟/16/除数
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
P0 = 0x2f ; //选中除数锁存高位
*((unsigned char pdata *)R0)= 0x00;
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
P0 = 0x6f ; //选中LCR寄存器
*((unsigned char pdata *)R0)= 0x03; //LCR设置数据帧格式,数据位8位,1个停止位
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
P0 = 0x4f ; //选中LCR寄存器
*((unsigned char pdata *)R0)= 0x07; // 接收FIFO 有效, 1个字节一次中断
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
P0 = 0x2f ; //选中LCR寄存器
*((unsigned char pdata *)R0)= 0x01;// IER 中断允许控制器,只允许接收数据有效及超时有效
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
P0 = 0x8f ; //选中LCR寄存器
*((unsigned char pdata *)R0)= 0x08 ; // modem 控制器bit3 控制中断打开
for(i=0;i<10;i++) ; //延时10个时钟周期,等待写完
} 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询