dsp28 串口中断程序_STC单片机不断电下载程序

adfa1f2910b4c0d7ec8dde1af3b71a2e.gifb4c9b9c115f86518a92c89452d4d8def.png

时间长了,居然把这个简单实用的功能忘了,重新整理了下,适用于STC89、STC12、STC15、STC8等所有型号的STC单片机快速高效下载程序。完整工程可查看附件。141e04135153988e312fd6460f314ef9.png STC单片机不断电下载程序.rar (723.45 KB, 下载次数: 1)原理:先测试出STC-ISP下载软件下发的串口命令,在程序中开启串口中断,中断接收得到下载命令就执行一条单片机复位命令,程序就自动下载进去了,整个过程不断电,也不需要操作复位按钮,下载过程不需要触碰硬件。791a60653d596554228a6ae079526345.png   图1   下载最低波特率9600d3dbbdbecb729e2ce43fd157642a207c.png   图2   接收波特率9600

接收波特率9600,接收到的连续数据为7F,接收波特率不同,结果也会不一样。

知道了STC-ISP软件下发的数据,我们程序开启串口接收中断,判断接收的数据如果是这里7F,让单片机执行一条复位命令,程序就下载进去了。

#include "STC15W4K.H"      // 包含 "STC15W4K.H"寄存器定义头文件

unsigned  char num=0;       // 存放接收到的1个字节的数据

void delay500ms(void)

{

   unsigned char i,j,k;

  for(i=93;i>0;i--)     //注意后面没分号

  for(j=235;j>0;j--)    //注意后面没分号

  for(k=125;k>0;k--);    //注意后面有分号

}

void UART_init(void)

{        

    // 下面代码设置定时器2

    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

    // 下面代码设置定串口1

    SCON = 0x50;  // 0101 0000 SM0.SM1=01(最普遍的8位通信),REN=1(允许接收)

    // 下面代码设置中断

    ES   = 1;     //开串口1中断

    EA   = 1;     //开总中断

}

void main()

{

    UART_init();

    P00=0;

    delay500ms();

    P00=1;

    while(1)

    {

       P01=!P01;

       delay500ms();

    }

}  

void UART1(void) interrupt 4 // 串行口1中断函数

{

    if(TI)

    {

       TI = 0;           

    }

    if(RI)

    {

       RI = 0;

       num = SBUF;

       if (num==0x7F)  

       {

           IAP_CONTR   =    0x60;   //0110,0000  软复位到系统ISP监控区

       }      

    }

}

本文转自网络,版权归原作者,如果您觉得不好,请联系我们删除!

↓点击下方

“阅读原文”

查看更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值