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

📄 main.c

📁 uCOS-II在飞思卡尔AW60的移植程序包
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */


#include "includes.h"

#include "PCF8563.h"//一个未调试完成的实时时钟程序
#include  "i2c.h"


#define TASK_STK_SIZE  20



#define SDA    PTDD_PTDD2    //74LS164 SAD
#define SCK    PTGD_PTGD3    //74LS164 SCK

#define uchar unsigned char
#define uint  unsigned int


void Delay_ms(void); //显示扫描函数
void Time_display1(void);//正常显示时间函数
void Time_display2(void);//调试显示时间
void Delay_key(void);//键盘防抖动延时
void key_display(void);//键值显示函数
void Time_config(void);//时间调整


unsigned char key1=0; //键值数组
unsigned char key2=0;
unsigned char key3=0;
unsigned char key4=0;
unsigned char keyn=0; 
unsigned char keyn1=0;
unsigned char keyn2=0;
unsigned char keyn3=0;
unsigned char keyn4=0;
unsigned char keyn5=0;
unsigned char keyn6=0;
unsigned char keyn7=0;

unsigned char display_config=0;


unsigned char F=0;
unsigned char FF=1;
const uchar szdm[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xfe,0xff ,0xfd  }; /*共阳数码管0-9和全灭的16进制代码*/
                  // 0    1    2   3    4    5     6    7    8    9    点   全灭 中间横杠

TIME_T a={0,0,0,0,0,0,0};
TIME_T b={0,0,0,0,0,0,0};  
TIME_T * pp;

void data_config (void)  //数据交换,用于交换调整过的时间数据和8563时间
{ 
if(key4==4){
     a.ucDay=b.ucDay;
     a.ucHour=b.ucHour;
     a.ucMin=b.ucMin;
     a.ucMonth=b.ucMonth;
     a.ucSec=b.ucSec;
     a.ucWeek=b.ucWeek;
     a.ucYear=b.ucYear;
    
  
  } 
  else{
       b.ucDay=a.ucDay;
       b.ucHour=a.ucHour;
       b.ucMin=a.ucMin;
       b.ucMonth=a.ucMonth;
       b.ucSec=a.ucSec;
       b.ucWeek=a.ucWeek;
       b.ucYear=a.ucYear; 
     
    
    }
  }

unsigned char *buffer_pp;



static OS_STK	TASK_STK_SIZE1[TASK_STK_SIZE];

static OS_STK	TASK_STK_SIZE2[TASK_STK_SIZE];

static OS_STK	TASK_STK_SIZE3[TASK_STK_SIZE*10];

static OS_STK	TASK_STK_SIZE4[TASK_STK_SIZE];

char  Send_message[]="It My TRSK ID 4.\n\r\0"; 

 /*OS_STK *pstk;
 pstk=(OS_STK*)malloc(TASK_STK_SIZE);
 if(pstk!=(OS_STK*)0){
 Create the task;
 }  */// 动态产生任务分配堆栈空间,未成功
 
 
  
 void TestTask4(void *pdata)
{

  pdata=pdata;
  
 
  for(;;)
    {
    PTCD_PTCD4=1;
    buffer_pp=Send_message; 
    OSTimeDly(150);
     
    while(*buffer_pp!='\0') 
      { 
          
          while(SCI2S1_TC==0){
          };
          
          SCI2D=*buffer_pp;
          buffer_pp++;
         
      };
   PTCD_PTCD4=0; 
  }

}

 

void TestTask3(void *pdata)
{
  pdata=pdata;
  
  
    for(;;)
    {
      OSTimeDly(100);
      //StartClock();
       
       //WriteClock(&a);
       key_display();
      
       if(key1==1)
        {
          
          Time_config();
        
          if(key4==4)
          { 
            key1=0;
            key2=0;
            key3=0;
            data_config(); 
            WriteClock(&a);
            key4=0;
          
          };//清除键值,初始化键值,修改时钟数据           
        }//时钟为选,顺序为秒,分,时
              
       else 
       {
         if(F==0)ReadClock(&a);//CPU时钟定时器置标记,一秒钟读一次时钟
         if(F==0)F=1;
         Time_display1();
       }
      /* __RESET_WATCHDOG(); by default, COP is disabled with device init. When enabling, also reset the watchdog. */
  } /* loop forever */

  }





 
void TestTask2(void *pdata)
{
  pdata=pdata;
  
 
    for(;;)
    {
      OSTimeDly(50);
      PTED_PTED2=~PTED_PTED2;

  }

}


void TestTask(void *pdata)
{
  pdata=pdata;
  
  
 
    for(;;)
    {
      OSTimeDly(20);
      PTED_PTED2=~PTED_PTED2;

  }

}


void main(void)
{
  MCU_init()      ;
	OSInit();
	OSTaskCreate(TestTask,  (void*)0, (void*)&TASK_STK_SIZE1[TASK_STK_SIZE], 0);
	OSTaskCreate(TestTask2, (void*)0, (void*)&TASK_STK_SIZE2[TASK_STK_SIZE], 1);
	OSTaskCreate(TestTask3, (void*)0, (void*)&TASK_STK_SIZE3[TASK_STK_SIZE*5], 2);
	OSTaskCreate(TestTask4, (void*)0, (void*)&TASK_STK_SIZE4[TASK_STK_SIZE], 3);
	OSStart();
	
	}






