C51中 _crol_ 的使用问题

方式A:unsignedinttemp=0x01;voiddelay();while(1){delay();P1=temp;temp=_crol_(temp,1);}方式... 方式A:
unsigned int temp=0x01;
void delay();
while(1)
{
delay();
P1=temp;
temp=_crol_(temp,1);
}

方式B:
void delay();
while(1)
{
delay();
P1=_crol_(P1,1); // 没用中间变量,直接左移
}

A和B在C51中调试都没问题,打开P1口查看,都是左移
在Proteus中仿真时,A没问题,但B出现问题,P1口全是蓝色的低电平。
把8个LED全删掉,直接观察P1口,又发现红色的高电平能够左移循环。
怎么回事?怎么用方式B左移,P1口连上LED后就出问题了?
展开
 我来答
雨田丫
2013-05-31 · TA获得超过822个赞
知道小有建树答主
回答量:235
采纳率:100%
帮助的人:163万
展开全部
#include "reg51.h"
#include "intrins.h"
void delay(unsigned int i){
 while(i--);
}
void main(void){
 char i=0;
 P1=0xfe;
 while(1){
  delay(20000);
  P1=_crol_(P1,1); //    没用中间变量,直接左移
 }
}

一点没问题

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式