stc15w204s体积非常的小,只有8个引脚,非常的迷你,它就是15系列的缩水版,引脚好似从芯片中间横腰切断了一样,定义排序和完全版本是相同的.

如此迷你,对我这种强迫症的人来说就是一个福音啊,网上找了下没发现对应的程序demo,官方给的demo也不好使不好用.

此次实验需求是实现单片机的串口通讯功能,实现串口间隔几秒发送一些字符串到PC方

本次实验采用的电压是5V,晶振频率设置是采用片内RC晶振11.0592MHz

最后实现编译HEX文件后自动复位并下载代码,也就是串口通讯收到魔术值0xAA后,复位到ISP监控区从而实现冷上电写入程序的效果

实物图,非常的迷你

原理图

单片机最小系统和串口下载程序示意图

#include <intrins.h>
// #include <stdio.h>
// stc15w204s是最小化的芯片只有8脚,是一个缩水版本,注意虽然本程序是跑在stc15w204s上的但是头文件依然用的是这个"完整版的"15系类头文件
#include <STC15F2K60S2.H>
// 定义常用的语句
typedef     unsigned char   u8;
typedef     unsigned int    u16;
typedef     unsigned long   u32;
//串口发送忙标志位
bit busy = 0;
//当前串口速率和内部RC晶振频率是9600bps@11.0592MHz,1T
//这个芯片没有定时器1,只有0和2
void UartInit(void) {//8位数据,可变波特率SCON = 0x50;//串口1选择定时器2为波特率发生器AUXR |= 0x01;//定时器2时钟为Fosc,即1TAUXR |= 0x04;//内部RC时钟设置为11.0592的定时器2初值设置//设定定时初值T2L = 0xE0;//设定定时初值T2H = 0xFE;//启动定时器2AUXR |= 0x10;//允许UART串口中断ES = 1 ;//允许总中断EA = 1 ;
}
//软件延时,肯定不止1s,演示用
void delay1s() {unsigned char i, j, k;_nop_();_nop_();i = 43;j = 6;k = 203;do {do {while (--k);}while (--j);}while (--i);
}
// 中断入口
void Uart() interrupt 4 {// 接收完毕导致的中断if(RI) {// 判断是复位到ISP的串口指令if(SBUF == 0xAA) {//立即关闭串口中断,防止延迟期再次进入中断ES = 0;//延迟一秒后重启单片机到isp区delay1s();//复位到ISPIAP_CONTR = 0x60;//while(1);return;}RI = 0;SBUF = SBUF;}// 发送完毕中断if (TI) {// 清零发送中断标志位TI = 0;// busy = 0;}
}
//打印字符串
void printString(char *p) {while(*p) {busy = 1;SBUF = *p++;while(busy);}
}
//主程序入口
void main(void) {// 计数器u8 tmp = 0x00;// 定义字符串char *s = "CSDN!\r\n";UartInit();while(1) {//观察LED电平翻转P33=!P33;printString(s);delay1s();tmp++;}
}

如图是设置自动热加载编译后的二进制代码的方式

点击3的按钮就自动下载了

串口能收到字符CSDN

STC15W204S串口通讯,设置自动热加载程序代码(自动下载代码)相关推荐

  1. 微信开发者工具开发小程序代码自动热加载/重载/部署

    前言 微信小程序基础库 2.12.2 默认情况下,使用微信开发者工具开发小程序时,每次保存代码都会重启微信小程序,即每次都模拟器都返回到首页.有没有办法既更新模拟器中的小程序,又保持 在当前页呢?有的 ...

  2. javaweb项目自动设置热加载

    javaweb项目设置自动热加载 在企业工作开发Javaweb项目中,经常需要改动代码对功能进行调试.如果没改动一次代码来调试都启动一次服务的话将会大大浪费时间,效率也会变得很低.因此可以给javaw ...

  3. mybatis热加载的实现

    最近在使用mybatis,由于是刚刚开始用,用的并不顺手,目前是感觉有2个地方非常的不好用: 1.mybatis调试不方便 由于dao层只有接口,实现只是一个map的xml文件,想加断点都没有地方加, ...

  4. spring boot:从零开始搭建一个项目 - day 7 springboot devtools热加载+MybatisPlus配置+kisso从入门到放弃

    spring boot:从零开始搭建一个项目 - day 7 springboot devtools热加载+MybatisPlus配置+kisso从入门到放弃 一.springboot devtool ...

  5. webpack 热加载你站住,我对你好奇很久了

    使用webpack有一段时间了,其中的模块热加载加快了开发的速度.它无需刷新,只要修改了文件,客户端就立刻立刻做热加载.如何做到?当然理解他的最好的做法就是我们自己做做一遍. 本文关心的是: dev- ...

  6. 查看类的实现类mac_自定义类加载器实现热加载

    一.实现的需求 当一个java被修改后,系统无需重启,替换的类立即生效,这里以Work.java为例 二.实现的思路 1)难点分析 当项目在执行的时候,我们修改了Work.java,这个类的class ...

  7. gin框架的环境搭建和热加载

    为什么要学gin框架? Gin 是一个基于 Go 语言编写的 Web 框架,快速灵活.封装简单.运行速度快.使用也比较广泛.借助高性能的 httprouter,有着高性能和更快开发效率. 引入gin框 ...

  8. idea修改代码后没有重新编译_SpringBoot中实现代码修改之后的自动更新与热加载...

    在实际的开发过程中,我们经常修改代码之后,手动的重启项目,查看修改效果.那么有没有一种方式能够快速的.自动的帮我们将修改代码自动更新,避免手动重启,从而提高开发效率呢?是有的,对于这个功能很多人对功能 ...

  9. Spring Boot + IntelliJ IDEA——自动部署[Spring Boot热部署]+LiveReload[前端自动刷新、热加载]解决方案

    基本概念 spring-boot-devtools: Spring Boot包括一组额外的工具,这些工具可以使应用程序开发体验更加愉快.该spring-boot-devtools模块可以包含在任何项目 ...

最新文章

  1. 贪心:Burst Balloons 最少次数完成射击气球
  2. 分享mac磁盘清理的方法
  3. oracle表复制为mysql表_oracle 将数据库的表复制到另一个数据库表内
  4. c语言流感,维生素C能防流感?专家:或减轻普通感冒引起不适症状
  5. 足不出户带你体验专业实验室,技术实现不在话下
  6. 在树莓派上编译安装golang环境
  7. 修改linux系统时间的方法(date命令)
  8. android ems的作用,对话框主题活动中忽略android:minEms
  9. Leetcode 516.最长回文子序列
  10. 模块化实现(好处,原因)
  11. Android自动化测试在多种屏幕下的注意事项
  12. Java基础练习题---this
  13. 工行软开和中行软开_工行软开怎么样啊待遇如何,知道的说下啊
  14. 【爬虫】python爬取微信公众号
  15. php 读取 日文文件名,PHP文件上传-处理阿拉伯文/中文/日文文件名
  16. java中如何实例化一个接口_「实例化」java之接口实例化 - seo实验室
  17. 建立一个被称为sroot()的函数,返回其参数的二次方根,重载sroot()三次,让它返回整数,长整数与双精度的二次方根
  18. key去掉下划线自动大写首字母工具类
  19. python爬取实习僧招聘信息字体反爬
  20. 安卓软件远程连接ConnectBot v1.8.6

热门文章

  1. 证明(sinx)/x的极限
  2. 智慧高速 3D 可视化,构建互联协同智能交通体系
  3. 【测试】编写测试用例的思路和方法
  4. 汇正财经靠谱吗?千亿市场,国资云的数字中国底座
  5. jQuery中form表单基本使用
  6. JAVA--状态模式
  7. DSP28335通过按键启动LED闪烁功能
  8. 《转发》django如何自定义404以及404模板分享
  9. R语言临床预测模型:分层构建COX生存回归模型STRATIFIED COX MODEL、KM生存曲线、PH假设检验...
  10. 斗鱼TV如何默认HTML,斗鱼直播怎么设置标签