void Time_config(void)   //按键时间设置
{ 
          switch(keyn) 
          { 
          
            case 1:
            
                   if(key2==2)
                   {
                     key2=0;
                     ++b.ucSec;
                     if(b.ucSec>=0b01100000)
                     {
                      b.ucSec=0;
                     }
                     if((b.ucSec&0b00001111)>0b00001001)
                     {
                      b.ucSec=b.ucSec+0b00010000;
                      b.ucSec=b.ucSec&0b11110000;
                     }
                    }
                   
                   if(key3==3)
                   {
                    key3=0;
                    --b.ucSec;
                   if(b.ucSec>=0b01100000)
                     {
                      b.ucSec=0;
                     } 
                    if((b.ucSec&0b00001111)>0b00001001)
                     {
                      b.ucSec=b.ucSec&0b11110000;
                      b.ucSec=b.ucSec|0b00001001;
                     }
                    };break; //位选择秒 
 
                   
            case 2:
                   if(key2==2){
                      key2=0;
                      ++b.ucMin;
                      if(b.ucMin>=0b01100000) 
                      {
                       b.ucMin=0;
                       }
                       if((b.ucMin&0b00001111)>0b00001001)
                      {
                      b.ucMin=b.ucMin+0b00010000;
                      b.ucMin=b.ucMin&0b11110000;
                     }
                    }
                    
                   if(key3==3)
                   {
                    key3=0;
                    --b.ucMin;
                   if(b.ucMin>=0b01100000)
                     {
                      b.ucMin=0b01011001;
                     } 
                    if((b.ucMin&0b00001111)>0b00001001)
                     {
                      b.ucMin=b.ucMin&0b11110000;
                      b.ucMin=b.ucMin|0b00001001;
                     }
                    
                   };break; //位选择分 
                    
            case 3:
                    if(key2==2)
                {
                      key2=0;
                      ++b.ucHour;
                      if(b.ucHour>=0b00100100) 
                        {
                          b.ucHour=0;
                        }
                      if((b.ucHour<=0b00100000)&((b.ucHour&0b00001111)>0b00001001)) 
                        {
                          b.ucHour=b.ucHour+0b00010000;
                          b.ucHour=b.ucHour&0b11110000;
                        }
                      if((b.ucHour>=0b00100000)&((b.ucHour&0b00001111)>0b00000100))
                        {
                             b.ucHour=0b00000000;
                            //b.ucHour=b.ucHour&0b11110000;
                          
                        }
                }
                    
                   if(key3==3)
                   {
                    key3=0;
                    --b.ucHour;
                    if(b.ucHour>=0b00100100)
                     {
                      b.ucHour=0b00100011;
                     }
                    if((b.ucHour>=0b00100000)&((b.ucHour&0b00001111)>0b00000100))
                      {
                          b.ucHour=(b.ucHour-0b00010000)&0b11110000;
                          b.ucHour=b.ucHour|0b00001001;
                       }
                    if((b.ucHour<0b00100000)&((b.ucHour&0b00001111)>0b00001001)) 
                      {
                      
                          b.ucHour=b.ucHour&0b11110000;
                          b.ucHour=b.ucHour|0b00001001;
                      }
                       
                                         
                    };break; //位选择小时 
            
            
            
            
            case 4:
                   if(key2==2)
                   {
                     key2=0;
                     ++b.ucDay;
                     if(b.ucDay>=0b00110001)
                     {
                      b.ucDay=0;
                     }
                     if((b.ucDay&0b00001111)>0b00001001)
                     {
                      b.ucDay=b.ucDay+0b00010000;
                      b.ucDay=b.ucDay&0b11110000;
                     }
                    }
                   
                   if(key3==3)
                   {
                    key3=0;
                    --b.ucDay;
                   if(b.ucDay>=0b00110001)
                     {
                      b.ucDay=0;
                     } 
                    if((b.ucDay&0b00001111)>0b00001001)
                     {
                      b.ucDay=b.ucDay&0b11110000;
                      b.ucDay=b.ucDay|0b00001001;
                     }
                    };break; //位选择日期
            
            
            
            
            
            case 5:
                   if(key2==2)
                    {
                      key2=0;
                      ++b.ucMonth;
                      if(b.ucMonth>=0b00010011) 
                        {
                          b.ucMonth=0;
                        }
                      
                      if((b.ucMonth<0b00010000)&((b.ucMonth&0b00001111)>0b00001001))
                        {
                            
                             b.ucMonth=0b00010000;
                                                       
                        }
                    }
                    
                   if(key3==3)
                   {
                    key3=0;
                    --b.ucMonth;
                    if(b.ucMonth>0b00010010)
                     {
                      b.ucMonth=0b00010010;
                     }
                    
                    if((b.ucMonth<0b00010000)&((b.ucMonth&0b00001111)>0b00001001)) 
                      {
                      
                          b.ucMonth=0b00001001;
                          
                      }
                             
                    };break; //位选择月 
            
                               
            case 6: 
                    if(key2==2)
                   {
                     key2=0;
                     ++b.ucYear;
                     if(b.ucYear>0b10011001)
                     {
                      b.ucYear=0;
                     }
                     if((b.ucYear&0b00001111)>0b00001001)
                     {
                      b.ucYear=b.ucYear+0b00010000;
                      b.ucYear=b.ucYear&0b11110000;
                     }
                    }
                   
                   if(key3==3)
                   {
                    key3=0;
                    --b.ucYear;
                   if(b.ucYear>0b10011001)
                     {
                      b.ucYear=0b10011001;
                     } 
                    
                    if((b.ucYear&0b00001111)>0b00001001)
                     {
                      b.ucYear=b.ucYear&0b11110000;
                      b.ucYear=b.ucYear|0b00001001;
                     }
                    };break; //位选择年 
            case 7:
                    if(key2==2)
                    { 
                      key2=0;
                      ++b.ucWeek;
                      if(b.ucWeek>=7)
                      {
                        b.ucWeek=0;
                      } 
                     }
                    if(key3==3)
                    {
                      key3=0;
                      --b.ucWeek;
                      if(b.ucWeek>=7)
                      {

⌨️ 快捷键说明

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