收藏 分享(赏)

C++讲义第十一章.ppt

上传人:dwy79026 文档编号:8116188 上传时间:2019-06-09 格式:PPT 页数:18 大小:144.50KB
下载 相关 举报
C++讲义第十一章.ppt_第1页
第1页 / 共18页
C++讲义第十一章.ppt_第2页
第2页 / 共18页
C++讲义第十一章.ppt_第3页
第3页 / 共18页
C++讲义第十一章.ppt_第4页
第4页 / 共18页
C++讲义第十一章.ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、C程序设计实例教程 山东科技大学机电学院,1,第十一章 C语言在控制系统和嵌入式系统中的应用,了解:位运算的特殊应用掌握:位运算符的含义和使用方法重点:位运算符的含义难点:位运算符的使用方法,C程序设计实例教程 山东科技大学机电学院,2,下表是位操作的运算符注:位运算符的操作对象为整型或字符型数据。,C程序设计实例教程 山东科技大学机电学院,3,11.1 位运算符,一、“按位与”运算符(&) 1. 运算规则 参与运算的两数各对应的二进位相与(即逻辑乘),只有对应的两个二进位均为1时,结果位才为1,否则为0,它是双目运算符。 例如: a= 1 0 1 1 1 0 1 0 (十六进制为ba) b=

2、 0 1 1 0 1 1 1 0 (十六进制为6e) a&b= 0 0 1 0 1 0 1 0 (十六进制为2a) 2. 用途 (1)清零。按位与运算通常用来对某些位清0。 【例11.1】对原数00110110中为1的位清零。 原数补码: 0 0 1 1 0 1 1 0 清零的数: 1 1 0 0 0 0 0 0 (或01000000、00000000等),C程序设计实例教程 山东科技大学机电学院,4,9.2 文件类型指针,(2)取一个数的某些位。可将该数与一个特定数进行&运算,对于要取的那些位,特定数中相应的位设为1。【例11.2】把a的高八位清0,保留低八位。 (3)取出数中某一位。要想将

3、一个数的某一位保留下来,可将该数与一个特定数进行&运算,特定数的相对应的位应为1。 【例11.3】编写程序将a(=9)的最低位取出,C程序设计实例教程 山东科技大学机电学院,5,11.1 位运算符,二、“按位或”运算符(|) 1. 运算规则 运算符“|”将两边对应的二进制位分别进行“或”运算,即二者之中只要有一个为1时结果就为1,两者都为0时结果才为0。 例如: a = 1 0 0 1 1 0 1 0 (十六进制为9a) b = 0 1 0 1 0 1 1 0 (十六进制为56) a|b = 1 1 0 1 1 1 1 0 (十六进制为de) 2. 用途 (1)将一个数据的某些指定的位置为1。

4、【例11.4】将一个数的低5位置为1。 # # # # # # # # (#可代表0或1)0 0 0 1 1 1 1 1 | # # # 1 1 1 1 1,C程序设计实例教程 山东科技大学机电学院,6,11.1 位运算符,三、“按位异或”运算符() 1. 运算规则 按位异或运算符“ ”的作用是判断两个相应位的值是否“相异”(不同),若为异,则结果为1,否则为0。 例如: a = 1 0 0 1 1 0 1 0 (十六进制为9a) b = 0 1 0 1 0 1 1 0 (十六进制为56) ab = 1 1 0 0 1 1 0 0 (十六进制为cc) 2. 用途 (1)使特定位翻转。 【例11

5、.5】将01110001的低4 位翻转,高4位保留原值。0 1 1 1 0 0 0 10 0 0 0 1 1 1 1 0 1 1 1 1 1 1 0 (十进制126),C程序设计实例教程 山东科技大学机电学院,7,(2)使特定位保留原值。要使哪几位保留原值就将与其进行“按位异或”运算的数的相应位置为0。 (3)交换两个值,不用临时变量。,C程序设计实例教程 山东科技大学机电学院,8,11.1 位运算符,四、“求反”运算符() 1. 运算规则 对参与运算的数的各二进位按位求反,它是单目运算符,具有右结合性。即:0=1;1=0。 例如:0000000000001001 11111111111101

