各位好,我想请教一下为什么同样的程序在不同的单片机xi...
时间:10-02
整理:3721RD
点击:
在这里补充问题:同样的程序在不同的单片机SST89E516RD(已录入仿真程序)和STC89C52的运行情况不 一样。
程序实现的功能:流水灯第一次从第一盏开始亮然后灭,第二盏亮。一直到最后,然后第二次从第二 盏开始,以此类推。
出现的问题:SST是可以实现我的意图的(PS:我是把它当仿真器一起用的,单步调试)。STC第一次可以,第二次后就开始乱套了。
程序:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit p3_3 = P3^3; //脭脻露篓碌脛路盲脙霉脝梅
void delay(uint z) //70 = 100ms
{
int x, y;
for(x=0;x<110;x++)
for(y=0;y<z;y++);
}
int main(void)
{
uint x, y;
uchar a;
while(1)
{
a = 0xfe;
for(x=0;x<8;x++)
{
for(y=0;y<8-x;y++)
{
P0 = a;
delay(210);
a = _crol_(a,1);
}
a = _crol_(a,x);
P0 = 0xff;
a = _crol_(a,1);
}
}
return 0;
}
程序实现的功能:流水灯第一次从第一盏开始亮然后灭,第二盏亮。一直到最后,然后第二次从第二 盏开始,以此类推。
出现的问题:SST是可以实现我的意图的(PS:我是把它当仿真器一起用的,单步调试)。STC第一次可以,第二次后就开始乱套了。
程序:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit p3_3 = P3^3; //脭脻露篓碌脛路盲脙霉脝梅
void delay(uint z) //70 = 100ms
{
int x, y;
for(x=0;x<110;x++)
for(y=0;y<z;y++);
}
int main(void)
{
uint x, y;
uchar a;
while(1)
{
a = 0xfe;
for(x=0;x<8;x++)
{
for(y=0;y<8-x;y++)
{
P0 = a;
delay(210);
a = _crol_(a,1);
}
a = _crol_(a,x);
P0 = 0xff;
a = _crol_(a,1);
}
}
return 0;
}
好复杂,不懂
应该没有多复杂吧。就是不知道为什么sst单片机可以做到(单步调试的方式),stc的单片机显示的效果却不是我想要的。同样的程序两种单片机的显示的效果不一样。
