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个时钟周期,等待写完
}
展开
 我来答
Leland01
2009-11-08 · TA获得超过508个赞
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:135万
展开全部
还真是不知道中间的pdata是一个什么东西,如果pdata是一个自定义类型,那么前面又出现了char类型,当真匪夷所思。
Alice881006
2009-11-10 · TA获得超过342个赞
知道小有建树答主
回答量:196
采纳率:0%
帮助的人:86.2万
展开全部
*((unsigned char pdata *)R0)
这是在单片机以及嵌入式中很常用的语句
将R0这个地址强制转换成某类型的指针,然后解引用
这样就可以把某个固定的地址作为变量
在直接操作硬件的时候非常有用
呵呵~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式