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

📄 key.c

📁 一个正在应用的步进电机控制程序,包括电机的调速,正反,细分,通讯控制
💻 C
字号:
#include <iom16v.h>
#include <macros.h>
#include <eeprom.h>
#include "delay.h"
#include "key.h"
#include "main.h"

extern unsigned char state;
extern unsigned char state0;
extern unsigned char state_other;
extern unsigned char key;
extern unsigned char state2;
extern unsigned char in_out_number;
/****************************************************
键盘初始化函数  
****************************************************/
void key_init(void)
{
SFIOR&=0b11111011;
}

/*外控初始化*/
void out_init(void)
{
PINA&=~((1<<EX_RS)|(1<<EX_ZF));
PORTA|=(1<<EX_RS)|(1<<EX_ZF);
PIND&=~(1<<EX_PULL);
PORTD|=(1<<EX_PULL);
}
/****************************************************
      键盘扫描函数,注意本函数不作按键释放检查					 
	  返回值:1、没有键按下返回0x7f
              2、如果shift按下,返回值最高位为1
              3、其余键按下时,返回键名对应数值
	  
****************************************************/
unsigned char scan_key(void)
{ 
unsigned char what_key;
what_key=0;
return what_key;						//返回按键值
}


void rs(void)
{
		   key=runstop_nu;
}

void zf(void)
{
		   key=cwccw_nu;
}

/*外控按键处理函数*/
void out_key(void)//abcd
{
unsigned char i;
unsigned char sta;
unsigned char sta0;
sta=state;
sta0=state0;	  

   //正反转	 
   if (in_out_number>=2)
       {
	   i=PINA; 
	   if ((i&(1<<EX_RS))==0)           //高电平
	      {
	      if (sta&(1<<RUN_STOP))	    //启停判断
		     {rs();}
	      }
       else   				   			//低电平
	      {
	      if ((sta&(1<<RUN_STOP))==0)	   		//启停判断
		     {rs();}
	      }  
	   i=PINA;   					    					   
       if ((i&(1<<EX_ZF))==0)           //高电平
	      {
	      if (sta&(1<<CW_CCW))	    //正反判断
		     {zf();}
	      }
       else   				   			//低电平
	      {
	      if ((sta&(1<<CW_CCW))==0)	   		//正反判断
		     {zf();}
	      }
	   } 
}

⌨️ 快捷键说明

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