失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【51单片机快速入门指南】1:基础知识和工程创建

【51单片机快速入门指南】1:基础知识和工程创建

时间:2020-06-05 09:28:13

相关推荐

【51单片机快速入门指南】1:基础知识和工程创建

目录

简介命名规则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、i87C51,i80C32、i80C52、i87C52 等;

ATMEL(艾德梅尔):

AT89C51、AT89C52、AT89C2051,AT89S51(RC),AT89S52 (RC)等;

STC(国产宏晶):

STC89C51、STC89C52、STC89C516、STC90C516

Nuvoton(国产新唐):

N76E003、N76E616、MS51FB9AE

Philips(飞利浦)

Dallas(达拉斯)

Siemens(西门子)等

命名规则

51单片机的数据类型

总表

扩展数据类型

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_Htypedefchar int8_t;typedef unsigned char uint8_t;typedefshort int16_t;typedef unsigned short uint16_t;typedeflong 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只有128B;52单片机默认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文件

点击下载/编程

有的开发板可直接下载,大部分情况下需要手动断电重启开发板

等待烧录完成:

如果觉得《【51单片机快速入门指南】1:基础知识和工程创建》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。