完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 xmuac 于 2014-9-14 12:05 编辑
串口中断服务程序内容如下: #pragma vector=UART0RX_VECTOR __interrupt void UART0_RX_ISR(void) { if(key==1) //输入字符串1 { LED8= 0X01; //灭最末端一个灯,用来指示该中断的执行情况 number[count1]=U0RXBUF; count1++; if(count1==8) key=0xff; } if(key==2) //输入字符串2 { LED8=0x02; //灭倒数第二个灯 lifetime[count2]=U0RXBUF; count2++; if(count2==8) key=0xff; } if(key==3) //输入字符串3 { LED8=0x04; //灭倒数第三个灯 colour[count3]=U0RXBUF; count3++; if(count3==8) key=0xff; } } 其中的key是按键的值,测试中能正确获得。 程序中还有一个10毫秒的定时中断,用来实现定期的字符串输出(从串口输出) 对应的主程序如下: void main(void){ WDT_Init(); //看门狗设置 Clock_Init(); //系统时钟设置 UART_Init(); //串口设置初始化 Port_init(); TIMERA_Init(); delay_ms(10); _EINT(); //开中断 while(1) //无限循环 { Key_Scan(); //用来选择输入哪个字符串(用来获得key的值) if(Time%40==0) //定时器,40秒为一个周期,输出下面的东西。 { Flag=1; Time=1; } while(Flag) { Flag=0; Print_Str("ID:"); Print_Str(number); //字符串1 Send_Byte('n'); Print_Str("number:"); Print_Str(lifetime); //字符串2 Send_Byte('n'); Print_Str("colour:"); Print_Str(colour); //字符串3 Send_Byte('n'); } } } 我的操作步骤及现象: 按下按键S1,得到正确的现象,接着输入字符串1,点击发送,亮灯现象也正确。按下按键S2,亮灯现象正确,接着在串口调试助手中输入字符串2,点击发送,此时没能得到正确的亮灯现象。接着按下S3,亮灯现象正确,接着在串口调试助手中输入字符串3,点击发送,此时也没能得到正确的亮灯现象。等到规定的时间到来(40s),从串口打印出以串数字,同时亮起了输入字符串3时该有的现象(延迟了),打印出的内容如下所示: D:chenshen number: colour:green 我的问题: 1.连续输入时,为什么第二、第三个字符串的发送得不到正确的亮灯现象(保证LED没有坏)? 2.打印出的内容中,第二个字符串没有对应的东西,应该是第二个字符串没有被正确输入保存,这会是什么原因? 3.第一行的输出应该是ID:chenshen,为什么显示的是D:chenshen. 少了一个字母I. 4.第二次输出(第二个40s)时,就不会出现问题3. 第一次和第二次输出为什么会不一样? 谢谢! |
|
相关推荐
5个回答
|
|
你的三个计数,如count3==8都要收到8个字符吗?
还有你的三个count初始化都清0了吗,而且应该在收到8个数字后也要清0.要不下次再接收肯定又不对了 然后,你的3个字符串能在40秒内完成吗?要是完不了到时候输出字符串的时候肯定有问题了 |
|
|
|
谢谢! 1. 我设置的三个数组,每个数组最多能接收8个字符,少于是可以的; 2. 我在Key_Scan()里面有对count1/2/3进行清零,即如果按下按键,这3个计数符就被赋值为0; 3. 三个字符串的输入能在40s内完成。 我的方法是: 比如给字符串2输入一串数字:123456789。在串口调试助手中敲入123456789,然后按下按键S2,对应的灯亮,再点击串口调试助手上的发送,对应的灯也正常亮起,这时保存的字符串就是12345678。 重复上面的步骤数组1和数组3写入字符串1和字符串3,点击发送时灯不能正确显示(其实是没有改变前面的亮灯情况),所以最后也不能被正确的输出(输出为空) |
|
|
|
感觉你给个完整的代码或许会更好
|
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
3053个成员聚集在这个小组
加入小组2970 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3695 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2366 浏览 1 评论
4832 浏览 1 评论
2592 浏览 1 评论
1410浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3697浏览 2评论
2972浏览 1评论
1602浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 07:44 , Processed in 1.227862 second(s), Total 60, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号