我刚开始学习32位单片机的编程,mc68376.结果程序不能调用子程序,把子程序的代码写在main()函数里就可以执行.但却是重复执行.比如我想调用一个简单的通过PORTC点亮发光二极管的子程序:displayled()
unsigned int i;
void display(void);
void main(void) { //系统初始化开始,初始化CPU,外部rom,ram,片选 asm(" ORI.W #$2700,SR"); asm(" MOVEA.L #$111e00,A7\n"); SIMCR=0x60CF;
SYNCR=0x7F00; SYPCR=0xD0; CSBARBT=0x0003; CSBAR0=0x1003; CSBAR1=0x1003; CSPAR0=0x00FF; CSPAR1=0x0000; CSORBT=0x68B0; CSOR0=0x3830; CSOR1=0x5830;  ICR=0x0446; PITR=0x0052; PEPAR=0x00; DDRE=0x1F; PORTE0=0x00;  FPAR=0x00; DDRF=0x00; PORTF0=0x00; RAMBAH=0x0011; RAMBAL=0x0000; RAMMCR=0x0A00;//系统初始化结束
displayled();//调用显示子程序
while(1){}
}
void display(void)//通过PORTC口点亮4个发光二极管 {  ORTC=0x70; for(i=0;i<50000;i++) asm(" NOP ");  ORTC=0xff;
}
在程序里调用displayled()却不能让led点亮一段时间再熄灭,led一直是亮的.把子程序的代码直接写到main()却可以点亮一段时间.但是过几秒中又点亮一次,好像这段代码
 ORTC=0x70; for(i=0;i<50000;i++) asm(" NOP ");  ORTC=0xFF;
在重复执行.搞不明白这是什么原因?编译器是microtec toolkit for 68k
求大侠指教. |