6、10 2. 用途 适当的使用可增加程序的移植性。,C程序设计实例教程 山东科技大学机电学院,9,11.1 位运算符,五、“左移”运算符() 1. 运算规则 把“”左边运算数的各二进位全部左移由“”右边的数指定的位数,高位丢弃,低位补0,它是双目运算符。 例如:a4指把a的各二进位向左移动4位。 a=00000011(十进制3) 左移4位后为00110000(十进制48) 2. 用途 左移1位相当于该数乘以2;左移n位相当于该数乘以2的n次方。,C程序设计实例教程 山东科技大学机电学院,10,11.1 位运算符,六、“右移”运算符() 1. 运算规则 “右移”运算符() 2. 用途 右移1位相当

7、于该数除以2;右移n位相当于该数除以2的n次方。 3. 说明 对于有符号数,在右移时,符号位将随同移动;当为正数时,最高位补0;而为负数时,符号位为1,最高位是补0还是补1取决于计算机系统的规定。,C程序设计实例教程 山东科技大学机电学院,11,11.1 位运算符,七、位复合赋值运算符 1. 分类 把“”左边运算数的各二进位全部左移由“”右边的数指定的位数,高位丢弃,低位补0,它是双目运算符。 例如:a4指把a的各二进位向左移动4位。 a=00000011(十进制3) 左移4位后为00110000(十进制48),C程序设计实例教程 山东科技大学机电学院,12,2. 运算过程 (1)先对两个操作

8、数进行位操作。 (2)再将结果赋予第一个操作数(因此第一个操作数必须是变量)。如:a表示a=a&2。,C程序设计实例教程 山东科技大学机电学院,13,11.2 嵌入式系统C语言编程实例,一、 C51热启动代码的编制【例11.7】根据以上的设计思路,编写程序并设置一个指针,让其指向特定的内存单元如0x7f,然后在程序中判断,程序如下: void main() char data *HotPoint=(char *)0x7f;if(*HotPoint=0xaa) /*冷启动的处理*/*正常工作代码*/ ,C程序设计实例教程 山东科技大学机电学院,14,二、直接调用EPROM中已固化的程序 如果用的

9、仿真机由6位数码管显示,在内存DE00H处放显示子程序,只要将要显示的数放入显示缓冲区,然后调用这个子程序就可以使用,汇编指令为:LCALL 0DEOOH。 C语言编程时,如何实现这一功能呢? void main() void (*DispBuffer)(); /*定义指向函数指针*/ DispBuffer=0xde00; /*赋值*/ for(;) Key(); DispBuffer(); ,C程序设计实例教程 山东科技大学机电学院,15,三、实例 【例11.8】让51单片机循环读p1.0口的值并把读到的值赋给P1.1口。/*-定义P1 (8 bits), P1.0, and P1.1.-*

10、/sfr P1 = 0x90; sbit P1_0 = P10; sbit P1_1 = P11; void main (void) P1_0 = 1; /* 定义P1.0口为输入口*/ /*-循环读P1.0口,并把读到的值赋给P1.1口。-*/ while (1)P1_1 = P1_0; /* P1.0口的值复制到P1.1口 */ ,C程序设计实例教程 山东科技大学机电学院,16,11.3 MCS51单片机的Keil C环境,一、Keil C简介Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,它的界面和VC+的界面相似,界面友好,易学易用,在调

11、试程序,软件仿真方面也有很强大的功能。 Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。,C程序设计实例教程 山东科技大学机电学院,17,【例11.9】利用超级终端不停的输出“Hello World! ”。#include #include void main(void) SCON = 0x50; /*串口方式1,允许接收*/ TMOD = 0x20; /*定时器1 定时方式2*/ TCON = 0x40; /*设定时器1 开始计数*/ TH1 = 0xE8; /*11.0592MHz 1200 波特率*/ TL1 = 0xE8; TI = 1; TR1 = 1; /*启动定时器*/ while(1) printf (“Hello World!n“); /*显示Hello World*/ ,C程序设计实例教程 山东科技大学机电学院,18,Keil C开发环境介绍 1、启动Vison 2、新建工程 3、保存 4、编辑 5、调式,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报