我写的程序如下边,用proteus仿真正确,可烧到AT89c52里,在作出的板子上运行就是错误的,感觉代码可能有问题,请各位帮我看看有问题吗,(还有我的PROTEUS电路图怎么弄上去啊,图片不能用,点不开)
#include<reg52.h> //头文件
#include<intrins.h>
#include<absacc.h>
#define uint unsigned int //宏定义
#define uchar unsigned char
#define COM82551 XBYTE[0xffBf] //命令口地址
#define COM82552 XBYTE[0xff7f] //命令口地址
#define U3PA XBYTE[0xffBc] //U3A口地址
#define U3PB XBYTE[0xffBd] //U3B口地址
#define U3PC XBYTE[0xffBe] //U3C口地址
#define U4PA XBYTE[0xff73] //U4A口地址
#define U4PB XBYTE[0xff77] //U4B口地址
uchar temp,num;
void delay(uint z); //声明子函数
void main() //主函数
{
while(1) //大循环
{
num=0;
COM82551=0x80;
COM82552=0x80; //模式选择命令字 :全部输出
/*******分隔符 ^_^ *************/
temp=0x01;
U3PA=temp; //点亮U3A口第一个发光二极管
for(num=0;num<7;num++) //延时、移位循环,以下更改地址信息,重复
{
delay(50);
temp=_crol_(temp,1); //以为指令
U3PA=temp;
}
delay(50);
U3PA=0x00;
/*******分隔符 ^_^ *************/
temp=0x01;
U3PB=temp; //U3B口第一灯亮
for(num=0;num<7;num++)
{
delay(50);
temp=_crol_(temp,1);
U3PB=temp;
}
delay(50);
U3PB=0x00;
/*******分隔符 ^_^ *************/
temp=0x01;
U3PC=temp; //U3C口第一灯亮
for(num=0;num<7;num++)
{
delay(50);
temp=_crol_(temp,1);
U3PC=temp;
}
delay(50);
U3PC=0x00;
/*******分隔符 ^_^ *************/
temp=0x01;
U4PA= temp; //U4A口第一灯亮
for(num=0;num<7;num++)
{
delay(50);
temp=_crol_(temp,1);
U4PA=temp;
}
delay(50);
U4PA=0x00;
/*******分隔符 ^_^ *************/
temp=0x01;
U4PB= temp; //U4B口第一灯亮
for(num=0;num<7;num++)
{
delay(50);
temp=_crol_(temp,1);
U4PB=temp;
}
delay(50);
U4PB=0x00;
}
}
void delay(uint z) //延时子函数 z=1000时,延时约为一秒
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
|