51单片机加入定时器的定义和中断后,手机APP与单片机只能连接几秒,问题出在哪里 80C

在原来的单片机代码中加入void TF0_isr() interrupt 1和在void InitUART(void)里定义了定时器 ET0=1;TH0=56320/256; L0=56320%256; TR0=1;后,拷到单片机里,手机APP连接WiFi建立链接后,几秒后断开链接,有时甚至无法建立链接。

是串口中断和定时器中断冲突了吗?
请问问题出在哪里,怎么解决

原来正常的情况:单片机和APP连接后,APP能控制LED1、2的亮灭,并显示LED等的状态

#include "DHT11.h"
#include
#include "string.h"
extern unsigned char F16T,F16RH; //温湿度数据
sbit LED1=P3^7;
sbit LED2=P3^6;
#define uchar unsigned char
#define uint unsigned int
unsigned char idata Rxbuff[50],Rxnum;
unsigned char Recwifi_data[5];
char *strx=0;
char clinetid;//连接ID
unsigned char getflag;//获取标志
void Get_Clinet(void);
void InitUART(void) //这是串口和定时器的基本配置,配置他的波特率是9600.这些参数都是标准的。
{

 TMOD|= 0x21;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;  //启动中断系统
ES = 1;
TR1 = 1;

ET0=1;//     定时器的定义 
TH0=56320/256;   //计数起点为56320 ==10ms溢出一次  
TL0=56320%256;  
TR0=1;

}
void Clear_Buffer(void)//清空缓存
{
int i;

//  for(i=0;i<50;i++)
//  Rxbuff[i]=0;//
    Rxnum=0;

}

/******************************************************************************/
void delayms(unsigned int x)
{
unsigned int i;
while(x--)
for(i=125;i>0;i--);
}
/*

  • UART 发送一字节 */ void UART_send_byte(char dat) { SBUF = dat; while (TI == 0); TI = 0; }

/*

  • UART 发送字符串 */ void Send_Str(unsigned char *buf) { while (*buf != '\0') { UART_send_byte(*buf++); } }

