clear_zcl
驱动牛犊
驱动牛犊
  • 注册日期2002-05-30
  • 最后登录2002-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1483回复:6

rayyang斑竹请进

楼主#
更多 发布于:2002-06-11 10:02
关于PHILIP网站上的D12例程(Mass Storage例子程序,52单片机和D12连接环境)的一个疑问:
在例程中的USB中断处理usb_isr()中,当读D12中断寄存器的值后,如果有SUSPEND_CHANGE中断到来,则把52的P0~P3全置值0XFF,根据该例程的电路图,52的P00~P03分别接D12的数据脚DATA0~DATA3,因此可以肯定P00~P03是作为数据脚使用的,而不是作为I/O口使用。请斑竹指教,既然P00~P03是作为数据脚,那么怎么能对其赋值0XFF呢?下面这段代码的真实用意是什么?听zn_soft说,你对D12很精通,所以想到了问你,还请斑竹费心指教了。
if(D12IS_SUSPENDCHANGE)
{
    if(D12SUSPD == 1)
    {  //  In suspend state
       P0 = 0xFF;
       P1 = 0xFF;
       P2 = 0xFF;
       P3 = 0xFF;
       PCON |= 0x02; //Powerdown bit set
       while (1);
  }
}
clear_zcl
驱动牛犊
驱动牛犊
  • 注册日期2002-05-30
  • 最后登录2002-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-12 15:52
rayyang哪里去了?进if(D12IS_SUSPENDCHANGE)
并且又进入下面条件
if(D12SUSPD == 1)
意味着什么?是不是表明传输已经掉线?因为后面加了while(1);死循环在那里干什么?
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-12 17:13
因为51对D12的操作都是在中断函数中.主函数在哪里打转无关紧要.所以在挂起那里有一个while(1).当有有新的D12信号来时,中断函数会跳出这个死循环的.
P0不管是不是在IO方式还是在总线方式都可以进行赋值.在这里相当于将单片机设置到上电状态.其实也没有什么意思.
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
clear_zcl
驱动牛犊
驱动牛犊
  • 注册日期2002-05-30
  • 最后登录2002-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-12 17:47
因为51对D12的操作都是在中断函数中.主函数在哪里打转无关紧要.所以在挂起那里有一个while(1).当有有新的D12信号来时,中断函数会跳出这个死循环的.
P0不管是不是在IO方式还是在总线方式都可以进行赋值.在这里相当于将单片机设置到上电状态.其实也没有什么意思.

多谢指教!
但是这段代码就是在中断处理函数usb_isr()里写的呀,此时D12的中断被关闭掉进行该处理,WHILE(1)后根本没有办法跑到函数跳出前的重新打开D12中断那一步。
另外你说51对D12的操作都是在中断函数中进行,也不一定,可能你看到的例程跟我这个不同吧,我这个例程中批管道的处理就不是在中断函数中进行的。
P0如果是I/O口,只能给它赋0或1呀,只能有1bit,不能够给它赋0xff吧?
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-13 14:35
估计你看到的东西和我的不一样.
P0共有8位呀.0xff是天经地义的.
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-06-14 12:45
takaya说的是正确的。你所说的P0其实是8个bit。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
clear_zcl
驱动牛犊
驱动牛犊
  • 注册日期2002-05-30
  • 最后登录2002-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-06-17 10:46
多谢指教,我51和52单片机了解得太少了。先去看看资料。
游客

返回顶部