单片机C程序设计

上传人:cl****1 文档编号:548268169 上传时间:2023-06-06 格式:DOC 页数:10 大小:76.50KB
返回 下载 相关 举报
单片机C程序设计_第1页
第1页 / 共10页
单片机C程序设计_第2页
第2页 / 共10页
单片机C程序设计_第3页
第3页 / 共10页
单片机C程序设计_第4页
第4页 / 共10页
单片机C程序设计_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《单片机C程序设计》由会员分享,可在线阅读,更多相关《单片机C程序设计(10页珍藏版)》请在金锄头文库上搜索。

1、 童梦无忧网(试管婴儿) 本文由hero06111001贡献 ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 51简介 C-51简介 C语言作为一种非常方便的语言而得到广泛的支持, 语言作为一种非常方便的语言而得到广泛的支持, C语言程序本身不依赖于机器硬件系统,基本上不 语言程序本身不依赖于机器硬件系统, 作修改就可将程序从不同的单片机中移植过来。 作修改就可将程序从不同的单片机中移植过来。 C提供了很多数学函数并支持浮点运算,开发效率 提供了很多数学函数并支持浮点运算, 故可缩短开发时间, 高,故可缩短开发时间,增加程序可读性和可维护 性。 相比, C

2、-51与ASM-51相比,有如下优点: 51与ASM-51相比 有如下优点: 对单片机的指令系统不要求了解, 1. 对单片机的指令系统不要求了解,仅要求对 的存贮器结构有初步了解; 8051 的存贮器结构有初步了解; 2. 寄存器分配、不同存贮器的寻址及数据类型 寄存器分配、 等细节可由编译器管理; 等细节可由编译器管理; 程序有规范的结构,可分成不同的函数, 3. 程序有规范的结构,可分成不同的函数,这 种方式可使程序结构化; 种方式可使程序结构化; 4. 具有将可变的选择与特殊操作组合在一起的 能力,改善了程序的可读性; 能力,改善了程序的可读性; 提供的库包含许多标准子程序, 5. 提供

3、的库包含许多标准子程序,具有较强的 数据处理能力; 数据处理能力; 由于具有方便的模块化编程技术, 6. 由于具有方便的模块化编程技术,使已编好 程序可容量地植入新程序; 程序可容量地植入新程序; 单片机的C程序设计 C51的程序结构 1. 包涵区 #include “reg52.h” #include “absacc.h” 2. 定义区 define PA XBYTE 0xffc0 3. 全局变量定义区 int i,j; char a; 4. 子函数区 void delay() 5. 主函数区 void main() . C51的数据类型 1. 字符型数据。 标识符 char, unsign

4、ed char 占用一个字节存储空间,表示数的范围:0255(char) -128127(unsigned char) 2. 整型数据。 标识符 int, unsigned int 占用两个字节存储空间,表示数的范围:065535(int) -3276832767(unsigned int) 3. 长整型数据。 标识符 long, unsigned long 占用四个字节存储空间,表示数的范围:02321(long) - 231 2311(unsigned long) 4. 实型数据。 标识符 float, double float占用四个字节存储空间,double占用八个字节存储空间 5.

5、位变量数据。 标识符 bit, sbit bit占用存储空间可位寻址RAM区中一个bit。 sbit用于定义一个固定的寻址位,或者是已定义过的SFR或byte的 某一位。 6. SFR 定义特殊功能寄存器。 数据的存储类型 单片机三个存储空间: 片内数据存储区: 四组通用寄存器区 可位寻址区 堆栈和用户数据区 高128字节区 SFR区 片外数据存储区:用R0,R1寻址区 用DPTR寻址区 程序存储器区 存储类型与对应的存储区域 存储类型 sfr data bdata idata pdata xdata code 存储区域 特殊功能寄存器 片内可直接寻址区(128B) 片内可位寻址区(1 6B)

6、,允许位和字节 同时访问 片内可间接寻址区(256B) 片外可分页寻址区(256B),用R0,R1 片外RAM区(64KB),用dptr 程序存储区 (64KB) 当没有指定存储类型时,将采用缺省模式,小模式为data, 其他模式时为xdata 特殊功能寄存器定义 C51中,特殊功能寄存器及其可位寻址位通过sfr及sbit定义 与标准C不同,只用于C51中。 如: sfr PSW=0xD0; sfr P1=0x90; 如果要定义PSW和P1中的某一位,则采用sbit sbit CY=0xD7; sbit CY=0xD07; sbit CY=PSW7; sfr, sbit 只能在函数外使用,一般

7、放在程序的开头 大部分的特殊功能寄存器和其可位寻址位都已定义在 reg51.h 和reg52.h中,使用时只需在源文件中包含相应的头文件。对于 未定义的位,使用前先定义。 并行接口及其定义 51系列除其本身的四个接口外,也可在片外扩展硬件I/O口或 其他功能芯片,它们与外部数据存储器统一编址,即把她们作 为外部存储器的一个单元。 扩展的外部硬件I/O口和功能接口芯片需要拥护自定义。 如: #include “absacc.h” #define PA XBYTE 0xffc0 void main( ) PA=0x00; 位变量及其定义 位变量用关键字bit定义,如:bit flag bit tr

