单片机怎么运行程序修改程序后运行结果没变

技术达人, 积分 9897, 距离下一级还需 103 积汾

0

技术达人, 积分 9897, 距离下一级还需 103 积分

0

助理工程师, 积分 1123, 距离下一级还需 877 积分

0

助理工程师, 积分 1123, 距离下一级还需 877 积分

0
C8051,一上电看门狗就是运行的。而且溢出时间比较短
可能是你的程序里面有比较多的全局变量,并且全局变量赋了初值全局变量赋初值是在main函数之前进行的。所以囿可能引起看门狗溢出了就进不了中断了。

你可以试试把全局变量的初值去掉,看看能不能跑到main里面去

中级工程师, 积分 3503, 距离下一级還需 1497 积分

0

中级工程师, 积分 3503, 距离下一级还需 1497 积分

0
main之前有还有初始化代码,可能对某个时钟作了有效性判断阻塞了

助理工程师, 积分 1251, 距离下一级還需 749 积分

0

助理工程师, 积分 1251, 距离下一级还需 749 积分

0
程序指针进了main函数后还能跳出去。
程序指针进了main函数后还能跳出去。。

助理工程师, 积汾 1965, 距离下一级还需 35 积分

0

助理工程师, 积分 1965, 距离下一级还需 35 积分

0
c8051上电后默认看门狗是开放的先关了它。这点和其它的MCU不一样

初级技术员, 积分 57, 距离下一级还需 43 积分

0

初级技术员, 积分 57, 距离下一级还需 43 积分

0
1.先关看门狗楼上各位已经讲过了
2.外部变量(xdata)不能初始化
3.定义外部变量空间的數组时,有时编译器会把它放到0地址开始处这样数组名就成了常空指针,继而程序运行会出问题

初级技术员, 积分 60, 距离下一级还需 40 积分

0

初級技术员, 积分 60, 距离下一级还需 40 积分

0

这几位仁兄说的一样是看门狗问题,小弟实行的是  w    的建议确实解决了这个,问题感谢这位大哥,囷其他热心的大哥们(吐槽:虽然没有大姐IT男人的悲剧) 帮助  

扫描二维码,随时随地手机跟帖
}

哦我想错了,看来不是那个问題把代码发出来,这段程序是个测试程序主要功能是把UART_Buffer中的11个数依次发送出来,每个数发送很多遍每两个不同的数用很多个“11”隔開(这是我自定义的空闲字符),读过程序大家可以看出我用一个int count和一个 unsigned char count1来延时,而且每个字符我发送的时间等于64000*8次count++的时间关键是我紦count++写在了中断程序中,那么应该是每个字符的发送时间等于64000*8次中断的时间也就是每个字符我发送了64000*8次,但实际上在相同的时间里相同嘚波特率下,在接收端只接收了大约600个字符请问这是怎么回事,难道要中断很多次才能把一个数据发送出去



// UART0的波特率由定时器1工作在8位自动重装方式产生,溢出信号经过2分频后产生波特
}

什么叫不行我看是运行的,只鈈过没有运行到主循环又重新开始了

哪怕程序全是FF也是会跑的,只是不是你想要的结果而已

用这个软件下载个官方的例子的HEX文件试试

中級工程师, 积分 3499, 距离下一级还需 1501 积分

0

中级工程师, 积分 3499, 距离下一级还需 1501 积分

0
可能是目标板的复位电路有问题连接调试器时是调试器的复位引腳在起作用,拔掉后就不起作用了检查目标板的复位电路看看。

ayb_ice 不行是指程序没有正常运行外观好像没下载程序。

通过用调试器读取程序空间发现代码依然存在。

通过调试发现调试过程中有时程序会乱跑,从一个子程序直接跳到另一个子程序从某个子程序返回后,直接跳转到0X8FFF之后其实那之后是全FF的。这样的结果就是一直处于刚上电的状态...

如果直接烧录HEX文件下电再上电只能正常运行一次,再下電就死机了...

可能是目标板的复位电路有问题连接调试器时是调试器的复位引脚在起作用,拔掉后就不起作用了检查目标板的复位电路看看。

复位电路是看门狗实现的如果规定时间内不喂狗就会被复位...

应该还是程序问题,先整个最简单的程序测试一下

用调试器调试时複位再运行什么情况,项目是否用到了内部FLASH当EE

应该还是程序问题先整个最简单的程序测试一下

用调试器调试时,复位再运行什么情况項目是否用到了内部FLASH当EE ...


把内狗关掉,结果是一样的;
换了块目标板也是一样的结果;

最终发现的规律是:和程序大小有关系:


编译大小為:25959时,下载调试也不能运行;
编译大小为:25205时调试没问题,脱机也没问题;

中级技术员, 积分 256, 距离下一级还需 44 积分

0

中级技术员, 积分 256, 距离丅一级还需 44 积分

0

技术达人, 积分 9996, 距离下一级还需 4 积分

0

技术达人, 积分 9996, 距离下一级还需 4 积分

0
根据你的问题感觉这个脱机失败比较奇怪。
查看一丅Map文件 程序和数据是否公用了一块Flash。

技术达人, 积分 9996, 距离下一级还需 4 积分

0

技术达人, 积分 9996, 距离下一级还需 4 积分

0
340我也用过63k都写满了也可以运荇。

你把你保存数据的Flash区块尽量往后面一点


或者在定义一个10K大小的Flash变量在25K的地址,让这部分跳过去看看

资深技术员, 积分 325, 距离下一级还需 175 积分

0

资深技术员, 积分 325, 距离下一级还需 175 积分

0
你写了内部FLASH,
有可能在写到时候写到了别到地方写内部FLASH的时候要关中断,
扫描二维码随时隨地手机跟帖
}

我要回帖

更多关于 单片机怎么运行程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信