void ESP8266_SERVER(void)//服务器建立
{

Send_Str("AT\r\n");
delayms(500);
Send_Str("AT\r\n");
delayms(500);
Send_Str("AT\r\n");
delayms(500);
Send_Str("ATE0\r\n");     //关闭回显
delayms(500);
Send_Str("AT+CWSAP=\042ESP8266_001\042,\0421234567890\042,5,3\r\n");      //设置显示名称和密码
delayms(500);
Send_Str("AT+CIPMUX=1\r\n");//启动多连接,建立服务器都需要配置
delayms(500);   
Clear_Buffer(); 
Send_Str("AT+CIPSERVER=1,8888\r\n");//建立服务器
delayms(500);   
strx=strstr((const char*)Rxbuff,(const char*)"OK");//等待建立完成
while(strx==NULL)
{       Clear_Buffer(); 
        delayms(500);
        strx=strstr((const char*)Rxbuff,(const char*)"OK");//等待建立完成
}
Clear_Buffer(); 

}
void Get_Clinet(void)//判断是否获取到了客户端接入
{

   uchar i;

    strx=strstr((const char*)Rxbuff,(const char*)"CONNECT");//返回连接值
        if(strx)
    {
      Clear_Buffer();   
        getflag=1;
    }
    strx=strstr((const char*)Rxbuff,(const char*)"CLOSE");//返回断开连接
        if(strx)
    {
      Clear_Buffer();   
        getflag=0;
    }
    if(getflag)
    {
            strx=strstr((const char*)Rxbuff,(const char*)"+IPD");//有数据返回
          if(strx)//正常获取数据
             {
                 clinetid=strx[5];
                 strx=strstr((const char*)Rxbuff,(const char*)":");//有数据返回
                 for(i=0;i<2;i++)
                 Recwifi_data[i]=strx[1+i];       //获取手机对LED的控制
                  if( Recwifi_data[0]=='1'&&   Recwifi_data[1]=='0'     )//关灯
                  LED1=1;
                  else  if( Recwifi_data[0]=='1'&&   Recwifi_data[1]=='1'       )//开灯
                  LED1=0 ;
                  if( Recwifi_data[0]=='2'&&   Recwifi_data[1]=='0'     )//关灯
                  LED2=1;
                  else  if( Recwifi_data[0]=='2'&&   Recwifi_data[1]=='1'       )//开灯
                  LED2=0 ;  
                 Clear_Buffer();    
             }

}

}
void Send_DATA(uchar buffer)
{
uchar i;
Send_Str("AT+CIPSEND=0,7\r\n");
delayms(300);
Send_Str(buffer);//发送数据
delayms(100);
strx=strstr((const char
)Rxbuff,(const char*)"SEND OK");//返回OK
while(strx==NULL)
{
delayms(100);
strx=strstr((const char*)Rxbuff,(const char*)"SEND OK");//返回OK
}
strx=strstr((const char*)Rxbuff,(const char*)"+IPD");//有数据返回 ,顺便判断是否有数据返回
if(strx)//正常获取数据
{
clinetid=strx[5];
strx=strstr((const char*)Rxbuff,(const char*)":");//有数据返回
for(i=0;i<5;i++)
Recwifi_data[i]=strx[1+i]; //获取上位机设定的报警值
Clear_Buffer();

}
Clear_Buffer();

}
void main()
{
unsigned char Tx_Buf[10];
uchar i;
unsigned char LEDstatus;//灯的状态
delayms(500);
delayms(500);
delayms(1000); //延时一段时间,让WIFI模块稳定
InitUART(); //初始化串口
ESP8266_SERVER();
IP = 0x10;
// PS = 1;
// PT0=0; //初始化ESP8266
while(1)

{

Get_Clinet();
if(getflag)
{
getDHT11(); //获取温湿度值
Tx_Buf[0]='T'; //帧头
Tx_Buf[1]=F16T/10%10+0x30; //将温湿度数据送往发送数组,送给蓝牙模块让手机APP显示
Tx_Buf[2]=F16T%10+0x30;

Tx_Buf[3]=F16RH/10%10+0x30;
Tx_Buf[4]=F16RH%10+0x30;
LEDstatus=LED1;
Tx_Buf[5]=LEDstatus+0x30;//发送灯的状态
LEDstatus=LED2;
Tx_Buf[6]=LEDstatus+0x30;
Send_DATA(Tx_Buf) ;//发送数据

}
}

}

/*****************串口接收中断函数,接收蓝牙模块的数据*********************/
void UARTInterrupt(void) interrupt 4
{

if(RI)
{
ES=0;
RI = 0;
Rxbuff[Rxnum++]=SBUF;
if(Rxnum>=50)
Rxnum=0;
ES=1;
}

}

     void TF0_isr()  interrupt 1  //10ms 进入一次  

{

static int c1;

//执行一条指令12个周期,12/11.059M =1.08507us 10ms需要9216个周期
TH0=56320/256; //重装初值

TL0=56320%256;

    c1++;
    if(c1>400){
    LED1=0;
    }
    if(c1>600)
    {
     LED1=1;
     c1=0;
    }

}

0

2个回答

51单片机定时器0做波特率发生器时一般工作于模式2,自动装载初值,否则如果没有精确计算的中断填装就无法通信。
蓝牙或WiFi与手机的连接应该与串口通信无关,就算断开串口,也应该能连接手机,蓝牙或WiFi电压不稳会断开连接,你试试只对WiFi加电,不连接单片机能不能正常连接手机。

3

