c语言p->data,c语言问题,谢谢回答*((unsigned char pdata *)R0)什么意思?????

这段代码是用C语言对TL16C550串口进行初始化设置,包括波特率设定、数据帧格式配置、中断允许等步骤。通过P0口选择不同的寄存器进行写操作,以实现115200bps的波特率,8位数据位,1位停止位,并启用接收中断。
摘要由CSDN通过智能技术生成

c语言问题,谢谢回答*((unsigned char pdata *)R0)什么意思?????0

//复位脚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个时钟周期,等待写完

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值