#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit d1=P1^0;
uchar temp;
void delay(uint);
void main()
{
EA=1;
EX0=1;
temp=0xfe;
P1=temp;
while(1)
{
delay(1000);
temp=_crol_(temp,1);
P1=temp;
}
}
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=100;j>0;j--);
}
void exter0() interrupt 0
{
d1=0;
}
这是一个流水灯程序。第一,就是定义那个temp时,开始我是在主函数里面定义并同时赋值,结果编译通不过,改成如上程序后(就是主函数之前定义)译通过,为什么?二,这个程序有个中断,即p3.2接低电平后应该是P1.0一直低电平,而流水灯停止流动,但是我把它下载到单片机后,触发中断,单片机只是运行速度变慢了,即流水变慢而没有停止流水灯流动,怎么回事,程序错了吗?三,用proteus仿真则中断完全不起作用,好像根本没中断这回事,难道proteus不能仿真中断吗。求高手解释啊。
海绵宝宝撒
茅侃侃