中级会员
- 积分
- 309
- 威望
- 264
- 贡献
- 39
- 兑换币
- 18
- 注册时间
- 2010-1-14
- 在线时间
- 3 小时
|
while( get_ad( ) < 0X82 && get_ad( )> 0X7B );
/*******************************************************
找到后,给出平衡指示
*******************************************************/
Findbenlen( );
PORTC.2=0;
flage+=0x80;
CLI( );
LCD_write_str( 6 , 1 , "Balan:" );
flage+=0x04;
SEI( );
MBgo ;
MAback ;
OCR1AH=0x01;
OCR1AL =0xFF; //new
OCR1BH=0x01;
OCR1BL=0xFF;
startCPA ;
startCPB ;
delay_ms( 1000 );
find=1;
while(find)
{
if( PIND.2==1 )
find=0;
if(PIND.3==1)
find=0;
} ;
MBgo ;
MAgo;
}
unsigned char output( void )
{
if( vula_adc>=0X7D && vula_adc<=0X80 )
return 0;
if( vula_adc>=0X7C && vula_adc<=0X81 )
return 1 ;
if( vula_adc>=0X7B && vula_adc<=0X82 )
return 2 ;
if( vula_adc>=0X7A && vula_adc<=0X83)
return 3 ;
if( vula_adc>=0X79 && vula_adc<=0X84)
return 4 ;
if( vula_adc>=0X78 && vula_adc<=0X85)
return 5 ;
if( vula_adc>=0X77 && vula_adc<=0X86)
return 6 ;
if( vula_adc>=0X76 && vula_adc<=0X87)
return 7 ;
if( vula_adc>=0X75 && vula_adc<=0X88)
return 8 ;
if(vula_adc <=0X74 )
return 9;
if( vula_adc >= 0X89 )
return 10;
}
/**************************************************************************************************
平衡驱动控制函数
**************************************************************************************************/
void mortorgo( unsigned char high , unsigned char low, unsigned int go_time, unsigned int back_time )
{
OCR1AH=high;
OCR1AL = low; //new
OCR1BH=high;
OCR1BL= low;
if( vula_adc<0x7F)
{
MAgo;
MBgo;
}
else
{
MAback;
MBback;
}
startCPA ;
startCPB ;
delay_ms( go_time ) ;
stopCPA ;
stopCPB;
if( vula_adc<0x7F)
{
MAback;
MBback;
}
else
{
MAgo;
MBgo;
}
startCPA ;
startCPB ;
delay_ms( back_time ) ;
stopCPA ;
stopCPB;
}
void main ( void )
{
/*******************************************************
变量定义
*******************************************************/
unsigned char key;
unsigned char temp_key;
/********************************************************
初始化设备
*********************************************************/
Init_IO( );
// Init_T0( );
Init_T1( );
//Init_T2( );
Init_TWI( );
Init_device( ) ;
LCD_init( );
delay_ms( 10 );
LCD_clear( );
delay_ms(1);
MBgo ;
MAgo;
startCPA ;
startCPB ;
/********************************************************
模式选择
********************************************************/
do{
vula_adc = get_ad ( );
temp_key=vula_adc/16;
LCD_write_char( 1 , 0 , temp_key+'0' );
temp_key=vula_adc%16;
LCD_write_char( 2 , 0 , temp_key+'0' );
temp_key= vula_adc;
key = output( ) ;
switch ( output( ) ) {
case 0 :
stopCPA ;
stopCPB;
break;
case 1 :
mortorgo( 0x03,0xFF , 400, 350 ) ;
break;
case 2 :
mortorgo( 0x02,0xFF , 800, 700 ) ;
break;
case 3 :
mortorgo( 0x02,0xFF , 900, 800 ) ;
break;
case 4 :
mortorgo( 0x02,0xFF , 900, 700 ) ;
break;
case 5 :
mortorgo( 0x02,0xFF , 900, 650 ) ;
break;
case 6 :
mortorgo( 0x02,0xFF , 900,600 ) ;
break;
case 7 :
mortorgo( 0x02,0xFF , 1000, 700 ) ;
break;
case 8 :
mortorgo( 0x02,0xFF , 1000,600 ) ;
break;
case 9 :
MAgo;
MBgo;
OCR1AH=0x02;
OCR1AL = 0XFF; //new
OCR1BH=0x02;
OCR1BL= 0XFF;
startCPA ;
startCPB ;
break;
case 10:
MAback;
MBback;
OCR1AH=0x02;
OCR1AL = 0XFF; //new
OCR1BH=0x02;
OCR1BL= 0XFF;
startCPA ;
startCPB ;
default: LCD_clear();
LCD_write_char( 10 , 1 , 'E' );
break;
};
delay_ms(200);
}
while( 1 );
// SEI();
// TCCR2 = 0x00;
/*do
{
MBgo ;
MAgo;
startCPA ;
startCPB ;
delay_ms(500);
MBback ;
MAback;
delay_ms(500);
MBgo ;
MAgo;
}
while(1); */
} |
|