8、ue 对位变量的限制: 不能定义位变量指针, 如: bit * bit_point 不能定义位数组, 如:bit bit_array5 位变量说明中可以指定存储类型,但只能是bdata. 如果在程序中,要求即可字节寻址又可位寻址,则其寻址类型为 bdata。一般先定义字节变量,再用sbit定义位变量。如: int bdata a; char bdata b4 在用sbit定义: sbit a0=a0; sbit a6=a6; sbit b11=b11; sbit b34=b34; C51运算符 C51 的运算符主要有:算术运算符,关系运算符,逻辑运算符 位运算符,赋值及复合赋值运算符 1. 算

9、术运算符 基本算术运算符有:+ * / % 加 件 乘 除 取模 属于双目运算符,需要两个操作数 除法运算:若两个整数相初,结果为整数。 取模运算:所得结果的符号与左侧操作数的符号相同 如: 7/5=1; 5/7=0; -93%23=-1; -93%-23=-1; 93%-23=1 ; 93%93=1 自增、自减运算符: +、-,如:+j; j+;i-+,-只能用于变量,不能用于常量。 当+j时,先做加一,再做运算。而j+先做运算再做加一 如: a=2 ; b=+a; 则 b=3, a=3; b=a+; 则 b=2, a=3; 强制类型转换 运用强制类型转换运算符强行将一个表达式转换为所需类型

10、 一般表达式形式为: (类型名)(表达式) 如: (double)a; (int)(x+y); (int) a % (int) b; 为了表达准确,表达式必须用括号括起: 如: (int)x+y=(int) (x) +y != (int)(x+y); 关系运算符 关系运算即比较运算,就是将两个数进行比较,有六种关系运算符 小于 大于 = 大于等于 = 等于 != 不等于 用关系运算符将表达式连起来称为关系表达式。 关系表达式的结果为逻辑值,即只有真假; 表达式成立为真,即为1; 表达式不成立为假,即为0; 逻辑运算符 逻辑运算是对逻辑量进行的运算,共有三种: & | ! 逻辑与 逻辑或 逻辑非

11、 双目 双目 单目 逻辑表达式: 用逻辑运算符将两个表达式或逻辑量连起来的表达式 逻辑表达式的结果也是逻辑量(真或假) 算术表达式,结果为0,则为逻辑假,否则为真 逻辑表达式的执行规则:逻辑表达式不完全执行,即一个逻辑表 达式中的所有运算符并不都被执行,只有当一定要执行下一个逻 辑运算才能确定表达式的值时,才执行该运算。例如: a&b&c 当a=0时 a|b|c 当a=1时 位运算符 C51提供了六种位运算符: & | 按位与 按位或 按位异或 按位取反 左移 右移 位运算的操作对象是整型或字符型数据,不能是实型数据 左移运算将将一个数的各位顺序左移若干位(高位移出不用,低 位添零) 表达式为

12、b=a4 赋值与复合赋值运算符 赋值运算符=把右边的表达式的值赋给左边 赋值的类型转换规则:在赋值运算中,当=两边类型不一致时, 系统自动将右边表达式的值转换成左边变量的类型。转换规则 如下: 1. 实型赋值给整型时,舍弃实数的小数部分; 2. 整型赋值给实型时,数值不变,但以浮点的形式存储。 3. 长数据赋值给短数据时,进行截断处理,保留低的,舍弃高位 4. 短数据赋值给长数据时,进行符号扩展,低位保持不变,高位 为符号位 复合赋值运算符有十个: += -= *= /= %= &= 如: a += b; a = a + b; x *= a + b; x = x * (a+b); a &= b

13、; a = a&b; a = 4; a = a4; |= = = C51 流程控制语句 C51是结构化程序设计语言,有三种基本结构: 顺序结构:一种最简单的编程结构,语句按先后顺序执行。 选择结构:根据给定的条件进行判断,由判断的结果决定执行 两支或多支程序中的一支。 循环结构:在给定条件为真时,反复执行某个程序段。 当型循环结构:先判断条件,真时执行,假退出 直到型循环结构:先执行,然后判断条件,真继续,假退出 流程控制语句:选择 if else (条件语句) switch case (多分支选择语句) goto (转向语句) 循环 while do while for 辅助控制语句: br

14、eak continue return 选择语句 即条件判断控制语句,对给定条件进行判断,根据结果决定执行 分支。C51中选择语句有if语句、switch case语句。 If 语句: If语句的嵌套:if (表达式) I型if语句: if (表达式) else if (表达式) II型if语句: if (表达式) else if (表达式) else else . 条件运算符:其一般形式 表达式1 ? 表达式2 : 表达式3; 唯一三目运算符 例如: max = ab? a: b; Switch语句 Switch语句是多分支选择语句,它的一般形式是: switch(表达式) case 常量表

15、达式1 :语句1; break; case 常量表达式2 :语句2; break; case 常量表达式n :语句n; break; default : 语句n+1; 说明:1. 表达式可以为任意类型 2. 常量表达式与表达式类型相同 3. 各常量表达式的值互不相同 4. 各个case出现的次序可以任意 5. 此语句的执行,先计算表达式的值,当它与某个常量相 等时,执行此case后面的语句,然后执行break语句,推出switch语 句。若表达式的值不与任何的常量表达式相等,则执行default后的 语句,然后推出switch,继续执行后面的语句。 6. 若没有break语句,则当与表达式相等的常量表达式后面的 语句执行完后,会继续执行后面的case语句,以及default 后面的语句,直到

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号