跑马灯的程序,程序很简单,编译也通过了,但用proteus搭建的仿真平台时,PORTJ口在
循环时,第一次循环正常,第二次循环只从PORTJ0到PORTJ3,然后再从PORTJ0循环到PORTJ7,如此这样循环。我找不出原因,刚刚开始自学PIC.在程序里每一步调试看值都是正常的。不知道为什么用proteus仿真时就不对了,现在确定不了是什么问题,望各位高手帮忙解答,谢了。
#include <pic18.h>
void delay()
{
int i;
for(i=0;i<30000;i++);
}
void main(void)
{
static char a=0;
TRISJ=0x00;
PORTJ=0X01;
while(1)
{
delay();
switch(a)
{
case 0:
{
// TRISJ=0x00;
PORTJ=0X01;
// RJ0=1;
a++;
break;
}
case 1:
{
// TRISJ=0x00;
PORTJ=0X02;
// RJ1=1;
a++;
break;
}
case 2:
{
// TRISJ=0x00;
PORTJ=0X04;
// RJ2=1;
a++;
break;
}
case 3:
{
// TRISJ=0x00;
PORTJ=0X08;
// RJ3=1;
a++;
break;
}
case 4:
{
// TRISJ=0x00;
PORTJ=0X10;
// RJ4=1;
a++;
break;
}
case 5:
{
// TRISJ=0x00;
PORTJ=0X20;
// RJ5=1;
a++;
break;
}
case 6:
{
// TRISJ=0x00;
PORTJ=0X40;
// RJ6=1;
a++;
break;
}
case 7:
{
// TRISJ=0x00;
PORTJ=0X80;
// RJ7=1;
if(7==a)a=0;
break;
}
}
}
} |