贵阳网站建设技术托管,大数据营销平台有哪些,一起做网店类型的网站,上海简站商贸有限公司目录简介命名规则51单片机的数据类型总表扩展数据类型stdint.h存储器类型关键字烧录工具工程的创建创建项目添加C文件配置工程存储模式配置输出配置代码优化配置编译烧录普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 简介
51…
目录简介命名规则51单片机的数据类型总表扩展数据类型stdint.h存储器类型关键字烧录工具工程的创建创建项目添加C文件配置工程存储模式配置输出配置代码优化配置编译烧录普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 简介
51 单片机是对所有兼容 Intel 8031 指令系统的单片机的统称。 常见品牌 Intel (英特尔) i80C31、i80C51、i87C51i80C32、i80C52、i87C52 等 ATMEL (艾德梅尔) AT89C51、AT89C52、AT89C2051AT89S51RCAT89S52 RC等 STC (国产宏晶) STC89C51、STC89C52、STC89C516、STC90C516 Nuvoton (国产新唐): N76E003、N76E616、MS51FB9AE Philips (飞利浦) Dallas (达拉斯) Siemens (西门子)等
命名规则 51单片机的数据类型
总表
类 别数 据 类 型长 度值 域字符型unsigned char1字节0255字符型signed char1字节-128127字符型char1字节-128127整 型unsigned short int2字节065535整 型signed short int2字节-3276832767整 型short int2字节-3276832767整 型unsigned short2字节065535整 型signed short2字节-3276832767整 型short2字节-3276832767整 型unsigned int2字节065535整 型signed int2字节-3276832767整 型int2字节-3276832767长整型unsigned long int4字节04294967295长整型signed long int4字节-21474836482147483647长整型long int4字节-21474836482147483647长整型unsigned long4字节04294967295长整型signed long4字节-21474836482147483647长整型long4字节-21474836482147483647浮点型float4字节±1.75494E-38±3.402823E38浮点型double4字节±1.75494E-38±3.402823E38位 型bit1位01位 型sbit1位01SFR 型sbit1位01SFR 型sfr1字节0255SFR 型sfr162字节065535
扩展数据类型
bit 声明一个普通的位变量。例如“bit flag;”。 sbit 声明特殊功能寄存器中的某一位。例如使用sbit TI SCON^0;就声明了TI为特殊功能寄存器SCON的第0位。 sfr 声明一个8位寄存器为特殊功能寄存器。例如将51单片机内存地址0x98处的存储单元声明为8位特殊功能寄存器SCON可以使用sfr SCON 0x98;语句。 sfr16 声明一个16位的寄存器为特殊功能寄存器。为了将51单片机内存地址0xCC处开始的连续两个存储单元声明为一个统一的16位特殊功能寄存器T2可以使用sfr16 T2 0xCC;语句。 在Keil中用sbit、sfr、sfr16声明特殊功能寄存器变量或特殊功能寄存器位变量时其声明语句都只能放在函数外而不能放在函数内否则出现语法错误 而用bit声明普通位变量时声明语句既可放在函数外也可放在函数内。此外bit、sbit、sfr、sfr16都不支持指针和数组扩展,因此不能定义bit、sbit、sfr、sfr16型指针和数组。
stdint.h 其他平台的单片机大多都有stdint.h头文件统一数据类型为了便利编程和之后的程序的移植建议使用如下头文件辅助编程。
/*****************************************************************************/
/* STDINT.H */
/* 仅适用于51单片机 */
/*****************************************************************************/#ifndef STDINT_H
#define STDINT_Htypedef char int8_t;
typedef unsigned char uint8_t;
typedef short int16_t;
typedef unsigned short uint16_t;
typedef long int32_t;
typedef unsigned long uint32_t;typedef int8_t int_least8_t;
typedef uint8_t uint_least8_t;
typedef int16_t int_least16_t;
typedef uint16_t uint_least16_t;
typedef int32_t int_least32_t;
typedef uint32_t uint_least32_t;typedef int8_t int_fast8_t;
typedef uint8_t uint_fast8_t;
typedef int16_t int_fast16_t;
typedef uint16_t uint_fast16_t;
typedef int32_t int_fast32_t;
typedef uint32_t uint_fast32_t;typedef int32_t intmax_t;
typedef uint32_t uintmax_t;#define INT8_MAX 0x7f
#define INT8_MIN (-INT8_MAX-1)
#define UINT8_MAX 0xff#define INT16_MAX 0x7fff
#define INT16_MIN (-INT16_MAX-1)
#define UINT16_MAX 0xffff#define INT32_MAX 0x7fffffff
#define INT32_MIN (-INT32_MAX-1)
#define UINT32_MAX 0xffffffff#define INT_LEAST8_MAX (INT8_MAX)
#define INT_LEAST8_MIN (INT8_MIN)
#define UINT_LEAST8_MAX (UINT8_MAX)
#define INT_LEAST16_MAX (INT16_MAX)
#define INT_LEAST16_MIN (INT16_MIN)
#define UINT_LEAST16_MAX (UINT16_MAX)
#define INT_LEAST32_MAX (INT32_MAX)
#define INT_LEAST32_MIN (INT32_MIN)
#define UINT_LEAST32_MAX (UINT32_MAX)#define INT_FAST8_MAX (INT8_MAX)
#define INT_FAST8_MIN (INT8_MIN)
#define UINT_FAST8_MAX (UINT8_MAX)
#define INT_FAST16_MAX (INT16_MAX)
#define INT_FAST16_MIN (INT16_MIN)
#define UINT_FAST16_MAX (UINT16_MAX)
#define INT_FAST32_MAX (INT32_MAX)
#define INT_FAST32_MIN (INT32_MIN)
#define UINT_FAST32_MAX (UINT32_MAX)#define INT8_C(value) ((int_least8_t)(value))
#define UINT8_C(value) ((uint_least8_t)(value))
#define INT16_C(value) ((int_least16_t)(value))
#define UINT16_C(value) ((uint_least16_t)(value))
#define INT32_C(value) ((int_least32_t)(value))
#define UINT32_C(value) ((uint_least32_t)(value))
#define INTMAX_C(value) ((intmax_t)(value))
#define UINTMAX_C(value) ((uintmax_t)(value))#endif存储器类型关键字 烧录工具
在宏晶科技官网下载烧录工具 添加型号和头文件到Keil中 选择文件夹
工程的创建
普中科技–各型号开发板资料下载
创建项目
在Keil中选择项目-新uVision项目… 选择位置创建工程 选择芯片型号 通用的型号可选择Legacy Device Database内Microchip的型号 若使用STC的单片机并导入了STC的型号则可选择如下。
确认
添加C文件 源文件中右键空白处添加芯片的头文件 经典C52单片机为 STC的单片机为
配置工程 存储模式配置
本节摘自51 small、compact、large模式 —— EmbededCoder RAM在程序运行过程中存放随机变量的数据空间。51单片机默认内部RAM只有128B52单片机默认256B;STC89C52增加到512B ; 在Keil中编写程序总程序中所有变量占用的字节数少于128B时候并且储存模式为small时对不定义的变量编译器将默认为0一旦程序中变量总数量超过128B必须对所有变量进行初始化否则未被初始化的变量的默认值将是不确定的。当变量总和超过128B时候必须重设定存储器的存储模式。 存储器模式一共有三种分别为small、compact、large模式。
small模式 在small模式中所有默认变量均装入单片机内部的RAM中例如uchar a ; float b等变量时候;该模式下的优点访问速度快、缺点是空间有限且对堆栈的分配比较少难以把握碰到递归调用时候需要小心。这种模式只适用于小程序。
compact模式 在compact模式中所有默认变量均位于单片机的256B RAM中和在small模式中使用关键字 pdata来定义数据变量的效果一样如 uchar pdata a[100];在该模式下程序总变量空间不能超过256B。 对于只有128B的单片机来说使用此模式定义超过128B变量数据时将发生错误。其优点是觉small模式宽裕速度较small慢但是比large块是一种中间状’
large模式 在large模式中所有默认变量可放在多达64KB的RAM中包括内部RAM和外部RAM这和使用关键子xdata 来定义变量的效果一样。该模式的优点是空间大可存变量多缺点是访问速度慢尤其对于两个以上字节变量访问速度来说更是如此。在large模式下编写程序定义的变量总数前外不能超过对应单片机的内部最大RAM字节数因为即使超过了编译器也不会提示错误但是程序必然会出错。
输出配置
输出中勾选创建HEX文件以生成要烧录进单片机的16进制文件 代码优化配置 编译 编译后即可在工程路径Objects文件夹下找到可烧录的hex文件
烧录
打开STC-ISP软件将开发板连接至电脑选择对应的串口 选择要烧录的hex文件 点击下载/编程 有的开发板可直接下载大部分情况下需要手动断电重启开发板 等待烧录完成