微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 用户函数库之循环移动函数

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

时间:08-16 来源:互联网 点击:
////////////////////////////////////////   循环左移/右移函数//时   间: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 2unsigned 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;//返回数据 }//////////////////////////////////////////  可以自己建立一个函数库,存放自己经常用的函数。////////////////////////////////////////

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top