从头开始学51单片机之4:C51程序设计基础
一、单片机的C语言概述
- C51语言或C51:基于51系列单片机的C语言或C语言编译器
- Keil C51:集程序编辑、编译、连接、目标文件格式转换、调试、模拟仿真等功能于一体
- C51程序开发流程:与汇编语言类似
- C51程序结构
- C51程序结构与一般C语言程序结构没有差别
- 源程序文件的扩展名为“.c”
- 每个源程序中包含1个main函数
- C51程序的执行总是从main函数开始
- 在Keil C51中,一般先生成一个项目文件管理器,包含
- 头文件
- 源程序文件
- 库文件
- 编译中间文件
- 最终可执行和烧录的文件
- 程序结构
- 函数是C51程序的基本组成单位
- 预处理命令,包含
- 宏定义
- 头文件包含
- 条件编译
- 自定义函数声明
- main函数
- 自定义函数
- 注释
- 实例
- C51程序结构与一般C语言程序结构没有差别
#include <reg51.h> // 包含头文件reg51.hsbit P1_0 = P1^0; // 定义位名称
void delay (unsigned char i); // 延时函数声明void main()
{...while(1){P1 = 0x00; // 点亮LED灯delay (10000); // 延时P1 = 0xff; // 熄灭LED灯delay (10000); // 延时}
}void delay (int i) //延时函数
{unsigned char j, k;for(k = 0; k < i; k ++){for(j = 0; j < 255; j ++);}
}
二、C51的数据类型与数据存储类型
- 标识符和关键字
- 标识符:用来表示组成C51程序的常量、变量、语句标号及用户自定义函数的名称等
- 关键字:已经被C51编译器定义的专用标识符
- 标识符必须满足响应规则,尤其不能使用C51的关键字
- C51的数据类型
- 常量与变量
- 变量定义的格式
- [存储种类] 数据类型 [存储器类型] 变量名
- 例如:extern unsigned char data system_status = 0;
- 常量的使用(实际中通常使用宏定义)
- 数据类型
- ASCII C标准数据类型:char、int、short、long、float、double等
- C51中特殊的数据类型
- bit:定义片内RAM的位寻址区
- sfr/sfr16:定义SFR字节寻址区
- sbit:定义SFR位寻址区
- 数据存储类型
- 存储种类:auto(自动)、extern(外部)、static(静态)、register(寄存器)
- 存储器类型:data、bdata、idata、pdata、xdata、code
- 数据类型
- 变量定义的格式
- 常量与变量
三、C51的运算符、表达式与规则
- 算术运算:+、-、*、/、%、++、--
- 关系运算:>、<、>=、<=、==、!=
- 逻辑运算:&&、||、!
- 位运算:&、|、^、~、<<、>>
- 赋值运算:=
- 优先级:
C语言运算符优先级列表(超全)_Somnus陳的博客-CSDN博客_c运算符优先级顺序表小编将C语言中的运算符优先级整理了一份,知道宝宝们懒,所以是以图片的形式整理出来的,需要的宝宝们可以直接以图片的形式保存下来。需要注意的点:‘!’属于单目运算符,并不属于逻辑运算符。单目运算符、条件运算符、赋值运算符的结合性是从右至左,其他运算符结合性是从左至右。同一运算符有优先级之分(比如算符运算符的乘法的优先级比加法优先级高)。运算符的优先级...https://blog.csdn.net/DZRYWYBL/article/details/90679557
- 逗号表达式和条件表达式
四、C51流程控制语句
- 顺序
- 选择
- If
- switch
- 循环
- for
- while
五、C51的数组与结构
- 数组
- 一维数组
- 二维数组
- 结构
六、C51的指针与函数
- 指针
- 函数
- 定义
- 调用和返回
- 中断函数
- 库函数
从头开始学51单片机之4:C51程序设计基础相关推荐
- 从头开始学51单片机之实例2:用定时中断实现流水灯
一.仿真环境 Proteus8.9 Keil5 二.Proteus模型搭建 具体过程参考上一篇: 从头开始学51单片机之实例1:用Proteus和Keil搭建流水灯模型_Forster-C的博客-CS ...
- 从头开始学51单片机之6:定时器/计数器
6.1 定时器/计数器的结构及工作原理 1. 51单片机定时器/计数器功能 用单片机实现定时的途径 1 软件定时 利用循环程序.靠执行指令消耗时间,实现时间延迟 无需硬件电路,方便.经济 占用CPU时 ...
- 《uCOS51移植心得》---七年前之《快快乐乐跟我学51单片机操作系统和IP栈》
http://www.amobbs.com/forum.php?mod=viewthread&tid=3396563 <uCOS51移植心得>---七年前之<快快乐乐跟我学5 ...
- 第11章 UART 串口通信(手把手教你学51单片机pdf部分)
手把手教你学51单片机-C语言版.pdf
- 为什么我学51单片机很顺利,学STM32却一头雾水?
五年懂行,十年称王. 当初自学转行的我,怎么也没想到自己能从事单片机开发10年. 王不敢称,还算懂行. 10年前我刚毕业,即将面临社会毒打,我慌得一批. 我学的是电气工程,后面主修电梯. 毕业后和大家 ...
- 手把手教你学51单片机——函数进阶与按键
目录 写在前面 一.单片机最小系统解析 1.1电源 1.2晶振 1.3复位电路 二.C语言--函数 2.1函数的调用 2.2函数的形参和实参 三.按键 3.1独立按键 3.2独立按键控制led数码管显 ...
- c语言52单片机液晶屏显示,[手把手教你学51单片机C语言教程]22 LCD12864液晶屏显示.pdf...
您所在位置:网站首页 > 海量文档  > 计算机 > C/C++资料 [手把手教你学51单片机C语言教程]22 LCD ...
- pid控制器c51语言编程,51单片机电机pid控制系统程序
51单片机电机pid控制系统程序 本程序来源网上,小编进行了简单修改,还未验证. /************************* 应用背景:直流电机的额定功率12V,额定转速3000rpm,光码 ...
- 【制作】基于金沙滩51单片机的电子密码锁程序
基于金沙滩51单片机的电子密码锁程序 很久之前做的一个课设,在B站发了效果视频,发现忘记分享代码了,现在整理分享一下. 零.设计报告 1.设计要求 这部分是讲的整个系统实现了什么功能. 1.1.密码的 ...
最新文章
- 【原创】开源Math.NET基础数学类库使用(06)直接求解线性方程组
- Android TabHost中切換、修改需要显示的Activity
- 密码找回功能可能存在的问题
- Head First JSP---随笔十(过滤器的威力)
- springboot2.5.0 整合 redis 配置详解
- java开发微信二维码
- php qcloud sdk weapp_微信小程序源码+PHP后台
- bootstrap 解决弹出窗口(modal) 常见问题
- C++和Rust_Kotlin、Rust两个充满了骚操作的编程语言,值得一玩
- 递归算法,JavaScript实现
- masm5安装教程_masm5 1、下载个masm5.0(简单 联合开发网 - pudn.com
- 【java学习之旅】——JSP入门
- 分层总和法matlab,高填方路基沉降检测之回归法
- terrasolid时间设置
- OMA DRM V1.0/2.0学习笔记
- 计算机英语念法,电脑的英文读音标准带音标的
- HAUTOJ 1262 魔法宝石
- python dict排序_python 字典(dict)按键和值排序
- BUUCTF:秘密文件
- 基于Springboot微信点餐系统的开发与实现
热门文章
- System.Reflection.TargetParameterCountException”类型的异常 参数计数不匹配
- css 超链接样式设置
- mysql中dateformat用法,MySQL date_format()函数
- AOP(五)之Around增强处理
- 网关(Gateway)
- 【解决】ERROR Failed to compile with 1 error;error in ./node_modules/pdfjs-dist/build/pdf.js
- vnpy量化回测怎么做?一文带你了解
- 腾讯文档服务器,腾讯内部培训资料服务器硬件介绍-20210712081429.ppt-原创力文档...
- 20222948 2022-2023-2 《网络攻防实践》第4周作业
- SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航——2.google-cartographer机器人SLAM建图...