单片机中函数_crol_的功能是什么?源程序是怎样的?

单片机中函数_crol_的功能是什么?源程序是怎样的?,第1张

循环左移函数

#include <intrins.h>

void tst_crol (void) {

char a

char b

a = 0xA5

b = _crol_(a,3) /* b now is 0x2D */

}

你可以枯铅在你安装Keil的基败枯目录下找D:\Keil\C51\HLP内的C51lib.chm中搏洞有

 _crol_ 字符循环左移

_cror_ 字符循环右移闹差

_irol_ 整数循环左移

_iror_ 整数循环右移

_lrol_ 长整数循环左移

_lror_ 长整数循环右移

_nop_ 空 *** 作8051 NOP 指令

_testbit_ 测试并清零位8051 JBC 指令函数名: _crol_,_irol_,_lrol_

原 型: unsigned char _crol_(unsigned char val,unsigned char n)

unsigned int _irol_(unsigned int val,unsigned char n)

unsigned int _lrol_(unsigned int val,unsigned char n)

举例:

_crol_,_cror_:将char型变羡弯搏量循环向左(右)移动指兄祥定位数后返回

_testbit_: 相当于JBC bitvar测试该位变量并跳转同时清除。

_chkfloat_: 测试并返回源点数状态。

就是汇编中的子函数。

_crol_,_cror_:如果二进制数为01010101 那么_crol_(1) 左移1位后将高位补低位。

结果10101010。

功 能:_crol_,_irol_,_lrol_以位形式将val 左移n 位,该函数与8051“RLA”指令相关,上面几个函数不同于参数类型。

例:

#include <intrins.h>

main()

{

unsigned int y

C-5 1 程序设计 37

y=0x00ff

y=_irol_(y,4)

}

先发一个8 个灯的。

#include<reg52.h>

#include <intrins.h>

#define uint unsigned int

#define uchar unsigned char

uchar temp,num

void delay(uint)

void main()

{

temp=0xfe

while(1)

{

for(num=0num<8num++)

{

P1=temp

delay(100)

temp=_crol_(temp,1)

P1=0xff

delay(100)

}

}

}

void delay(uint z)

{

uint x,y

for(x=zx>0x--)

for(y=110y>0y--)

}

/****************************************************************************

再发一个10个灯的,不过函数中乱裂是IROL

*******************************************************************************/

_crol_不好实现,我用_irol_实现的。

//P2低卖闭两位,P1全部8位分别接LED,共十只LED

#include <reg51.h>

#include <intrins.h>

void delay(unsigned int z)

{

unsigned int x,y

for(x=zx>0x--)

for(y=110y>0y--)

}

main()

{

unsigned int j

unsigned char i

while(1)

{

j=0xfffe

for(i=0i<10i++)

{

P2=j/陪袜256

P1=j%256

delay(500)

j=_irol_(j,1)//整数循环左移

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8278947.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存