⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_funcs.c

📁 ucos-ii-at90S-icc-avr
💻 C
字号:
#include "includes.h"

//*****************************************************************************
//			TickISR
//*****************************************************************************
// Init Timer/Counter2 fuer Takterzeugung
void TC2_Init (void){	
    TCCR0       = 0x05;                                 /* Set TIMER0 prescaler to CLK/1024                 */
    TIMSK       = 0x02;                                 /* Enable TIMER0 overflow interrupt                 */
    UBRR=25;//192,00
    UCR=0x18;//RXEN TXEN    
}

void task_Delay(void)
{
  unsigned char i,j,k;
  for(i=1;i<4;i++)
//    for(j=1;j;j++)
	{
	  OSTimeDly(30);
	  for(k=1;k;k++)
	  ;
	}
}

#if PROGRAM_START_FLASH_EN
void Delay(void)
{
  unsigned char i,j,k;
  for(i=1;i<10;i++)
    for(j=1;j;j++)
	{
	  for(k=1;k;k++)
	  ;
	}
}

void ProgramStart_Flash(INT8U v)
{
  DDRB=0xff;
  PORTB=v;  
  DDRD=0xff;
  PORTD=v;  
//  DDRA=0xff;  PORTA=v;  
//  DDRC=0xff;
//  PORTC=v;  
  Delay();
}

void ProgramStart(void)
{
  DDRA=0xff;  PORTA=0xff;  
  DDRC=0xff;  PORTC=0xff;  
  ProgramStart_Flash(0);
  ProgramStart_Flash(0xff);
  ProgramStart_Flash(0);
  ProgramStart_Flash(0xff);
  ProgramStart_Flash(0);
  ProgramStart_Flash(0xff);
}
#endif//PROGRAM_START_FLASH_EN

#if OS_STRICT
void OSError(INT8U err)
{
  INT8U i=err;
  while(1)
    i=err;
}
#endif

#if OS_SEM_EN
void my_putc(INT8U c)
{
#if LCD_EN
	lcd_putc(c);
#endif
	putchar(c);
}
#endif
/* PORTC , send 'T1'*/
void task1(void *pdata)
{
  INT8U i=0,err;
  while(1)
  {
     i++;
#if DEBUG_IN_AVR_STUDIO==0
     task_Delay();
#endif
     OSTimeDly(11);
#if OS_SEM_EN
     err=OS_NO_ERR;
     if(i>8)
     {
       i=0;
#if LCD_EN
       //clear lcd
       OSSemPend(&uart_sem,32700,&err);
       if(OS_NO_ERR==err)
       {
         lcd_clear();			
         OSSemPost(&uart_sem);
       }
#endif//LCD_EN
     }//end of clear lcd
     
     if((i>=0)&&(i<=9))
     {
       OSSemPend(&uart_sem,32700,&err);
       if(OS_NO_ERR==err)
       {
#if DEBUG_IN_AVR_STUDIO==0
         my_putc('T');my_putc((INT8U)(i+'0'));
		 //read answer
		 getchar();//should be 'R'
         DDRC=0xff;
         PORTC=getchar()-'0';//should between '0' and '9'		 
#endif
         OSSemPost(&uart_sem);
       }
     }//end i>=0 and i<=9
#endif
  }//while(1)
}

/* PORTA , send 'Q1'*/
void task2(void *pdata)
{
  INT8U i=0,j,k,err;
  while(1)
  {
     i++;
#if DEBUG_IN_AVR_STUDIO==0
     task_Delay();
#endif
     OSTimeDly(3);
#if OS_SEM_EN
     err=OS_NO_ERR;
     if(i>9)
     {//clear lcd and reset i
       i=1;
#if LCD_EN
       OSSemPend(&uart_sem,32700,&err);
       if(OS_NO_ERR==err)
       {
         lcd_clear();			
         OSSemPost(&uart_sem);
       }
#endif//LCD_EN
     }//end i>9	
     if((i>=0)&&(i<=9))
     {
       OSSemPend(&uart_sem,32700,&err);
       if(OS_NO_ERR==err)
       {
#if DEBUG_IN_AVR_STUDIO==0
         my_putc('Q'); my_putc((INT8U)(i+'0'));
         //read answer 
         getchar();//should be 'A'
		 DDRA=0xff;
         PORTA=getchar()-'0';//should be '0' to '9'
#endif
         OSSemPost(&uart_sem);
       }//end of send
     }//end i>=0 and i<=9
#endif
  }//end while(1)
}

void task3(void *pdata)
{
  while(1)
  {
    asm("nop");
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -