D12中断问题

[复制链接]
 楼主| xjmjb 发表于 2007-1-2 15:58 | 显示全部楼层 |阅读模式
tmp, FOR, sd, dc, USB
现正在做USB通信,51+D12系统,主机是PC机,D12的中断通过10K的上拉电阻接在51单片机的INT0,D+通过SoftConnect控制,电路上没有15K上拉电阻.USB总线供电,通过周公的仿真器调试发现,只要将USB线插入PC即U口,进行仿真时必然进中断,此时SoftConnect还没有打开,既此位还是上电复位值.接着继续调试,只要不断电,就不会再进中断.但是只要重新断电再上电,还是会进中断.请教这个问题是不是正常的?如果正常,一般是什么引起的中断?<br /><br /><br />还有个问题:SoftConnect设置后,既软件连接PC机后,发现51并不进中断,既表示SoftConnect没有起作用,现在怀疑是读写寄存器有问题.或者其他问题,望大侠指点.现把读写函数贴出来.51时钟频率是20M.<br /><br />void&nbsp;write_D12_command(unsigned&nbsp;char&nbsp;D12_command)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写USB命令<br />{<br />&nbsp;unsigned&nbsp;char&nbsp;tmp;<br />&nbsp;for&nbsp;(tmp=0;tmp&lt250;tmp++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TWC&nbsp;写周期&nbsp;低时间&nbsp;最小500ns<br />&nbsp;D12_A0=D12_COMMAND_ADD;<br />&nbsp;for&nbsp;(tmp=0;tmp&lt130;tmp++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TAVWL&nbsp;&nbsp;A0&nbsp;有效到WR_N&nbsp;低时间&nbsp;最小130ns&nbsp;<br />&nbsp;D12_DATA=D12_command;<br />&nbsp;D12_WR=0;<br />&nbsp;for&nbsp;(tmp=0;tmp&lt20;tmp++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WR_N&nbsp;低脉宽&nbsp;最小20ns&nbsp;&nbsp;<br />&nbsp;D12_WR=1;<br />&nbsp;for&nbsp;(tmp=0;tmp&lt10;tmp++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TWDH&nbsp;写数据保持时间&nbsp;最小10ns&nbsp;&nbsp;<br />&nbsp;D12_DATA=0xFF;<br />}<br /><br />void&nbsp;write_a_D12_data(unsigned&nbsp;char&nbsp;D12_data)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写一字节USB数据<br />{<br />&nbsp;unsigned&nbsp;char&nbsp;tmp;<br />&nbsp;for&nbsp;(tmp=0;tmp&lt250;tmp++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TWC&nbsp;写周期&nbsp;低时间&nbsp;最小500ns&nbsp;<br />&nbsp;D12_A0=D12_DATA_ADD;<br />&nbsp;for&nbsp;(tmp=0;tmp&lt130;tmp++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TAVWL&nbsp;&nbsp;A0&nbsp;有效到WR_N&nbsp;低时间&nbsp;最小130ns&nbsp;<br />&nbsp;D12_DATA=D12_data;<br />&nbsp;D12_WR=0;<br />&nbsp;for&nbsp;(tmp=0;tmp&lt20;tmp++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//WR_N&nbsp;低脉宽&nbsp;最小20ns&nbsp;<br />&nbsp;D12_WR=1;<br />&nbsp;for&nbsp;(tmp=0;tmp&lt10;tmp++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TWDH&nbsp;写数据保持时间&nbsp;最小10ns&nbsp;&nbsp;<br />&nbsp;D12_DATA=0XFF;<br />}<br /><br />unsigned&nbsp;char&nbsp;read_a_D12_data(void)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读一字节USB数据<br />{<br />&nbsp;unsigned&nbsp;char&nbsp;temp,i;<br />&nbsp;for&nbsp;(i=0;i&lt250;i++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TRC&nbsp;读周期&nbsp;最小500ns&nbsp;<br />&nbsp;D12_A0=D12_DATA_ADD;<br />&nbsp;for&nbsp;(i=0;i&lt10;i++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TAVRL&nbsp;A0&nbsp;有效到RD_N&nbsp;低时间最小0ns&nbsp;<br />&nbsp;D12_RD=0;<br />&nbsp;for&nbsp;(i=0;i&lt10;i++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TRLDD&nbsp;RD_N&nbsp;低到数据驱动时间&nbsp;最大20ns&nbsp;<br />&nbsp;temp=D12_DATA;<br />&nbsp;for&nbsp;(i=0;i&lt10;i++);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TRL&nbsp;RD_N&nbsp;低脉宽&nbsp;&nbsp;最小20ns&nbsp;<br />&nbsp;D12_RD=1;<br />&nbsp;return&nbsp;temp;<br />}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

32

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部