一、单片机的C语言概述

  • C51语言或C51:基于51系列单片机的C语言或C语言编译器
  • Keil C51:集程序编辑、编译、连接、目标文件格式转换、调试、模拟仿真等功能于一体
  • C51程序开发流程:与汇编语言类似
  • C51程序结构
    • C51程序结构与一般C语言程序结构没有差别

      • 源程序文件的扩展名为“.c”
      • 每个源程序中包含1个main函数
      • C51程序的执行总是从main函数开始
    • 在Keil C51中,一般先生成一个项目文件管理器,包含
      • 头文件
      • 源程序文件
      • 库文件
      • 编译中间文件
      • 最终可执行和烧录的文件
    • 程序结构
      • 函数是C51程序的基本组成单位
      • 预处理命令,包含
        • 宏定义
        • 头文件包含
        • 条件编译
      • 自定义函数声明
      • main函数
      • 自定义函数
      • 注释
    • 实例
#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程序设计基础相关推荐

  1. 从头开始学51单片机之实例2:用定时中断实现流水灯

    一.仿真环境 Proteus8.9 Keil5 二.Proteus模型搭建 具体过程参考上一篇: 从头开始学51单片机之实例1:用Proteus和Keil搭建流水灯模型_Forster-C的博客-CS ...

  2. 从头开始学51单片机之6:定时器/计数器

    6.1 定时器/计数器的结构及工作原理 1. 51单片机定时器/计数器功能 用单片机实现定时的途径 1 软件定时 利用循环程序.靠执行指令消耗时间,实现时间延迟 无需硬件电路,方便.经济 占用CPU时 ...

  3. 《uCOS51移植心得》---七年前之《快快乐乐跟我学51单片机操作系统和IP栈》

    http://www.amobbs.com/forum.php?mod=viewthread&tid=3396563 <uCOS51移植心得>---七年前之<快快乐乐跟我学5 ...

  4. 第11章 UART 串口通信(手把手教你学51单片机pdf部分)

    手把手教你学51单片机-C语言版.pdf  

  5. 为什么我学51单片机很顺利,学STM32却一头雾水?

    五年懂行,十年称王. 当初自学转行的我,怎么也没想到自己能从事单片机开发10年. 王不敢称,还算懂行. 10年前我刚毕业,即将面临社会毒打,我慌得一批. 我学的是电气工程,后面主修电梯. 毕业后和大家 ...

  6. 手把手教你学51单片机——函数进阶与按键

    目录 写在前面 一.单片机最小系统解析 1.1电源 1.2晶振 1.3复位电路 二.C语言--函数 2.1函数的调用 2.2函数的形参和实参 三.按键 3.1独立按键 3.2独立按键控制led数码管显 ...

  7. c语言52单片机液晶屏显示,[手把手教你学51单片机C语言教程]22 LCD12864液晶屏显示.pdf...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 [手把手教你学51单片机C语言教程]22 LCD ...

  8. pid控制器c51语言编程,51单片机电机pid控制系统程序

    51单片机电机pid控制系统程序 本程序来源网上,小编进行了简单修改,还未验证. /************************* 应用背景:直流电机的额定功率12V,额定转速3000rpm,光码 ...

  9. 【制作】基于金沙滩51单片机的电子密码锁程序

    基于金沙滩51单片机的电子密码锁程序 很久之前做的一个课设,在B站发了效果视频,发现忘记分享代码了,现在整理分享一下. 零.设计报告 1.设计要求 这部分是讲的整个系统实现了什么功能. 1.1.密码的 ...

最新文章

  1. 【原创】开源Math.NET基础数学类库使用(06)直接求解线性方程组
  2. Android TabHost中切換、修改需要显示的Activity
  3. 密码找回功能可能存在的问题
  4. Head First JSP---随笔十(过滤器的威力)
  5. springboot2.5.0 整合 redis 配置详解
  6. java开发微信二维码
  7. php qcloud sdk weapp_微信小程序源码+PHP后台
  8. bootstrap 解决弹出窗口(modal) 常见问题
  9. C++和Rust_Kotlin、Rust两个充满了骚操作的编程语言,值得一玩
  10. 递归算法,JavaScript实现
  11. masm5安装教程_masm5 1、下载个masm5.0(简单 联合开发网 - pudn.com
  12. 【java学习之旅】——JSP入门
  13. 分层总和法matlab,高填方路基沉降检测之回归法
  14. terrasolid时间设置
  15. OMA DRM V1.0/2.0学习笔记
  16. 计算机英语念法,电脑的英文读音标准带音标的
  17. HAUTOJ 1262 魔法宝石
  18. python dict排序_python 字典(dict)按键和值排序
  19. BUUCTF:秘密文件
  20. 基于Springboot微信点餐系统的开发与实现

热门文章

  1. System.Reflection.TargetParameterCountException”类型的异常 参数计数不匹配
  2. css 超链接样式设置
  3. mysql中dateformat用法,MySQL date_format()函数
  4. AOP(五)之Around增强处理
  5. 网关(Gateway)
  6. 【解决】ERROR Failed to compile with 1 error;error in ./node_modules/pdfjs-dist/build/pdf.js
  7. vnpy量化回测怎么做?一文带你了解
  8. 腾讯文档服务器,腾讯内部培训资料服务器硬件介绍-20210712081429.ppt-原创力文档...
  9. 20222948 2022-2023-2 《网络攻防实践》第4周作业
  10. SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航——2.google-cartographer机器人SLAM建图...