第10章 单片机C语言程序设计

时间:2025-12-09

第10章 单片机C语言程序设计单片机C语言概述C51的数据类型与运算 C51数据的存储类型和存储模式 C51程序基本结构与相关语句 C51的函数 单片机资源的C51编程实例

51单片机系统开发常用工具软件keil C51

本章知识点 单片机C语言概述

C51的数据类型与运算 C51数据的存储类型和存储模式 C51程序基本结构与相关语句 C51的函数 单片机资源的C51编程实例 51单片机系统开发常用工具软件keil C51

10.1 单片机C语言概述

随着单片机硬件性能的不断提高和应 用技术的不断发展,开发者越来越注重 目标系统的开发成效,而开发成效在很 大程度上取决于程序本身的编写效率。 为了适应这种要求,出现了单片机高级 语言—C语言。

10.1.1 C语言的特点及程序结构单片机的C语言编译器:德国的KEIL C51开发平台、加拿 大DAVEDUNFIELD的MICRO-C51、美国Franklin软件公 司的Franklin C51等。目前最流行的是Keil C51编译器。 一.C语言的特点 1.语言简洁、紧凑,使用方便、灵活。 2.运算符丰富。 3.数据结构丰富。具有现代化语言的各种数据结构。 4.可进行结构化程序设计。 5.可以直接对计算机硬件进行操作。 6.生成的目标代码质量高,程序执行效率高。 7.可移植性好。

二.C语言的程序结构C语言程序采用函数结构,每个C语言程序由一个 或多个函数组成,在这些函数中至少应包含一个主函数 main(),也可以包含一个main()函数和若干个其它的功 能函数。不管main()函数放于何处,程序总是从main() 函数开始执行,执行到main()函数结束则结束。

10.1.2 C语言与MCS-51单片机用C51语言和汇编语言主要不同之处在于: 用汇编语言编写51单片机程序必须要考虑其存储器 结构,尤其必须考虑其片内数据存储器与特殊功能寄存 器的使用以及按实际地址处理端口数据。而用C51语言 编写的51单片机应用程序,则不用具体组织、分配存储 器资源和处理端口数据。但在C51语言编程中,对数据 类型与变量的定义,必须要与单片机的存储结构相关联, 否则编译器不能正确地映射定位。

C51语言与标准C语言程序区别:(1)C51中定义的库函数和标准C语言定义的 库函数不同。后者是按通用微型计算机来定义的, 而C51中的库函数是按MCS-51单片机相应情况来 定义的; (2)数据类型有一定的区别。在C51中增加 了几种针对MCS-51单片机特有的数据类型;

(3)C51中变量的存储模式与MCS-51单片机 的存储器紧密相关;

(4)C51中的输入输出是通过MCS-51串行口 来完成的,输入输出指令执行前必须要对串行口 进行初始化;(5)C51中有专门的中断函数。

10.2 C51的数据类型与运算10.2.1 C51

的数据类型 分为基本数据类型和扩展(组合)数据类型。基本数据类 型除了标准C中的字符型(char)、整型(int)、长整型 (long)、单精浮点型(float)、双精浮点型(double)外,还 有特殊功能寄存器型(sfr和sfr16两种)和位类型(bit和sbit 两种)。扩展数据类型包括数组、指针型(*)以及结构 (struct)和联合(union)等。

表10-1 KEIL C51编译器支持的基本数据类型 基本数据类型 说明符 长度 取值范围

无符号字符型有符号字符型 无符号整型 有符号整型 无符号长整型

unsigned charsigned char unsigned int signed int unsigned long

1字节1字节 2字节 2字节 4字节

0~255-128~+127 0~65535 -32768~+32767 0~4294967295

有符号长整型单精度浮点型 位 型 位 型 特殊功能寄存器型 特殊功能寄存器型

signed longfloat bit sbit sfr sfr16

4字节4字节 1位 1位 1字节 2字节

-2147483648~+2147483647±1.175494E38~±3.402823E+38 0或 1 0或 1 0~255 0~65535

一.字符型charsigned char:用于定义带符号字节数据,其字节的 最高位为符号位,“0”表示正数,“1”表示负数,补码 表示,所能表示的数值范围是-128~+127; unsigned char:用于定义无符号字节数据或字符, 可以存放一个字节的无符号数,也可以存放西文字符, 取值范围为0~255。

二.int整型 分singed int和unsigned int。默认为signed int。 它们的长度均为两个字节,用于存放一个双字节数据。 对于signed int,用于存放两字节带符号数,补码表示, 数的范畴为-32768~+32767。对于unsigned int,用于 存放两字节无符号数,数的范围为0~65535。 三.long长整型 分singed long和unsigned long。默认为signed long。它们的长度均为四个字节,用于存放一个四字节 数据。对于signed long,用于存放四字节带符号数, 补码表示,数的范畴为-2147483648~+2147483647。 对于unsigned long,用于存放四字节无符号数,数的 范围为0~4294967295。

四.float浮点型 长度为四个字节,包含指数和尾数两部分。最高位 为符号位,“1”表示负数,“0”表示正数。单片机中 使用浮点应注意以下三点: ① 由于单片机中没有专门的浮点运算硬件,因此 在运算时会比较慢。 ② 由于51单片机本身是8位的,因此在计算中不 可能达到太高的精度。 ③ 与单精浮点相比,双精浮点型(double)具有更 高的计算精度,但计算时间会更长,速度更慢,C51不 支持双精浮点型。

五.特殊功能寄存器型 分sfr和sfr16两种类型。 sfr:字节型特殊功能寄存器类型,占一个内存单元。 利用它可以访问MCS-51内部的所有特殊功能寄存器;

sfr16:双字节型特殊功能寄存器类型,占用两个字 节单元。利用它可以访问MCS-51内部的所有两个字节 的特殊功能寄存器,如DP …… 此处隐藏:1833字,全部文档内容请下载后查看。喜欢就下载吧 ……

第10章 单片机C语言程序设计.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219