📄 init.c
字号:
pllx100(); /* change clk=100MHz */
switch(allmem)
{
case 0: /* check all mem ! */
case 1: /* only check PROGRAM 18000h */
memok=chk_prog18000();
if(memok == 1)
test_ret=1; /* prog 18000h is ok ! */
else
test_ret=-1; /* prog 18000h maybe error */
break;
case 2: /* only check PROGRAM 28000h */
memok=chk_prog28000();
if(memok == 1)
test_ret=1; /* prog 28000h is ok ! */
else
test_ret=-2; /* prog 28000h maybe error */
break;
case 3: /* only check DATA SRAM 8000h */
memok=chk_data8000();
if(memok == 1)
test_ret=1; /* data 8000h is ok ! */
else
test_ret=-3; /* data 8000h maybe error */
break;
default:
test_ret=0; /* return 0, not check the mem ! */
}
pllx10();
return(test_ret);
}
void test_DCmotor()
{ int i,j,k;
CtrlWord |= 0x1; /* make D0=1 */
port8000=CtrlWord; /* start DC MOTOR power */
i=lcd_printf(3,0,"摆动",1); /* wait for send end ! */
for(i=0;i<20;i++) /* right and left */
{
porte000=0;
mydelay();
porte000=1;
mydelay();
}
i=lcd_printf(3,2,"正转",1);
porte000=1; /* rotate + for 5s */
for(i=0;i<25;i++) /* delay about 5s */
mydelay();
i=lcd_printf(3,4,"反转",1);
porte000=0;
for(i=0;i<25;i++) /* rotate - for 5s */
mydelay();
for(i=0;i<4;i++)
{
porte000=0;
mydelay();
porte000=1;
mydelay();
}
i=lcd_printf(3,6,"慢转",1);
for(k=0;k<4;k++) /* rotate slowly */
for(i=0;i<1000;i++)
{ porte000=1;
for(j=0;j<5000;j++);
porte000=0;
for(j=0;j<1000;j++);
}
CtrlWord &= 0xfffe; /* make D0=0; */
port8000=CtrlWord;
}
void test_stepmotor()
{ int motor=0xf,i,j,k;
i=lcd_printf(3,1,"反转. ",1);
// portf000=1;
motor=1;
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
portf000=motor; /* send drive pluse to motor */
motor=motor<<1;
for(k=0;k<4;k++) /* delay */
mydelay();
if(motor == 0x10)
motor=1;
}
}
i=lcd_printf(3,5,"正转. ",1);
portf000=0;
motor=0x8;
for(i=0;i<5;i++)
{
for(j=0;j<11;j++)
{
portf000=motor; /* send drive pluse to motor */
motor=motor >> 1;
for(k=0;k<2;k++) /* delay */
mydelay();
if(motor == 0x0)
motor=0x8;
}
}
}
void test_led()
{ int led=0,i=0,j=0;
for(i=0;i<5;i++) /* all LEDs flash 5 times */
{
portc000=0;
mydelay();
portc000=0xffff;
mydelay();
}
for(j=0;j<5;j++) /* LEDs bright one by one */
{
portc000=0; /* shut down all led ! */
led=1;
for(i=0;i<16;i++)
{
portc000=led; /* bright one LED */
mydelay(); /* delay 0.5 s */
portc000=0;
led=led << 1;
}
}
for(i=0;i<5;i++) /* flash all again */
{
portc000=0;
mydelay();
portc000=0xffff;
mydelay();
}
portc000=0; /* close all LEDs */
}
void main()
{ int i,key;
/* pllx100(); */
init_start();
lcd_clr(1); /* clear LCD display */
for(i=0;i<5;i++)
{
led_printf("",1);
mydelay();
mydelay();
led_printf("85450520",1);
mydelay();
mydelay();
}
led_printf("",1);
mydelay(); /* give MCU time to end clearing LED */
/* i=lcd_printf(1,0,"1",1);
mydelay();
strcpy(buf,"1 ");
lcd_printf(2,0,buf,1);
*/
i=lcd_printf(1,0,"你好,银杏科技 !",1); /* wait for send end ! */
mydelay();
i=lcd_printf(2,0,"下面测试键盘:",1);
mydelay();
i=lcd_printf(3,0,"请依次按下所有键",1); /* wait for send end ! */
mydelay();
i=lcd_printf(4,0," ESC退出",1);
mydelay();
for(i=0;i<32;i++)
{
do{
key=get_key(1);
}while(key==0);
// mydelay1(); /* wait for MCU ... */
if(i==0)
{
lcd_clr(1); /* clear LCD display */
mydelay();
}
key_shown(key & 0xff);
if(IsQuitKey ==1 )
break;
}
for(i=0;i<2;i++)
mydelay();
lcd_clr(1); /* clear LCD display */
mydelay();
i=lcd_printf(1,0,"正在测试存储器,",1); /* wait for send end ! */
mydelay();
i=lcd_printf(2,0,"请稍候. . . ",1); /* wait for send end ! */
mydelay();
i=test_mem(1); /* test ext_sram ok? PROG-18000h */
/* if return=1, then ext_sram ok ! */
if(i == 1)
lcd_printf(2,0,"程序18000h..正确",1);
else
lcd_printf(2,0,"程序18000h..有错",1);
error_sound(i); /* if ok, one shot sound, then two long sound */
i=test_mem(2); /* test ext_sram ok? PROG-28000h */
/* if return=1, then ext_sram ok ! */
if(i == 1)
lcd_printf(3,0,"程序28000h..正确",1);
else
lcd_printf(3,0,"程序28000h..有错",1);
error_sound(i); /* if ok, one shot sound, then two long sound */
i=test_mem(3); /* test ext_sram ok ? data-8000h */
if(i == 1)
lcd_printf(4,0,"数据8000h...正确",1);
else
lcd_printf(4,0,"数据8000h...有错",1);
error_sound(i); /* if ok, one shot sound, then two long sound */
for(i=0;i<2;i++)
mydelay();
//goto test;
lcd_clr(1); /* clear LCD display */
mydelay();
i=lcd_printf(1,0,"正在测试直流电机",1); /* wait for send end ! */
mydelay();
i=lcd_printf(2,0,"请稍候. . . ",1); /* wait for send end ! */
mydelay();
test_DCmotor(); /* drive DC motor to run */
test:
lcd_clr(1); /* clear LCD display */
mydelay();
i=lcd_printf(1,0,"正在测试步进电机",1); /* wait for send end ! */
mydelay();
i=lcd_printf(2,0,"请稍候. . . ",1); /* wait for send end ! */
mydelay();
test_stepmotor(); /* drive stepmotor run */
lcd_clr(1); /* clear LCD display */
mydelay();
i=lcd_printf(1,0,"正在测试交通灯",1); /* wait for send end ! */
mydelay();
i=lcd_printf(2,0,"请稍候. . . ",1); /* wait for send end ! */
test_led(); /* flash the 16s led one by one */
i=lcd_printf(4,2,"测试完毕!",1); /* wait for send end ! */
while(1)
{
speak(1000,1);
for(i=0;i<20;i++)
mydelay();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -