stc89c52单片机

51单片机学习笔记——基于C与汇编(1) 初识51单片机

放肆的年华 提交于 2020-03-09 16:29:29
即便疫情如此还是逃避不了开学啊!最近开始学习8051系列单片机的基本原理与应用,不过作为一个学计算机的本科菜鸟,感觉写博客也力不从心,因而选择结合(盗版,嘿嘿)我一个学硬件的朋友的文章,组成一个系列。写博客是个学习的好手段,大家一起进步吧!能力所限,如果文中有所不妥,恳请指正! 该系列文章基于8051系列单片机,Keil4/Keil2,并主要使用C和汇编实现例程,汇编部分由我的大佬朋友(盗版对象)完成。本文参考了该文的内容: https://blog.csdn.net/qq_43327300/article/details/104698377 首先我们来介绍动手前我们需要先了解的预备知识。 0、MCS-51系列单片机简介 MCS-51系列单片机最早由intel公司推出(对,就是那个intel),当时包括51和52子系列,51子系列中包含了8051这一经典产品,我们现在往往使用8051代称MCS-51系列。 为了区分各个型号,MCS-51系列有着明确的命名规则: 现在去购买相关开发板一般会买到STC89C52等型号,笔者手上的开发板用的是STC89C516也是一个较为常见的衍生型号,由于这些单片机指令系统基本一致,因而在学习中区别不大。 接下来本篇主要是基于较为典型的8051单片机对MCS-51系列单片机进行介绍进行介绍。 1、MCS-51系列单片机硬件结构 1.1 内部结构

stc单片机自动下载程序原理和代码实现

旧街凉风 提交于 2020-01-28 01:44:27
1/stc单片机下载程序的原理 首先我们要理解stc单片机下载程序的原理。在stc单片机中有两个程序区:用户程序区和ISP监控程序区。 这是stc89c52单片机数据手册中的内容。 根据数据手册,我们可以知道,当冷启动或者对ISP_CONTR寄存器送入60H产生复位以后,单片机会从ISP监控程序区开始执行程序。 如果这时候检测到合法的ISP下载命令流(后面会说什么是ISP的合法下载流),则ISP监控程序开始与ISP下载软件通信(如stc-isp),软件也会进入编程模式,向监控程序发送程序码,监控程序接收程序码,并将其写入用户程序区中。成功后,用户程序立即生效,开始运行用户程序。 如果这时候没有检测到合法的ISP下载命令流,单片机就会从用户程序区开始执行程序。 2/冷启动下载 我们刚开始接触stc单片机一般采用的都是冷启动来下载程序。但是这样做有一定的缺点。 首先,单片机频繁的上电掉电会影响单片机的寿命,且一些特殊的外围电路要求一直保持有电状态。 其次,也是我主要想说的一点是,市面上的USB转TTL模块质量参差不齐,绝大多数模块都没有做好隔离,导致电流会从模块的TX和RX倒灌进单片机,如果此时单片机上的电压高于单片机的上电复位检测门槛电压的话,就会导致单片机无法冷启动,进而无法成功下载程序。 我测量了市面上购买的两款USB转TTL模块(PL2303)

单片机成长之路(51基础篇) - 026 基于stm89c52之单片机看门狗

早过忘川 提交于 2019-12-01 17:09:50
基于stc89c52的看门狗,代码如下: main.c 1 #include "stc89c5x_Quick_configuration.h"    // 自定义头文件 2 #include "data.h" 3 #include "bsp_gpio.h" 4 #include "bsp_wdt.h" 5 6 void init_OS_Time(void){ 7 DATA.Time.Time_Interrupt = 1; // 设置步长 8 DATA.Time.Interrupt_count = 0; // 设置单位步数 9 DATA.Time.Time_s = 0; // 时间 s 10 DATA.Time.Time_h = 0; // 时间 h 11 DATA.Time.Time_day = 0; // 时间 日 12 DATA.Time.Time_month = 0; // 时间 月 13 DATA.Time.Time_year = 0; // 时间 年 14 } 15 16 void main(void){ 17 init_OS_Time(); 18 init_WDT(); 19 while(1){ 20 ; 21 } 22 } bsp_wdt.h 1 #ifndef __BSP_WDT_H_ 2 #define __BSP_WDT_H_ 3 4 /*-----------