STC单片机不需要按电源开关下载的方法!

STC单片机在每次上电前检测串口是否有有下载信号进入ISP模式否则运行用户程序。

以前下载的时候每次都需要一个断电再开电的过程,甚是痛苦。

后来发现STC 1T系列的单片可以通过下面的方式软件重启:

sfr IAP_CONTR   = 0xC7;
IAP_CONTR=0x60;

 于是想到可以加入一个检测串口下载信号的代码,然后启动这个软件重启来达到不需要开关电源烧写程序的目的。

然后通过串口监控软件发现STC的ISP在烧写程序之前总是发送一连串的0x7F来寻找是否有单片机,单片机再发送一连串的0x7F与ISP程序握手。

于是我在单片机上写下一段检测0x7F然后软件重启的代码,结果发现不行。

我想应该是波特率的问题,单片机串口接收中断的波特率设为9600,而ISP不一定是9600,但找了几个串口监控软件都貌似不能监控波特率是多少。

直接将单片机接收到的数据打印出来后发现在9600波特率下接收到的“0x7F”是一连串的“0xFE 0x9e",不管了,直接就检测”0xfe 0x9e“吧。

结果成功了! 


 

后来修改:

其实不是的,上面那句”结果成功了“是我杜撰出来的,我检测出0xfe 0x9e后没有试验就来写这篇了,以为绝对能成功了。

实际上是这样的,51单片机检测出来的值是0x80,那个0xfe 0x9e我是用stm32检测出来的,因为stm32上有个屏幕,我直接插上去打印的。嘿嘿

不过这个0x80确实成功了,不用每次都去按键,确实爽啊!!!哈哈

你可能感兴趣的:(单片机)