时间长了,居然把这个简单实用的功能忘了,重新整理了下,适用于STC89、STC12、STC15、STC8等所有型号的STC单片机快速高效下载程序。完整工程可查看附件。
原理:先测试出STC-ISP下载软件下发的串口命令,在程序中开启串口中断,中断接收得到下载命令就执行一条单片机复位命令,程序就自动下载进去了,整个过程不断电,也不需要操作复位按钮,下载过程不需要触碰硬件。
图 2 接收波特率 9600
接收波特率9600,接收到的连续数据为7F,接收波特率不同,结果也会不一样。 知道了STC-ISP软件下发的数据,我们程序开启串口接收中断,判断接收的数据如果是这里7F,让单片机执行一条复位命令,程序就下载进去了。
#include "STC15W4K.H" // 包含 "STC15W4K.H"寄存器定义头文件
unsigned char num=0; // 存放接收到的1个字节的数据 for(i=93;i>0;i--) //注意后面没分号 for(j=235;j>0;j--) //注意后面没分号 for(k=125;k>0;k--); //注意后面有分号 T2H = 0xFD; //波特率:9600 /22.1184MHZ,1T T2L = 0xC0; //波特率:9600 /22.1184MHZ,1T AUXR = 0x15; // 0001 0101,T2R=1启动T2运行,T2x12=1,定时器2按1T计数,S1ST2=1 SCON = 0x50; // 0101 0000 SM0.SM1=01(最普遍的8位通信),REN=1(允许接收)
void UART1(void) interrupt 4 // 串行口1中断函数 IAP_CONTR = 0x60; //0110,0000 软复位到系统ISP监控区
|