8-第7章单片机的C语言应用程序设计 7.1C语言与MCS51 72C51数据类型及在MCS-51中的存储方式 73C5数据的存储类型与MCS-51存储结构 74MCS-51特殊功能寄存器(SFR的C51定义 75MCS-51并行接口的C51定义 7.6位变量的C51定义 77C5构造数据类型 7.8模块化程序开发过程 79MCS-51内部资源使用的C语言编程 7,10MCS-51片外扩展的C语言编程 7,1频率量测量的C语言编程 7,12MCS-51机间通信的C语言编程 713键盘和数码显示人机交互的C语言编程 BACK
第第7章 单片机的C语言应用程序设计 7章 单片机的C语言应用程序设计 7.1 C语言与MCS-51 7.2 C51数据类型及在MCS-51中的存储方式 7.3 C51数据的存储类型与MCS-51存储结构 7.4 MCS-51特殊功能寄存器(SFR)的C51定义 7.5 MCS-51并行接口的C51定义 7.6 位变量的C51定义 7.7 C51构造数据类型 7.8 模块化程序开发过程 7.9 MCS-51内部资源使用的C语言编程 7.10 MCS-51片外扩展的C语言编程 7.11 频率量测量的C语言编程 7.12 MCS-51机间通信的C语言编程 7.13 键盘和数码显示人机交互的C语言编程
-第2?来单片如的官应用程秀设计- 71C语言与MCS51 用汇编程序设计MCS-51系列单片机应用程序时,必须要考虑 其存储器结构,尤其必须考虑其片内数据存储器与特殊功能寄存 器正确、合理的使用以及按实际地址处理端口数据。用C语言编写 MCS-51单片机的应用程序,虽然不像用汇编语言那样具体地组织、 分配存储器资源和处理端口数据,但在C语言编程中,对数据类型 与变量的定义,必须要与单片机的存储结构相关联,否则编译器 不能正确地映射定位。用C语言编写单片机应用程序与编写标准的 C语言程序的不同之处就在于根据单片机存储结构及内部资源定义 相应的C语言中的数据类型和变量,其它的语法规定、程序结构及 程序设计方法都与标准的C语言程序设计相同
第7章 单片机的C语言应用程序设计 7.1 C语言与MCS–51 用汇编程序设计MCS–51系列单片机应用程序时,必须要考虑 其存储器结构,尤其必须考虑其片内数据存储器与特殊功能寄存 器正确、合理的使用以及按实际地址处理端口数据。用C语言编写 MCS–51单片机的应用程序,虽然不像用汇编语言那样具体地组织、 分配存储器资源和处理端口数据,但在C语言编程中,对数据类型 与变量的定义,必须要与单片机的存储结构相关联,否则编译器 不能正确地映射定位。用C语言编写单片机应用程序与编写标准的 C语言程序的不同之处就在于根据单片机存储结构及内部资源定义 相应的C语言中的数据类型和变量,其它的语法规定、程序结构及 程序设计方法都与标准的C语言程序设计相同
-第2?来单片如的官应用程秀设计- 用C语言编写的应用程序必须经单片机的C语言编译器(简 称C51),转换生成单片机可执行的代码程序。支持MCS-51系 列单片机的C语言编译器有很多种。如 American automation、 Auocet、BSO/ TASKINO、 DUNFIELD SHAREWARE、 KEIL/ Franklin等。其中 KEIL/Franklin以它的代码紧凑和使用方 便等特点优于其它编译器。本章是针对这种编译器介绍MCS 51单片机C语言程序设计
第7章 单片机的C语言应用程序设计 用C语言编写的应用程序必须经单片机的C语言编译器(简 称C51),转换生成单片机可执行的代码程序。支持MCS–51系 列单片机的C语言编译器有很多种。如American Automation、 Auocet、BSO/TASKING、DUNFIELD SHAREWARE、 KEIL/Franklin等。其中KEIL/Franklin以它的代码紧凑和使用方 便等特点优于其它编译器。本章是针对这种编译器介绍 MCS– 51单片机C语言程序设计
-第2?来单片如的官应用程秀设计- 72C51数据类型及在MCS-51中的存储方式 721C51的数据类型 Franklin c51编译器具体支持的数据类型有:位型(bi)、无 符号字符( unsigned char)、有符号字符( singed char)、无符号整型 ( unsigned int)、有符号整型( signed int)、无符号长整型( unsigned long)、有符号长整型( signed long)、浮点型(foat)和指针类型等
第7章 单片机的C语言应用程序设计 7.2 C51数据类型及在MCS-51中的存储方式 7.2.1 C51的数据类型 Franklin C51编译器具体支持的数据类型有:位型(bit)、无 符号字符(unsigned char)、有符号字符(singed char)、无符号整型 (unsigned int )、有符号整型(signed int )、无符号长整型(unsigned long )、有符号长整型(signed long )、浮点型(float)和指针类型等
-第2?来单片如的官应用程秀设计 表71 Franklin c51的数据类型 数据类型 长度(b 长度(byte) 值域 bi 0.1 unsigned char 0~255 Signed char 112 128~127 unsigned int 16 0-65535 signed int 16 32768~32767 unsigned long 0~4294967295 signed long 32 2147483648~2147483647 float ±1176E-38~±340E+38(6位数字) double 64 244483 ±1.176E-38~±340E+38(10位数字) 般指针 24 存储空间0~65535
第7章 单片机的C语言应用程序设计 表7.1 Franklin C51的数据类型 数据类型 长度(bit) 长度(byte) 值域 bit 1 1 0,1 unsigned char 8 1 0~255 signed char 8 1 –128~127 unsigned int 16 2 0~65535 signed int 16 2 –32768~32767 unsigned long 32 4 0~4294967295 signed long 32 4 –2147483648~2147483647 float 32 4 ±1.176E–38~±3.40E+38(6位数字) double 64 8 ±1.176E–38~±3.40E+38(10位数字) 一般指针 24 3 存储空间0~65535
-第2?来单片如的官应用程秀设计 722C51数据在MCS-51中的存储方式 位变量(bit):与MCS-51硬件特性操作有关的可以定义成位变 量。位变量必须定位在MCS-51单片机片内RAM的位寻址空间中 字符变量(char):字符变量的长度为1byt即8位。这很合适 MCS-51单片机,因为MCS-51单片机每次可处理8位数据。对于无 符号变量( unsigned char)的值域范围是0~255。对于有符号字符变量 ( signed char),最具有重要意义的位是最高位上的符号标志位(msb) 此位为1代表"负",为0代表"正"。有符号字符变量和无符号字符变 量在表示0~-127的数值时,其含义是一样的,都是0~0x7F。负数 般用补码表示,即用11示-1,用1111示-2.。当进 行乘除法运算时,符号问题就变得十分复杂,而C51编译器会自动 地将相应的库函数调入程序中来解决这个问题
第7章 单片机的C语言应用程序设计 7.2.2 C51数据在MCS-51中的存储方式 位变量(bit):与MCS-51硬件特性操作有关的可以定义成位变 量。位变量必须定位在MCS-51单片机片内RAM的位寻址空间中。 字符变量(char):字符变量的长度为1 byte即8位。这很合适 MCS-51单片机,因为MCS-51单片机每次可处理8位数据。对于无 符号变量(unsigned char)的值域范围是0~255。对于有符号字符变量 (signed char),最具有重要意义的位是最高位上的符号标志位(msb)。 此位为1代表"负",为0代表"正"。有符号字符变量和无符号字符变 量在表示0~127的数值时,其含义是一样的,都是0~0x7F。负数一 般用补码表示,即用11111111表示-1, 用11111110表示-2……。当进 行乘除法运算时,符号问题就变得十分复杂,而C51编译器会自动 地将相应的库函数调入程序中来解决这个问题
-第2?来单片如的官应用程秀设计- 整型变量(int):整型变量的长度为16位。与8080和8086 CPU系列不同,MCS-51系列单片机将int型变量的高位字节数 存放在低地址字节中,低位字节数存放在高地址字节中。有符 号整型变量( signed int)也使用msb位作符号标志位,并使用二进 制补码表示数值。可直接使用几种专用的机器指令来完成多字 节的加、减、乘、除运算。整型变量值0x1234以图7.1所示的方 式存放在内存中
第7章 单片机的C语言应用程序设计 整型变量(int): 整型变量的长度为16位。与8080和8086 CPU系列不同,MCS-51系列单片机将int型变量的高位字节数 存放在低地址字节中,低位字节数存放在高地址字节中。有符 号整型变量(signed int)也使用msb位作符号标志位,并使用二进 制补码表示数值。可直接使用几种专用的机器指令来完成多字 节的加、减、乘、除运算。整型变量值0x1234以图7.1所示的方 式存放在内存中
-第2?来单片如的官应用程秀设计- 地址 地址 0x12 +1 0x34 0 0x12 0x56 +1 +2 0x34 0x78 +3 图7Ⅰ整型数的存储结构图72长整型变量的存储结构
第7章 单片机的C语言应用程序设计 图7.1 整型数的存储结构 … 0x12 0x34 … +0 +1 地址 0x12 0x34 0x56 0x78 …. +0 +1 +2 +3 地址 图7.2 长整型变量的存储结构
-第2?来单片如的官应用程秀设计- 浮点型变量( float):浮点型变量为32位,占4个字节,许多复 杂的数学表达式都采用浮点变量数据类型。应用符号位表示数 的符号,用阶码和尾数表示数的大小。 用它们进行任何数学运算都需要使用由编译器决定的各种 不同效率等级的库函数。 Franklin c51的浮点变量数据类型的使 用格式与IEEE-754标准有关,具有24位精度,尾数的高位始终 为"",因而不保存,位的分布如下: ●1位符号位。 8位指数位。 23位尾数
第7章 单片机的C语言应用程序设计 浮点型变量(float): 浮点型变量为32位,占4个字节,许多复 杂的数学表达式都采用浮点变量数据类型。应用符号位表示数 的符号,用阶码和尾数表示数的大小。 用它们进行任何数学运算都需要使用由编译器决定的各种 不同效率等级的库函数。Franklin C51的浮点变量数据类型的使 用格式与IEEE-754标准有关,具有24位精度,尾数的高位始终 为"1",因而不保存,位的分布如下: ● 1位符号位。 ● 8位指数位。 ● 23位尾数
-第单片如的稀官应用秀设计- 符号位是最高位,尾数为低23位,内存中按字节存储顺序如下: 地址 2 内容 MMMMMMMM MMMMMMMM EMMMMMMM SEEEEEEE 其中,S为符号位,1表示负,0表示正;E为阶码;M为23 位尾数,最高位为"1" 浮点变量值-12.5的十进制为:0xC148000,它按图73所 示方式存于内存中
第7章 单片机的C语言应用程序设计 符号位是最高位,尾数为低23位,内存中按字节存储顺序如下: 地址 +0 +1 +2 +3 内容 MMMMMMMM MMMMMMMM EMMMMMMM SEEEEEEE 其中,S为符号位,1表示负,0表示正;E为阶码;M为23 位尾数,最高位为"1"。 浮点变量值 -12.5的十进制为:0xC1480000,它按图7.3所 示方式存于内存中