本人是一名在校的即将大四的物联网专业学生,暑假期间无聊,想写一些东西,来记录之前学过的一些单片机的基础知识,由于记纸质笔记太过低效率了,而且也不看,所以想学着写博客来记录。后续会不定期推出Arduino篇,51篇,stm32篇,以及写一些之前自己做过的一些项目教程。
首先,简单介绍下单片机C语言,通常被简称为C51语言,单片机c语言继承了c语言结构上的优点,便于学习,又有汇编语言操作硬件的能力,因此被广泛使用于单片机程序设计中。
单片机c语言的特点有很多,总结下来主要有以下几点。
1.语法结构和标准c语言基本一致。没有汇编语言那么会涩难懂
2.可移植性好
单片机的一些常用的数据类型
常用的关键字
像if for do case等,单片机C51语言采用了ANSIC标准定义的32个关键字,
类型关键字
char、short、int、long、float、double、unsigned、signed、struct、union、enum、extern、static
控制语句关键字
if、else、switch、for、while、do-while、case、break、continue、goto 、return、default
存储类型关键字
auto、static、register、volatile
如果想详细了解这些关键字,可以参考这篇博客:https://blog.csdn/weixin_51177279/article/details/124774940
常用数据类型的定义
整型数据,浮点型数据,无值型数据的定义很简单,这里就不做阐述了,下面主要说下字符型数据,指针型数据
字符型数据
字符型数据是用来存放字符的变量类型,字符型变量只能存放一个字符。一个字符型数据占八位,字符型定义格式如下
char a ; // 定义a为有符号的字符变量
unsigned char b; //定义b为无符号的字符变量
#include "stdio.h"
void main()
{
char c1,c2;
c1=97;
c2=98;
printf("c1=%c\r\nc2=%c\r\n",c1,c2);
}
输出结果如下:
c1=a;
c2=b;
大写小写字母转换,只用减去32就可以了
如果需要存放一个字符串,则需要定义一个字符型数组,将字符串存到该数组中来表示,示例如下
#include "stdio.h"
void main()
{
char str[3];
str[0]='A';
str[1]='B';
printf("str=%s",str);
在编译的时候,系统将留出三个字符的连续空间及str[0]-str[2]共三个变量,其中最后一个用来存放字符串终止符NULL,即”\0",只有前两个可以自由赋值
这里需要注意的是:终止符编译程序时,自动加上的程序中只对前两个赋值,最后一个不用赋值,如果对最后一个也进行付值,将导致程序的错误输出。
指针型数据
指针型数据是指向变量所存放地址的数据类型,指针型数据是一种特殊的数据类型,根据所指的变量类型不同,可以分为整型指针,浮点型指针,字符型指针,结构型指针和联合指针。
int *i; //整型
float *f; //浮点型
char *c; //字符型
struct *stu; //结构型
union *uni; //联合型
void main()
{
char ch; //定义字符型
char *p; //定义字符型指针
ch = 'b'; //变量赋值
p=&ch; //将变量c的地址赋给p
printf("*p=%c",*p);//输出地址p中所存的数据内容
输出结果如下:
*p=b;
关于指针,跟数组,我会单独的再写一篇博客,因为这两个实在太重要了,而且大学老师关于这两点讲的也很模糊
好了,就先写到这里了。今天是突然的想法,所以准备的有很多不足。
第一篇博客,许多不足,多多指教!!
更多推荐
单片机C语言基础知识篇
发布评论