c51循环移位的浅谈

发布者:uioo9158最新更新时间:2016-09-13 来源: eefocus关键字:c51  循环移位 手机看文章 扫描二维码
随时随地手机看文章
      如果学习单片机,最基本的考题就是流水灯了,呵呵,可是有时候一个很厉害的工程师,还真是不好弄出来,当然,我不是工程师,可是学习51单片机也有很长时间了,回想起当初学习51的时候,一直都是没有自己的核心的东西,今天就谈谈c51循环移位的见解

          记得如果你打开intrins.h(51自带的一个头文件),你会发现其中有关于定义_crol_()(字符循环左移函数)(一般我们用的多的是这个,呵呵),还有一个是_cror_()(字符循环右移函数)

         可是,如果你去面试的时候,这个时候,你难道还用它自带的循环函数么?当然不能了。真是的(有时候我们自己小组出的笔试题就是流水灯,可是我却紧锁眉头,感觉很是窝囊。咳,今天就把源程序写出来。)这时候就要用到你的c语言知识了,呵呵。

        假如说是共阴极数码管的话:

 程序可以这样(只写主要算法):

 

while(1)

{

         temp=0x01;         

         P1=temp;           

         delay(100);  //延时100ms

         for(i=1;i<8;i++)     

         {

                     temp=temp<<1;

                     P1=temp;

                     delay(100);

         }

}

 

 

可是假如是共阳极流水灯的话,就得写成这样,更好些:

while(1)

{

        temp=0xfe;         

         P1=temp;           

         delay(100);

         for(i=1;i<8;i++)     

         {

              P1=(temp<>(8-i);

              delay(100);

         }

}

看到没有,其中核心的一条语句就是  temp=temp<<1;P1=temp; 和P1=(temp<>(8-i);,其实第一个可以用第二个代替,不过对于共阴极的太过简单,直接写出来就行了,可是对于共阳极的话,就得思考思考了,先左移,然后和右移的数进行相或,这是相当经典的(8次)。呵呵,可能还有更经典的,以后有时间补充上,呵呵。

关键字:c51  循环移位 引用地址:c51循环移位的浅谈

上一篇:51单片机一些指令注意事项
下一篇:矩阵键盘加电子时钟(c51)

推荐阅读最新更新时间:2024-03-16 15:09

几种常用的模拟SPI读写一体化模块(C51)
说明: SPI接口有一个特点,即在时钟SCK的上升沿打入数据MOSI,在下降沿读入数据MISO. 片选信号CS有正负区别.在硬件上MOSI与MISO是可以短路变为SIO可读写IO的. 故SPI可为(不包括CS) 三线(SCK,MOSI,MISO)协议,两线(SCK,SIO)协议 再者,SPI一般为双向同时高速收发数据的,方向由时钟SCK的跳变沿决定。 根据以上所述,模拟SPI读写模块编制成为一体化模块是必要的。 而且调用规则只需注意读数据时要写入0xff即可。非常方便好用。 例如: res = SpiReadWrite(val);//模块写 SpiReadWrite(0xff);//模块读 对于具体器件,由于涉及到命令、地址及
[单片机]
小白自学c51笔记之独立按键
先上个单片机开发板上独立按键的图(我的有四个): 上述按键中23之间,14之间(即引脚之间距离长的)本来就是连通的,按下按键后1和2,3和4连通,如果想让按键连接两支路则可把两支路分别连到1,2或分别连到3,4(我觉得连到任两引脚都可)。 开发板原理图上独立按键模块: GND为接地即低电压,如果按键k1按下则接通相当于一条导线,那么对应的P3^1也为低电压。 抖动现象:一般持续时间为5ms~10ms 按下按键后 在程序中判断P3^1或其他三个口电压是否为低电压,即0时由于存在抖动,可能造成错误,所以要消除抖动。 为了消除抖动现象,有两种方法,一是硬件消抖,二是软件消抖。本质都是延时(这个本质是我自己方便理
[单片机]
小白自学<font color='red'>c51</font>笔记之独立按键
Keil c51指针变量
单片机c语言支持一般指针(Generic Pointer)和存储器指针(Memory_Specific Pointer)。 1. 1. 一般指针 一般指针的声明和使用均与标准C相同,不过同时还能说明指针的存储类型,例如: long * state;为一个指向long型整数的指针,而state本身则依存储模式存放。 char * xdata ptr;ptr为一个指向char数据的指针,而ptr本身放于外部RAM区,以上的long,char等指针指向的数据可存放于任何存储器中。 一般指针本身用3个字节存放,分别为存储器类型,高位偏移,低位偏移量。 2. 2. 存储器指针 基于存储器的指针说明时即指定了存贮类
[单片机]
C51 用一个外部中断0检测过零脉冲,并产生脉冲
用一个外部中断0检测过零脉冲,然后用一个定时器产生一个脉冲即可。 #include reg52.h #define uint unsigned int /*宏定义*/ #define uchar unsigned char /*宏定义*/ //#define Time_5ms (0x10000-5000) //fosc=12M #define Time_100us (0x10000-100) sbit P2_0=P2^0; uint Time_5ms=10000; void time_initial(); void main() { P2_0=0; time_initial(); while(
[单片机]
Proteus C51仿真学习板6——ADC
在将ADC之前,先聊聊其前因后果——由于计算机在自动控制、检测以及其他领域广泛应用数字电子技术,而大自然的信号全是模拟信号,如果通过计算机保存自然信号呢?那么就需要ADC(模数转换器Analog-Digital Converter)来讲模拟信号转换为数字信号,这样才能存储到计算机中。 那么ADC是如何转换的呢? 对选定一个瞬间对模拟信号进行采样; 将值转换为数字量; 按照一定编码格式转换。 一个模拟信号肯定是不能采样一个点的,而是许多点集合而成。当长方形又窄又长时几乎接近竖线时,就可以很好的还原之前的波形了。用官方的话说:抽样定理——若原图的最大频率是fmax,那么采样频率要比原图的最大频率2倍还要大,这样才能准
[单片机]
Proteus <font color='red'>C51</font>仿真学习板6——ADC
Keil C51​​​​​​​中函数指针使用注意事项
在C51 中,结构体成员采用函数指针后,发现main函数中局部变量的值被修改,开始以为堆栈溢出,后发现,单片机使用函数指针会使得调用树出错,在帮助文档中,搜索 function pointer 中,note 指明 Note: Because of the limited stack space of the 8051, the linker overlays function variables and arguments in memory. When you use a function pointer, the linker cannot correctly create a call tree for your p
[单片机]
C51单片机看门狗电路
采用89C51单片机和X25045组成的看门狗电路,X25045硬件连接图如图1所示。X25045芯片内包含有一个看门狗定时器,可通过软件预置系统的监控时间。在看门狗定时器预置的时间内若没有总线活动,则X25045将从RESET输出一个高电平信号,经过微分电路C2、R3输出一个正脉冲,使CPU复位。图1电路中,CPU的复位信号共有3个:上电复位(C1、R2),人工复位(S、R1、R2)和Watchdog复位(C2、R3),通过或门综合后加到RESET端。C2、R3的时间常数不必太大,有数百微秒即可,因为这时CPU的振荡器已经在工作。 看门狗定时器的预置时间是通过X25045的状态寄存器的相应位来设定的。如表1所示,X25
[单片机]
<font color='red'>C51</font>单片机看门狗电路
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved