- 1、本文档共106页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 单片机C语言程序设计 本章将学习: 4.1 C语言与MCS-51单片机 4.2 C51的数据类型 4.3 C51的运算量 4.4 C51的运算符及表达式 4.5 表达式语句及复合语句 4.6 C51的输入/输出 4.7 C51程序基本结构与相关语句 4.8 函数 4.9 C51程序设计 4.1 C语言与MCS-51单片机 MCS-51的编程语言常用的有两种,一种是汇编语言,一种是C语言(C51)。 汇编语言的特点:机器代码生成效率很高,可读性差,编程难度大。 C51与ASM-51(汇编语言)相比,有如下优点: ① 编程员无须深入了解单片机的指令系统和硬件,只需初步了解其存储器结构。 ② 良好的模块化结构,便于改进和扩充。 ③ 寄存器分配、存储器的寻址及数据类型,中断服务程序的现场保护和恢复,中断向量表的填写都由C51编译器处理。 ④ 丰富的库函数。 ⑤ 能方便地管理内部寄存器的分配、不同存储器的寻址和数据类型等细节问题。 ⑥ 头文件中允许定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发。 ⑦ 可方便地接受多种实用程序的服务,有专门的实用程序自动生成;有实时多任务操作系统,可调度多道任务,简化用户编程,提高运行的安全性等。 与其它高级语言相比,C语言具有以下特点: C语言程序采用函数结构,每个C语言程序由一个或多个函数组成,在这些函数中至少应包含一个主函数main()。 以main()函数为程序入口,执行到main()函数结束则结束。程序体中包含若干语句,还可以调用若干函数,其他函数直接也可相互调用。 每条语句后面必须以分号“;”作为结束符。 C语言程序对大小写字母比较敏感。 在程序中可以用“/*………*/”或“//”对C程序中的任何部分作注释,以增加程序的可读性。 C语言本身没有输入输出语句。输入和输出是通过输入输出函数scanf()和printf()来实现的。输入输出函数是通过标准库函数形式提供给用户。 C51的语法规定、程序结构及程序设计方法都与标准的C语言程序设计相同,但C51程序与标准的C程序在以下几个方面不一样: (1)C51中定义的库函数和标准C语言定义的库函数不同; (2)C51中的数据类型与标准C的数据类型也有一定的区别,在C51中还增加了几种针对MCS-51单片机特有的数据类型; (3)C51变量的存储模式与标准C中变量的存储模式不一样,C51中变量的存储模式是与MCS-51单片机的存储器紧密相关; (4)C51与标准C的输入输出处理不一样,C51中的输入输出是通过MCS-51串行口来完成的,输入输出指令执行前必须要对串行口进行初始化; (5)C51与标准C在函数使用方面也有一定的区别,C51中有专门的中断函数。 4.2 C51的数据类型 当运算符两侧的数据类型不同时,要转换成同种类型。转换方式有两种情况: 一是自动转换,是指编译器在编译时自动进行的类型转换。顺序为:bit→char→int→long→float,signed→unsigned。 二是强制类型转换,通过强制类型转换符“()”对数据类型进行人为的强制转换。如:(double)a ,将a 强制转换为double类型。 4.3 C51的运算量 在程序运行中其值不能改变的量称为常量。 1. 整型常量 可以表示为十进制,如123,0,-8等。十六进制则以0x开头,如0x34。长整型就在数字后面加字母L,如10L, 0xF340L等。 2. 浮点型常量 分为十进制和指数表示形式。 十进制由数字和小数点组成,如0.888, 0.0,3345.345等,整数或小数部分为0时可以省略0但必须有小数点。 指数表示形式为:[±]数字[.数字]e[±]数字 如123e3,5e6,-1.0e-3,而e3,5e4.0则是非法的表示形式。 3. 字符型常量 单引号内的字符,如‘a’,‘d’等,可以是可显示的ASCII字符,也可以是不可显示的控制字符。 4. 字符串型常量 由双引号内的字符组成,如“hello”,“english”等。当引号内的没有字符时,为空字符串。一个字符串常量在内存中存放时每个字符占一个字节,并自动在末尾加一个转义字符“\0”作为字符串结束符。 用标识符代表的常量称为符号常量。 例如:在指令“ #define PI 3.1415926”后,符号常量PI即代表圆周率3.1415926。 在程序运行中,其值可以改变的量称为变量 一个变量主要由两部分构成:一个是变量名,一个是变量值。 每个变量都有一个变量名,在内存中占据一定的存储单元(地址),并在该内存单元中存放该变量的值。 变量的定义格式为: [存储种类] 数据类型说明符 [存储器类型] 变量名1[=初值][,变量名2[=初
文档评论(0)