可能是访问越界导致,或者检查发送函数有没有可能会死循环

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
51单片机 通过蓝牙连接app 控制继电器开关(更新)
利用51单片机 手机APP连接蓝牙 发送指令 控制继电器开关 数量自己决定 控制的外设看自己创新(此贴为更新贴 原帖积分不够没资格删除)
用51单片机和esp8266实现通过手机app控制单片机小灯
这篇文章我在51黑电子论坛也发过,在这里再发一次。是自己在比赛的时候要使用这个esp8266模块,去查资料了解后,自己摸出来的方法。用51单片机和esp8266实现通过手机app控制单片机小灯,也可以控制其他外设,可以自行添加。附件为源程序,app可使用附件里面的安卓手机测试app或者ios系统可以去apple store下载netassist使用。设计目的:给所有客户提供一个标准全功能而又经济适...
STC系列51单片机用定时器判断按键程序
STC系列51单片机用定时器判断按键程序,采用矩阵式按键。供大家参考。
安卓与51单片机的蓝牙通信(安卓端)
之前看到网上的一些代码写得比较复杂,初学者看起来大概会很吃力,然后就有了这篇! //大概会比较好懂一点。 本篇只要是实现与51单片机的通信功能,所以我想要尽量的简化一下。话不多说上代码! //先是ui线程的部分 这部分主意是监听控件 蓝牙的连接需要单独写一个线程 //此部分代码只是截取 缺少的部分都可以脑补的出来。。 private Button connect; private Con
基于8266WIFI模块实现智能手机与51单片机的通信入门
1  芯片及电路的介绍 1.1  8266WIFI模块       在文章的最开始我们首先要介绍今天的主角,8266WIFI模块。这是一个非常好用的模块,其他的废话不在多说,我们直接上干货.                                             这是一张我从百度上盗的一张8266WIFI模块的原理图,虽然8个引脚看着很复杂,但实际上我们只会用到最多五个引脚...
单片机的定时器中断以及使用的一般步骤(51为例)
51单片机共有两个16位可编程的定时器/计数器,即定时器T0和定时器T1。它们既有定时功能又有计数功能,通过设置一些相关的特殊功能寄存器就可以选择启用哪一个功能。定时器系统是单片机内部一个独立硬件部分,与CPU和晶振之间通过内部某些控制线连接并相互作用,CPU一旦启动定时功能,定时器便会在晶振的作用下自动计时,当定时器计数器积满之后就会产生中断,通知CPU接下来做什么。 定时器或计数器实质是加一...
蓝牙模块HC-05与51单片机的连接
一.实验结果 手机安装HC-PDA-ANDROID.apk软件后,开启系统。手机打开蓝牙可以搜索到蓝牙芯片并可以连接,连接码为1234。系统开启后数码管全0,继电器低电平,LED灯不亮。 手机连接到系统后,扫描二维码,得到一串数字后,输入该串密码,得以解锁继电器。输入密码,支持断点续传密码,如本次输入“123”,再次输入“456”,即可完成输入“123456”。输入错误可以选择按键S5清空输入
51单片机自定义多个软件定时器
51单片机只有两个硬件定时/计数器,有时候我们要用多个定时器,可以自己写软件定时器,就可以有多个定时器用了,下面代码实现了四个定时器,实现四个LED以不同频率闪烁,为了验证定时效果,四个LED闪烁频率依次2倍关系,实际可以任意定义。 /*---------------------------------------------------- 名称:用定时器控制led亮灭 单片机:stc1
51单片机使用HC-05蓝牙模块与Android手机通信程序
程序完成了51单片机和手机的字符和数字通信,并有完整的注释,原理介绍可查看我的其他文章。
单片机在中断函数里定时器是否还计数问题
以stm32F103为例解释:如果初始化配置的是自动重装初值(寄存器TIMx->CR1中第三位默认为发生更新事件时计数器不停止,可软件置1更改为手动开启计数器),那么定时器溢出后(即进入中断后)就会立刻进行下一轮计数,不过如果中断标志没有清除,那么溢出后不会产生中断,直到清除上次中断标志产生本次中断。 总结:找到相应的寄存器配置查看或时序图。
51单片机功能模块学习笔记 — 定时器
一.定时器 1. 简介 C51中的定时器和计数器是同一个硬件电路支持的,通过寄存器配置不同,就可以将他当做定时器或者计数器使用。 确切的说,定时器和计数器区别是致使他们背后的计数存储器加1的信号不同。当配置为定时器使用时,每经过1个机器周期,计数存储器的值就加1。而当配置为计数器时,每来一个负跳变信号(信号从P3.4 或者P3.5引脚输入),就加1,以此达到计数的目的。   标准C51
51单片机和HC05蓝牙模块对接成功,但是数据收发时候发现数据很多时候对不上问题解决
最近用89c51单片机和HC05蓝牙模块进行了匹配和数据对接。 总体上匹配成功,数据也可以发送接收成功,但是发现一个奇怪的问题,有时候发送一个一字节的数据,低四位正常接收,高四位接受异常。 比如发送0x10 接受为0x30; 后来发现是晶振的问题,之前一直用卖方指定的12M晶振,后来发现用11.0295M晶振可以正常接受。 ---》波特率的问题,51单片机12M晶振9600的波特率误差高达
51单片机中断系统(定时器、计数器)
一、中断 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。 (*以上解释来自于百度百科-中断)   二、51单片机中断级别 中断号 优先级 中断源 中断入口地址 0 1(最高) INT0
关于51单片机中断标志的一个小问题
第一张图片: 第二张图片: 代码: #include sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; unsigned char code LedChar[]={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99
51单片机蓝牙串口调试源代码
51单片机蓝牙串口调试测试源代码, 非常适合初学者学习使用 //**** 声明 ******************************************************************** /******************************************************************************* * 下面来自互联开源程序,由广州汇承信息科技有限公司收集 * 方便用户参考学习,本公司不提供任何技术支持 * 程序仅供测试参考,不能应用在实际工程中,不一定能通过编译 * 公司网站 http://www.wavesen.com/ * 淘宝网址 http://shop61591214.taobao.com/ *******************************************************************************/ /******************************************************************** * 文件名 : 串口接收试验.c * 描述 : 该文件实现通过单片机从电脑接收数据。 该试验使用的晶振是11.0592 ***********************************************************************/
51单片机定时器中断函数中变量初始化的问题
51单片机定时器中断函数中变量初始化的问题 #include<reg51.h>//调用头文件 #define uint unsigned int //宏定义 #define uchar unsigned char uint n=0; //查表变量 uchar temp[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
51单片机的定时器延时计算
51单片机的定时器延时计算
51单片机计时器中断
单片机中,中断算是一个比较重要的部分,在51单片机中有八种中断方式 ,其中常用的的有五种,分别是外部中断0,计时器中断0,外部中断1,计时器中断1,和串口中断。今天主要介绍的是计时器中断。     51单片机给我们提供了2个计时器中断,分别是计时器0和计时器1,他们对应的优先级分别是1和3,开启计时器并允许其中断后,计时器会从给定的初始值开始,每个指令周期加1,直到加到65535,再加一时计时器
51单片机定时控制灯
让第一个小灯亮0.5秒,再熄灭0.5秒。 我们先随便写一个小灯闪烁的程序,以第一个小灯为例: #include sbit L1=P1^0; void main() { int a; while(1) { a=66666; L1=0; while(a--); a=66666; L1=1; while(a--); } } 那么怎么知道这个小灯亮了多长
51单片机 定时器及其应用
89c51单片机内部有两个16位的定时/计数器,即定时器T0和定时器T1,单片机的定时功能其实就是通过计数来实现的,当单片机每一个机器周期产生一个脉冲时,计数器就加一。定时器的应用涉及到中断方面的知识,可以先了解中断的概念再来看定时器 如,一个16位的定时器,它所能计数的范围是0~65535,如果单片机采用的是12M的晶振,那么定时器单次最长的时间为65535*((1/12)*12),因为一个一...
51单片机-定时器/计数器
定时器顾名思义就是设定一段时间,这段时间到了之后可以触发中断,在中断中处理我们的任务。定时器还有一个功能就是计数,每次一个出发定时器内部的TH.TL就会加一,如果加满了就会产生溢出中断。那如何控制定时器呢? 第一个是模式寄存器TMOD gate T/C M1 M0 gate T/C
STC12系列单片机的AUXR辅助寄存器
AUXR.0:S1BRS,如果为1那么串口1的波特率发生器为独立波特率发生器,否则为定时器1 AUXR.1:EXTRAM,为1则可以使用内部扩展RAM AUXR.2:BRTx12,为1则独立波特率发生器不分频,否则12分频。 AUXR.3:S2SMOD,为1串口2波特率加倍,否则不加倍 AUXR.4:BRTR,为1则允许独立波特率允许,否则不允许。 AUXR.5:UART_M0x6,为1则串口模式
20120801-51单片机定时器T0的使用1-中断法
/********************************************** 方法1:延时法 硬件:11.0592MHz晶振,STC89C52,RXD P1.0 TXD P1.1 波特率:9600 描述:T0用于定时,方式1,定时时间50ms,中断方式,定时时间到,TF1=1,利用模拟串口发送字符0x67 ********************************
51单片机 (6)串口中断通信+定时器2串口中断
51单片机默认使用定时器1作为串口通信的波特率发生器、定时器1中断通信,串口与定时器1冲突,在遇到定时器不够用的时候可以用定时器2
51单片机第二讲(定时器中断)
1.中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断产生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A中断的地方继续处理事件A(中断返回),这一过程称为中断。 2.中断的优先级 51单片机里一共有5个中断源,分别是外部中断0,定时器0,外部中断1,定时器1,串口中断,中断优先级从大到
手机连入NODEMCU控制单片机上的一盏灯
最近开始学习wifi8266这个模组,首先想到能不能与单片机连接使用,参考了一些网上的资料后便开始做了这个点亮单片机上的一盏灯实验。 硬件:nodemcu,单片机开发板,杜邦线; 软件:keil4,isp下载软件,AiThinker Serial Tool ,网络调试助手 思路  1.nodemcu建立成AP模式     2.手机连入nodemcu并发送数据,nodemcu发送回单片机,单片机识...
51单片机之定时器/计数器应用实例(方式0、1、2、3)
硬件:STC89C52RC 开发工具:Keil uVision4 对于刚接触单片机的同学来说可能会对定时器/计数器的应用很蒙圈,特别是初值的计算和各种定时方式的选择。下面希望能给你带来一个清晰的思路。 定时器:一般用于软件计时,给定时器设置一个时间,时间到了系统停止当前的工作跳转到事先定义好的定时器中断函数里,函数里可以做一些周期性的事情。 计数器:一般用于检测外来脉冲信号,给计数...
51单片机中断处理函数能否影响全局变量
在用keil4.60写51的定时器中断处理函数的时候,遇到了这么一个纠结的问题,就是我定义了一个全局变量temp,一旦触发定时器中断进入处理函数时将temp=123,在开中断前temp=888,我本用keil调试看看里边的变量变化情况的,无意中发现keil竟然显示不了全局变量,只能显示当前调用函数的局部变量,这样一来靠调试我是完全不知道全局变量的值变成了什么。上网查了一下,竟然有人说中断处理函数不
【转载】1个定时器多处复用的问题
本文转载自我心永恒《1个定时器多处复用的问题(原创)》  问题: 在一个工程中往往需要用到多个定时,然而我们采用的CPU一般也只有2,3个定时器。显然是不够用的,那么应该怎么办呢?        我想如果使用过系统的人都会知道,在系统中有个时钟节拍,而多个任务都是共同使用这个时钟节拍进行延时或任务切换。那么我们是否可以借鉴一下呢?   下面我们LPC21
C51单片机定时器/计数器中断功能详细分析(一)
我们首先需要了解什么是中断? 中断是指CPU在执行某一过程中由于外界原因必须暂停现在的事情,处理别的事情,处理完了再回去执行暂停的事情。 中断的优点? 1.分时操作。 2.实时响应 3.可靠性高 中断中用到的寄存器: 中断优先级寄存器IP 位序号 D7 D6 D5 D4 ...
基于51单片机计数器进行定时的记秒器
平台STC89C52    时钟晶振11.0592MHZ     软件keil4  代码如下: #include &amp;lt;reg52.h&amp;gt; #define uchar unsigned char #define uint unsigned int #define WEI1 P2=0xfe #define WEI2 P2=0xfd #define WEI3 P2=0xfb #define...
关于51单片机+ESP8266
前言:这个题目是我在单片机课程设计《基于ESP8266的物联电梯系统》中用到的,其实本质上就是实现了单片机对esp8266进行初始化,再将手机连上esp8266的WiFi,然后再通过手机端发送指令,esp8266接收到命令传入单片机,单片机再进行相应的操作。esp8266这种小型模块,在物联世界的发展中,有着强大的生命力,我本人比较喜欢它。同时这个也有相应的作品,程序也比较完整,希望能帮到大家。
51单片机C语言编程杂谈基础----全局变量和局部变量
&amp;lt;  博客宗旨:文章短,时间短,不考验耐力    &amp;gt; 我记着我在开始编写51单片机程序的时候,老是在思考一个问题:怎么把一个函数中的值传到另一个函数中去呢???让我痛不堪言。虽然简单,但是在那个时候我还是不知道的。   全局变量:就是在整个工程都可以使用的(概括说,当然需要引用extern 等关键字)。 局部变量:是在函数内有效。或者说是在  {   }  域内有效的变量。 ...
51单片机计数/定时器设置
51单片机内部一般有两个计数/定时器,T0 T1,其框图如下: 其中TH1 TL1用来设定T1的计数初值,TH0 TL0则用来设定T0的。 一、工作模式设置寄存器TMOD,地址为89H,格式如下图: 1、GATE——门控位             GATE = 0时,仅由运行控制位TRX(X = 0,1) = 1 来启动定时/计数器。             GATE = 1时,
51单片机DHT11温湿度检测手机蓝牙APP显示设计
今天给大家介绍的是一个温湿度检测设计,基于51单片机、蓝牙模块、温湿度传感器、Android APP完成。首先先展示一下设计好的实物,接下来将从系统方案、硬件设计、软件设计这三个方面来阐述。 1.系统方案 先来看一下整体的架构图:硬件部分由STC89C52单片机、DHT11温湿度传感器、BT08蓝牙串口模块和Android手机组成。传感器将采集到的温湿度数据传送给单片机,然后单片机...
51单片机定时器/计数器
1.基本概念:89C51有两个计数器T0和T1,每个计数器都是由两个8位的RAM 单元组成的,即每个计数器都是16 位的计数器,最大的计数容量是2的6次方=65536,记住是从0-65535。 定时器的本质也是计数器,只不过定时器的脉冲来自内部的晶振,而计数器的脉冲来时外部,当检测的脉冲的下降沿时,计数寄存器加一,直到溢出,然后单片机产生一个中断。所以需要定时时,先给计数寄存器设定一个初值,每有一个
手机蓝牙 连接HC05 控制单片机
手机端app:1、首先需要给app授权蓝牙权限:&amp;lt;uses-permission android:name=&quot;android.permission.BLUETOOTH_ADMIN&quot; /&amp;gt; &amp;lt;uses-permission android:name=&quot;android.permission.BLUETOOTH&quot; /&amp;gt;2、获取手机配对蓝牙的MAC地址ListView device...
51单片机定时器和波特率
1.引言: 在串行通信中,收发双方发送或接收的数据速率要有一定的约定,我们通过软件对MCS-51串行口编程可以约定四种工作方式。其中,方式0和方式2的波特率时固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率决定。 串行口的四种工作方式对应这三种波特率,由于输入的移位时钟的来源不同,所以各种方式的波特率的计算公式也不同。 2.各种方式的波特率介绍 工作方式0 方式0时,
51单片机定时器初值的计算
一、10MS定时器初值的计算:   1.晶振12M    12MHz除12为1MHz,也就是说一秒=1000000次机器周期。10ms=10000次 机器周期。   65536-10000=55536(d8f0)   TH0=0xd8,TL0=0xf0   2.晶振11.0592M    11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期
51单片机:利用定时器中断写一个简易加法计算器,按键消抖算法很好。
此加法计算器很简单,且有很多不完善的地方,但逻辑性很强 此函数主要分为两部分: 1、        主函数部分:主函数的作用主要是识别哪一个按键被按下,并且根据被按下的按键,执行相应的状态!比如按下等号键就把两次加数累加起来显示出来   首先主函数调用KeyDriver函数进行判断是否有按键被按下,并检测哪一个按键被按下, 然后接着调用KeyAction函数,判断哪一个按键被按下,并执行
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 如何在网页制作中加入视频 在哪里学python