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

📄 mytask.c

📁 时间触发式单片机最小系统
💻 C
字号:
/*----------------------------------------------*-
 Mytask.c
 create my own task
-*----------------------------------------------*/
#include"main.h"
#include"mytask.h"

#define state1 0x01
#define state2 0x02

uchar state;
bit key0_pressed_flag=0;
bit key1_pressed_flag=0; 
bit key2_pressed_flag=0; 
bit key3_pressed_flag=0;
uint data timeout = 0x5000;
uchar  erect_measure_count=0;
   
void Mytask_Init(void)   
{   
 P3=0xff;                      
 state=state1;   
}                                    
void key_scan(void)                          //利用 state machine 进行键盘扫描
{    
  switch(state)
     {
     case state1:
        if(!key0||!key1||!key2||!key3)                               //低电平时表示被按下   
          state=state2;  

     case state2:
        if(!key0)
          {
           while(key0==0 && --timeout)
           key0_pressed_flag=1;
          }
        else if(!key1)
          {
           while(key1==0 && --timeout)

           key1_pressed_flag=1;
          }
        else if(!key2)
          {
           while(key2==0 && --timeout)
           key2_pressed_flag=1;
          }
        else if(!key3)
          {
           while(key3==0 && --timeout)
           key3_pressed_flag=1;
          }
           state=state1;
         break;
     }
}


void Mytask(void)
  {
    if(key0_pressed_flag)
     {
       measure_modify=0;
       delay4us();
       measure_modify=1;
       delay4us();
       state=state1;
       key0_pressed_flag=0;
     }
    else if(key1_pressed_flag)
     {
       erect_measure_count++;        //通过变量的自加来达到模拟开关计数的目的
           if(erect_measure_count==4)    
              erect_measure_count=0;
            switch(erect_measure_count)
               {
                 case 0: 
                   P12=1;
                   delay4us();
                   P12=0;
                   switch_modify0=0;
				   delay1us();
                   switch_modify1=0;
				   delay1us();
                   break;
                 case 1:
                   P12=1;
                   delay4us();
                   P12=0;
                   switch_modify0=0;
				   delay1us();
                   switch_modify1=1;
				   delay1us();
                   break;
                 case 2:
                   P12=1;
                   delay4us();
                   P12=0;
                   switch_modify0=1;
				   delay1us();
                   switch_modify1=0;
				   delay1us();
                   break;
                 case 3:
                   P12=1;
                   delay4us();
                   P12=0;
                   switch_modify0=1;
				   delay1us();
                   switch_modify1=1;
				   delay1us();
                   break;
               }
        key1_pressed_flag=0;
      }
   }
       

⌨️ 快捷键说明

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