STC89C51RC系列单片机技术规格与选型指南

5星 · 超过95%的资源 需积分: 32 10 下载量 91 浏览量 更新于2024-07-28 收藏 2.75MB PDF 举报
"STC单片机规格书,包含了STC89C51RC、STC89LE51RC、STC89C52RC、STC89LE52RC、STC89C53RC、STC89LE53RC、STC89C54RD+、STC89LE54RD+、STC89C58RD+、STC89LE58RD+、STC89C516RD+、STC89LE516RD+等系列单片机的技术特性,强调了其高速、高可靠、低功耗、无法解密、强抗静电和强抗干扰的特点,并提供了宏晶科技的联系方式以及各地区办事处的电话和传真。" 本文档是关于STC系列单片机的规格书,特别是STC89C51RC/RD+系列,这些单片机是基于8051内核的增强型微控制器。STC89系列包括多个型号,如STC89C51RC、STC89LE516AD等,它们都具备高速运行的能力,确保了高效的处理速度。同时,这些单片机设计有低功耗特性,这使得它们在能源效率方面具有优势,适用于对能耗敏感的应用场景。 文档指出STC89系列的一大特点是无法解密,这意味着程序代码具有高度的安全性,防止未经授权的访问和复制。此外,这些单片机具有强抗静电和强抗干扰能力,能在恶劣的电磁环境下稳定工作,提高了系统的可靠性。 STC89系列还支持ISP(In-System Programming)在线编程,允许用户在不拆卸单片机的情况下反复进行程序的设置和更新。这一特性极大地简化了开发过程和后期维护工作。文档特别提到,该系列单片机分为单倍速和双倍速两种运行模式,可以灵活适应不同性能需求的应用。 在硬件接口方面,例如P4口,不仅提供了地址0E8H,还集成了INT2/P4.3和INT3/P4.2功能,支持位寻址,增强了I/O口的灵活性和功能多样性。这使得开发者在设计电路时有更多的选择和控制。 STC89系列单片机广泛应用于各种领域,如工业控制、家用电器、汽车电子、通信设备等。文档最后给出了宏晶科技的联系方式,包括深圳、广州、上海和北京的办事处电话和传真,便于用户获取技术支持和合作机会。 总结来说,STC89C51RC/RD+系列单片机是高性能、低功耗且安全可靠的微控制器,具有丰富的I/O资源和在线编程能力,适合于多种嵌入式系统的设计与开发。
2021-11-16 上传
STC8单片机读写内部EEPROM KEIL工程文件源码: /* STC8 内部EEPROM测试 从手册717页上可以看出 STC8的 EEPROM空间为1k 地址在0000h-03ffh 地址也是1024的大小 次程序结合手册 编写 大同小异 程序的主要目的是 先清楚地址0 到512 (一个扇区)的数据 然后读取 清楚扇区的数据 如果清楚成功 则读到的数据都为0xff 然后在向里写入 1-ff 1-ff 512个这样的字节 然后在读里面的字节 判断是否和写入的一样 整个过程都是通过串口在不停的上传给电脑 重点强调 更新数据一定是要先擦除整个扇区 才能更新 这是和外部E2的比较大的区别 但是和flash的写法差不多 要求 下载时 STC8 内部晶振为11.0592 电脑打开串口的波特率为9600 */ #include "stc8.h" #define u8 unsigned char #define u16 unsigned int #define CMD_IDLE 0 //空闲模式 #define CMD_READ 1 //IAP字节读命令 #define CMD_PROGRAM 2 //IAP字节编程命令 #define CMD_ERASE 3 //IAP字节擦除命令 #define ENABLE_IAP 0X82 //if SYSCLK<20MHz //测试地址 #define IAP_ADDRESS 0X0000 //从手册上可以看出 STC15F2K60S2的EEPROM地址是0x0000- 0x03ff 正好是1k的地址空间 sbit led=P5^5; //P3.5口LED灯定义 //延时函数 void delay(u8 n) { while(n--); } //关闭IAP void IapIdle() { IAP_CONTR=0; //关闭IAP功能 IAP_CMD =0; //清除命令寄存器 IAP_TRIG =0; //清楚触发寄存器 IAP_ADDRH=0X80; //将地址设置到非IAP区域 IAP_ADDRL=0; } //从ISP/IAP/EEPROM区域读取一个字节 u8 IapReadByte(u16 addr) { u8 dat; //数据缓冲区 IAP_CONTR=ENABLE_IAP; //使能IAP 同时设置等待时间 IAP_CMD=CMD_READ; //设置IAP命令 IAP_ADDRL=addr; //设置IAP低地址 IAP_ADDRH=addr>>8; //设置IAP高地址 IAP_TRIG=0X5a; //写触发命令(0x5a) 写触摸命令以后 命令才会生效 手册713页 IAP_TRIG=0Xa5; //写触发命令(0xa5) delay(10); //等待ISP/IAP/EEPROM操作完成 dat=IAP_DATA; //读ISP/IAP/EEPROM数据 IapIdle(); //关闭IAP功能 return dat; //返回 } //写一个字节数据到ISP/IAP/EEPROM区域 void IapProgramByte(u16 addr,u8 dat) { IAP_CONTR=ENABLE_IAP; //使能IAP 同时设置等待时间 IAP_CMD=CMD_PROGRAM; //设置IAP命令 IAP_ADDRL=addr; //设置IAP低地址 IAP_ADDRH=addr>>8; //设置IAP高地址 IAP_DATA=dat; //写ISP/IAP/EEPROM数据 IAP_TRIG=0X5a; //写触发命令(0x5a) 写触摸命令以后 命令才会生效 手册713页 IAP_TRIG=0Xa5; //写触发命令(0xa5) delay(10); //等待ISP/IAP/EEPROM操作完成 IapIdle(); //关闭IAP功能 } //扇区擦除 void IapEraseSector(u16 addr) { IAP_CONTR=ENABLE_IAP; //使能IAP 同时设置等待时间 IAP_CMD=CMD_ERASE; //设置IAP命令 IAP_ADDRL=addr; //设置IAP低地址 IAP_ADDR