专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

用户函数库之循环移动函数

作者:佚名   来源:本站原创   点击数:  更新时间:2011年08月30日   【字体:
//////////////////////////////////////
//   循环左移/右移函数
//时   间:2011年8月29
//作   者:简の约
//说   明:用Keil软件调试成功!
//备注:
// -----
//  可以不用再包含#include <intrins.h>,而是用自己的函数
//版本:
// -----2011.08.29.0.1
///////////////////////////////////////

#include <reg52.h> //51系列单片机头文件,用于SFR的声明
#include <intrins.h>//引用_crol_();和_cror_();用到的声明

//函数声明
unsigned char Loop_Left(unsigned char Value,unsigned char num); //___0xAC 1010 1100 2
unsigned char Loop_Right(unsigned char Value,unsigned char num);//___0xAC 1010 1100 2

//主函数
void main(void)
{      
   unsigned char temp1,temp2;//声明两个变量,用于存放左移函数返回值
   unsigned char temp3,temp4;//声明两个变量,用于存放左移函数返回值 

   

  temp1 = Loop_Left(0xAC,2); //return: 0xB2
   temp2 = _crol_(0xAC,2);    //return: 0xB2

   temp3 = Loop_Right(0xAC,2);//return: 0x2B
   temp4 = _cror_(0xAC,2);    //return:0x2B

   

  while(1);//最后,停留在此处进行循环 
}
////////////////////////////////////////
// 循环左移函数
// 调用说明:Loop_Left(Value,num);Value:要循环的变量;num: 循环的次数
//  返 回 值:循环移动后的值
// 
////////////////////////////////////////
unsigned char Loop_Left(unsigned char Value,unsigned char num)//___0xAC 1010 1100 2
{
   unsigned char n = 0,temp = 0;
 
   n = num % 8;//大于8次,只循环其余数
 
   temp =  Value << n; //1010 1100 << 1011 0000
   Value = Value >> (8 - n);     // >>0000 0010

   temp = temp | Value;//合并数据  1011 0010 ___0xB2

 

  return temp;//返回数据
}
////////////////////////////////////////
// 循环右移函数
// 调用说明:Loop_Right(Value,num);Value:要循环的变量;num: 循环的次数
// 返 回 值:循环移动后的值
//  
////////////////////////////////////////
unsigned char Loop_Right(unsigned char Value,unsigned char num)//___0xAC 1010 1100 2
{
   unsigned char n = 0,temp = 0;

   

  n = num % 8;//大于8次,只循环其余数

     temp = Value >> n; //1010 1100 >> 0010 1011
     Value = Value << (8 - n);  //0000 0000

   temp = temp | Value;//合并数据:0010 1011 ___0x2B

 

  return temp;//返回数据 
}

////////////////////////////////////////

//  可以自己建立一个函数库,存放自己经常用的函数。

////////////////////////////////////////
关闭窗口

相关文章