新手流水灯疑问 为什么要设置临时变量temp 作用呢?
时间:10-02
整理:3721RD
点击:
#include<intrins.h>
#include<reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
void delay(uint a) ;
void main()
{
uint temp=0xfe;
P1=temp;
while(1)
{
temp=_crol_(temp,1);
P1=temp;
delay(255);
}
}
void delay(uint a )
{
uint i,j;
for(i=a;i>0;i--)
for(j=255;j>0;j--);
}
这是跑马灯程序没问题 我也明白 可是主函数为什么不能这么写
void main()
{
P1=0xfe;
while(1)
{
P1=_crol_(P1,1);
delay(255);
}
}
这样我在keil软件仿真的时候 单步观察 P1口的电平是可以循环左移的 但是为什么烧写进去流水灯智能执行一次不能反复循环呢
#include<reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
void delay(uint a) ;
void main()
{
uint temp=0xfe;
P1=temp;
while(1)
{
temp=_crol_(temp,1);
P1=temp;
delay(255);
}
}
void delay(uint a )
{
uint i,j;
for(i=a;i>0;i--)
for(j=255;j>0;j--);
}
这是跑马灯程序没问题 我也明白 可是主函数为什么不能这么写
void main()
{
P1=0xfe;
while(1)
{
P1=_crol_(P1,1);
delay(255);
}
}
这样我在keil软件仿真的时候 单步观察 P1口的电平是可以循环左移的 但是为什么烧写进去流水灯智能执行一次不能反复循环呢
自己顶
人呢
不能直接对p1口操作吧 额
可以
程序设计中不能以px为操作数
讲解得好
让temp=0xfe,然后操作temp左移,应该是这样
逻辑上两个程序都没问题,改成P2,P0,P3口后两个程序运行都正常,用过STC和AT的单片机结果一样。另外小编uint temp好像应该改为uchar型,_crol_()函数传递的是字符型
却是应该改成uchar型节省资源但是uint是16位的比uchar大 应该也没事的