#define uchar unsigned char

#define uint unsigned int

void main(void)

{

uchar a;

a=0x01;

a=a<<1;

}

在这段程序中,看起来没有什么问题,但是编译后不能生成代码本文引用地址:http://www.eepw.com.cn/article/201611/315811.htm

#include#define uchar unsigned char

#define uint unsigned int

void main(void)

{

volatile uchar a;

a=0x01;

a=a<<1;

}

改成这样后就能生成代码,但是生成的代码为

MOV 08H,#01H

MOV A,08H

ADD A,A

MOV 08H,A

这里我本来想象中应该有RL A这条指令的,但是没有。

当程序改成下面的时

#include#define uchar unsigned char

#define uint unsigned int

void main(void)

{

volatile uchar a;

a=0x01;

a=a<<2;

}

生成的代码是

MOV 08H,#01H

MOV A,08H

ADD A,A

ADD A,A

MOV 08H,A

改成a=a<<3;时

MOV 08H,#01H

MOV A,08H

RLC A

RLC A

RLC A

ANL A,#0F8

MOV 08H,A

这里有点搞不懂了,“<>”,到底是否带进位移动。

再来看看这个

#include#define uchar unsigned char

#define uint unsigned int

void main(void)

{

volatile uchar a;

a=0x01;

CY=1;

a=a>>1;

}

生成的代码是

MOV 08H,#01H

MOV A,08H

CLR C

RRC A

MOV 08H,A

从这里看来,“<>”应该是带进位的。但是不能把C里原来的值移进去。而且移到C里的数会丢掉,这里千万小心,例如a=0x80; a=a<<1;现在这里a=0x00了,1被移到C里丢掉。

再来看看_crol_和_cror_,这里要程序开头要包含#include#include#include#define uchar unsigned char

#define uint unsigned int

void main(void)

{

volatile uchar a;

a=0x01;

a=_crol_(a,1);

}

生成的代码为

MOV 08H,#01H

MOV R7,08H

MOV R0,#01H

MOV A,R7

INC R0

SJMP L1

L1:RL A

DJMZ R0,L1

MOV 08H,A

这里可以看出_crol_和_cror_是不带C移动的,_iror_和_irol_是一样的。

单片机c语言 右移,单片机C语言左移和右移漫谈相关推荐

  1. 单片机跑马灯程序c语言,MCS-51单片机控制跑马灯的三种方法

    描述 在MCS一51单片机的控制系统中,它的四个并行8位输入输出端口P0一P3是我们经常使用的.在并行端口的编程学习中,"跑马灯"是单片机并行端口输出控制的典型实例.所谓跑马灯,是 ...

  2. c语言位运算负数的实例_负数位运算的右移操作-C语言基础

    这一篇探讨的是"负数位运算的右移操作",涉及到数据的源码.反码.补码的转换操作.属于C语言基础篇. 先看例子 #include int main(void) { //正数的位右移 ...

  3. 【STM32】位操作、按位与、按位或、按位异或、取反、左移、右移等基础 C 语言知识补充

    文章目录 1 位操作 1.1 按位与 1.2 按位或 1.3 按位异或 1.4 取反 1.5 左移 1.6 右移 2 单片机中常用操作 2.1 不改变其他位时,对某几个位设定值 2.2 移位操作提高代 ...

  4. avr单片机流水灯程序c语言,AVR单片机学习C语言的流水灯验证

    AVR 的IO口简介与寄存器的概念 一.何谓"寄存器" 寄存器就是RAM中的一些特殊单元,映射片上外设的特殊功能 二.何谓"IO口" 可以将"0&qu ...

  5. c语言单片机求最小公倍数,单片机常用的14个C语言算法,要熟记在心哦!

    原标题:单片机常用的14个C语言算法,要熟记在心哦! 算法(Algorithm):计算机解题的基本思想方法和步骤. 算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么 ...

  6. 单片机c语言出租车计时程序,基于单片机出租车计价器课题设计c语言编写(样例3)...

    <基于单片机出租车计价器课题设计(c语言编写).doc>由会员分享,可免费在线阅读全文,更多与<基于单片机出租车计价器课题设计(c语言编写)>相关文档资源请在帮帮文库(www. ...

  7. 点亮第一盏灯的c语言编程,单片机点亮第一盏灯实验详细教程

    第一个实验:keil软件使用与点亮人生的第一只发光二极管 1.001.jpg (23.15 KB, 下载次数: 78) 2017-5-20 17:27 上传 本章详细介绍单片机程序常用编译软件 Kei ...

  8. 单片机发射红外c语言程序,单片机模拟红外发射源程序IR-send

    单片机模拟红外遥控器发射的C语言程序 //********************************************单片机红外发射**************************** ...

  9. 学单片机之前要学什么?C语言和单片机有什么关系?

    学习单片机之前要学什么?提起这个就想起我当年开始学习单片机的血泪史了. 08年我加入学校的电子实验室,为08年的全国电子大赛做准备. 08年的电子大赛分类3类,硬件设计类.单片机软件类.产品的调试动手 ...

  10. 学单片机需要多少C语言基础,C语言单片机编程教程

    很多学员和朋友经常找我给他们推荐C语言的书,他们可能想和我当年一样,闷头大干一场,学个几个月的C语言,把C语言吃透,再开始单片机程序开发! 别!别!别! 大家千万别这么干,我当年自学了3个月的C语言, ...

最新文章

  1. [PKUWC2018]随机算法
  2. 设计模式(2)工厂方法模式(Factory Method)
  3. 开源的Blink和Spark3.0,谁将称霸大数据领域?
  4. 数据库基础笔记(MySQL)5 —— 基础索引
  5. (AI、Artificial Intelligence)人工智能概述及分类
  6. 郑捷《机器学习算法原理与编程实践》学习笔记(第七章 预测技术与哲学)7.1 线性系统的预测...
  7. Python Numba实现GPU加速
  8. java元婴期(25)----java进阶(mybatis(4)---高级映射查询缓存)
  9. JWT(Json web token)认证详解
  10. java 饥饿现象,Java单例模式、饥饿模式代码实例
  11. 2021年衢州高考的成绩查询,2021年衢州高考状元是谁分数多少分,历年衢州高考状元名单...
  12. 2821: 作诗(Poetize)
  13. 一个带自动询问和保存功能的python下载图片的脚本
  14. java 正则表达式的包_用于Java包名称的Python正则表达式
  15. 远程部署SEP 11.RU5 安装包到 Windows 7 客户端提示“访问被拒”
  16. ZOJ 3983 2017CCPC秦皇岛 C:Crusaders Quest
  17. java视频教程免费下载
  18. 已知平面上两点坐标及半径,求过两点圆弧的圆心坐标
  19. 分类问题-决策树模型
  20. android客户端与pc服务器实现socket通信(wifi),Android客户端与PC服务器实现Socket通信(wifi)...

热门文章

  1. JAVA SAX解析XML文件
  2. 选项卡jacascript
  3. java 0xf0_用java做一个最小的操作系统内核
  4. 【面试】场景 智力题
  5. c语言语法sc,适合于嵌入式系统的C语言单元测试框架:SCUNIT
  6. 软件测试薪资标准新鲜出炉,你达标了吗?
  7. ❤️今天,该让 python 上个热门❤️
  8. 关闭自动降频 linux,在Deepin系统下CPU不能自主降频的两种解决方法
  9. 《Netty权威指南》第1章 Java的I/O演进之路
  10. linux打印显示etc中的文件,Linux命令之文件内容查看(cat、tac、nl、more、less、head、tail)...