中级会员
 
- 积分
- 440
- 金钱
- 440
- 注册时间
- 2015-2-12
- 在线时间
- 40 小时
|

楼主 |
发表于 2015-5-13 16:23:03
|
显示全部楼层
回复【9楼】 xuande :
---------------------------------
1.再次感谢您不厌其烦的解答我的疑惑。
2.您说的循环方式收发数据的思想我明白,我觉得是不是也可以用for循环来完成这样一个过程呢?个人感觉for循环比起您说的数组指针而言的话要更为容易理解。
3.看了您的第一条回复,您说的主程序中设置中断后当出现中断条件后就会执行中断。那么主程序中应当如何设置中断呢?
4.还有一点我比较困惑的是我现在需要传输的数据是25位的一个数据,假如我顺利实现了利用中断来传输数据的想法的话,当最后一位数据传输完成后,距离下一次数据传输过程之间应该是有一段时间的时钟低电平,这段时间应当怎样利用程序来实现呢?(时钟波形和数据波形见我的附图)还是说完全取决于外部的时钟脉冲?单片机自身无法改变?
5.您说的中断一闪就退是什么意思?我没有理解,麻烦您给我细说。我的中断就是为了实现传输数据的功能,您帮我看看我中断函数内容是不是正确的?
extern unsigned long jsdata; //jsdata就是我需要用单片机传输的数据
void EXTI9_5_IRQHandler(void)
{
asm("nop");
if(EXTI_GetITStatus(EXTI_Line9)!=RESET)
{
if(counter<=24)
{
if(jsdata&0x01000000)//取JSDATA的最高位,从MSB开始传输
{
DATAOUT=1;
}
else
{
DATAOUT=0;
}
jsdata<<1;
counter++;
}
}
但是在代码中我还是没能想出应当怎样写 数据传输过程完成后的那段代码,不知您是不是可以帮帮忙?
|
|