一,按键控制数码管

1四按键控制程序(汇编)

(您的关注点赞是作者创作的最大动力哦)

//*******************************************************
//题目:独立四键控制事件(按键分为有锁存和无锁存)
//语言:汇编语言(51MCU)
//功能:任意独立按键控制(带扫描式的)
//优点:中间有20ms延时函数消抖;可以扩展任意个按键;可移植
//      含扫描按键所有操作;
//作者: 梦
//提醒: 记得点赞哦!!!!!
//转载要著名出处,原创不易!!!
//*******************************************************
K1 BIT P3.1
K2 BIT P3.0
K3 BIT P3.2
K4 BIT P3.4
LED EQU P2
KEY EQU P3
ORG 0000H
AJMP  MAIN
ORG 0030H
MAIN: MOV LED ,#0FFHMOV P0,#0FFHCLR RS1CLR RS0    //调用第0组寄存器
KLOOP:SETB K1    //先置高,再检测低SETB K2SETB K3SETB K4JB K1, KT1MOV  A, #11HACALL DELAY200MS  //消除抖动AJMP TRS1
KT1:JB K2, KT2MOV  A, #22HACALL DELAY200MS  //消除抖动AJMP TRS1
KT2:JB K3, KT3MOV  A, #44HACALL DELAY200MS  //消除抖动AJMP TRS1KT3:JB K1, KLOOPMOV  A, #88HACALL DELAY200MS  //消除抖动    TRS1:JB K1, KT1_TMOV  A, #11H;CPL A;MOV LED,A;JNB K1,$     //无锁存AJMP CONVERS_T
KT1_T:JB K2, KT2_TMOV  A, #22H;CPL A;MOV LED,A;JNB K2,$     //无锁存AJMP CONVERS_T
KT2_T:JB K3, KT3_TMOV  A, #44H;CPL A;MOV LED,A;JNB K3,$       //无锁存AJMP CONVERS_T
KT3_T:JB K4, KLOOPMOV  A, #88HCONVERS_T:;MOV A,#00H  //无锁存CPL AMOV LED,A
LJMP KLOOPDELAY200MS:   ;误差 0usSETB RS1SETB RS0  //调用第3组寄存器MOV R7,#43H
DL1:MOV R6,#8EH
DL0:MOV R5,#09HDJNZ R5,$DJNZ R6,DL0DJNZ R7,DL1CLR RS1CLR RS0    //调用第0组寄存器RET
END

2矩阵键盘(4X4)按键控制程序(汇编)控制led数码管1个

//*******************************************************
//题目:4X4矩阵键盘控制LED数码管(按键分为有锁存和(隔离的为)无锁存)
//语言:汇编语言(51MCU)
//功能:任意独立按键控制(带扫描式的)
//优点:中间有20ms延时函数消抖;两种扫描方式其中定时器扫描很大程度优化CPU;可移植
//      含扫描按键所有操作;
//矩阵键盘目前扫描方法:(1)程序扫描(本程序) (2)定时器扫描(本程序也有) (3)中断扫描(51中断固定不能实现)
//作者: 梦
//提醒: 记得点赞哦!!!!!
//转载要著名出处,原创不易!!!
//*******************************************************
KEY EQU  P1   //程序扫描 但由于大部分CPU在扫描键盘,当要显示两个数码管值显然做不到
LED EQU  P0  //按键控制一个数码管(数码管带锁存芯片)
KEY1 EQU P2.0
KEY4 EQU P2.4
ORG 0000HAJMP MAIN
ORG 0030H
MOV 30H,#00H
MOV 31H,#00H
ORG 0035H
MAIN:CLR   RS0CLR   RS1   //使用寄存器组0
START: MOV   KEY,  #11110000B    //矩阵键盘高四位通过电阻串联电阻,接高电平(初始化)MOV   A,  KEY      //读按键值, XRL   A,    #11110000BJNZ   KEY_ENA;CJNE A, #00H,KEY_ENA  //两种处理办法;AJMP STARTAJMP  START
KEY_ENA:ACALL DELAY200MSMOV   KEY,#11110000B    //矩阵键盘高四位通过电阻串联电阻,接高电平(初始化)MOV   A,KEY      //读按键值, XRL   A, #11110000BJNZ   KEY_ENB;CJNE A, #00H,KEY_ENB  //两种处理办法;AJMP STARTAJMP  START
KEY_ENB:
KEY111:     //扫描第一列MOV   KEY,#11101111B   //在第一列中如果按下那么低四位肯定有为0的JB    KEY.0,KEY5MOV   A, #1AJMP  CONVER
KEY5: MOV   KEY,#11101111B   //在第一列中如果按下那么低四位肯定有为0的JB    KEY.1,KEY9MOV   A, #5AJMP  CONVER
KEY9: MOV   KEY,#11101111B   //在第一列中如果按下那么低四位肯定有为0的JB    KEY.2,KEY13MOV   A, #9AJMP  CONVER
KEY13: MOV  KEY,#11101111B   //在第一列中如果按下那么低四位肯定有为0的JB    KEY.3,KEY22MOV   A, #13AJMP  CONVER
KEY22: MOV  KEY,#11011111B   //在第2列中如果按下那么低四位肯定有为0的JB    KEY.0,KEY6MOV   A, #2AJMP  CONVER
KEY6: MOV   KEY,#11011111B   //在第2列中如果按下那么低四位肯定有为0的JB    KEY.1,KEY10MOV   A, #6AJMP  CONVER
KEY10:MOV   KEY,#11011111B   //在第2列中如果按下那么低四位肯定有为0的JB    KEY.2,KEY14MOV   A, #10AJMP  CONVER
KEY14:MOV   KEY,#11011111B   //在第2列中如果按下那么低四位肯定有为0的JB    KEY.3,KEY33MOV   A, #14AJMP  CONVER
KEY33: MOV  KEY,#10111111B   //在第3列中如果按下那么低四位肯定有为0的JB    KEY.0,KEY7MOV   A, #3AJMP  CONVER
KEY7: MOV   KEY,#10111111B   //在第3列中如果按下那么低四位肯定有为0的JB    KEY.1,KEY11MOV   A, #7AJMP  CONVER
KEY11:MOV  KEY,#10111111B   //在第3列中如果按下那么低四位肯定有为0的JB    KEY.2,KEY15MOV   A, #11AJMP  CONVER
KEY15: MOV  KEY,#10111111B   //在第3列中如果按下那么低四位肯定有为0的JB    KEY.3,KEY44MOV   A, #15AJMP  CONVER
KEY44:MOV   KEY,#01111111B   //在第4列中如果按下那么低四位肯定有为0的JB    KEY.0,KEY8MOV   A, #4AJMP  CONVER
KEY8: MOV   KEY,#01111111B   //在第4列中如果按下那么低四位肯定有为0的JB    KEY.1,KEY12MOV   A, #8AJMP  CONVER
KEY12:MOV   KEY,#01111111B   //在第4列中如果按下那么低四位肯定有为0的JB    KEY.2,KEY16MOV   A, #12AJMP  CONVER
KEY16:MOV   KEY,#01111111B   //在第4列中如果按下那么低四位肯定有为0的JB    KEY.3,KEY_BACKMOV   A, #16AJMP  CONVER
KEY_BACK:  AJMP START
CONVER:  //一般都会吧二进制转10进制  就是把得到数据A(1-16)看成 个数MOV  B,#10DIV  ABMOV  30H,A//存储高位MOV  A,BMOV  31H,A//存储低位MOV  DPTR,#TABLE_CCMOV  A,31HMOVC A, @A+DPTRCLR   KEY1MOV   LED, A  AJMP START
TABLE_CC:DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f DELAY200MS:   ;误差 0usSETB RS0SETB RS1     //使用寄存器组3MOV R7,#43H
DL1:MOV R6,#8EH
DL0:MOV R5,#09HDJNZ R5,$DJNZ R6,DL0DJNZ R7,DL1CLR RS0CLR RS1     //使用寄存器组0RETEND

3矩阵键盘(4X4)汇编语言控制多个数码管,使用定时器扫描,数码管不带锁存芯片

//*******************************************************
//题目:4X4矩阵键盘控制LED数码管(按键分为有锁存和(隔离的为)无锁存)
//语言:汇编语言(51MCU)
//功能:任意独立按键控制(带扫描式的)
//优点:中间有20ms延时函数消抖;两种扫描方式其中定时器扫描很大程度优化CPU;可移植
//      含扫描按键所有操作;
//矩阵键盘目前扫描方法:(1)程序扫描(本程序也有) (2)定时器扫描(本程序) (3)中断扫描(51中断固定不能实现)
//作者: 梦
//提醒: 记得点赞哦!!!!!
//转载要著名出处,原创不易!!!
//*******************************************************
KEY   EQU   P1   //定时器扫描 设置定时时常,中断读键盘是否按下,按下得到输出标志,得到提示,然后在主函数提示扫描键盘
LED   EQU   P0  //其他时间显示键盘控制两个数码管(数码管不带锁存芯片)
LED1  EQU   P2.0
LED2  EQU   P2.4//KEY为矩阵键盘  LED1为数码管1公共端,LED2为数码管2公共端,LED为数码管(这里共阴)
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP INI_T0    //定时器中断
ORG 0030H
MOV 30H,#00H  //存高位
MOV 31H,#00H  //存低位
MOV 32H,#00H  //00表示没有键盘按下,01表示有键盘按下
ORG 0035H
MAIN:CLR RS0CLR RS1     //使用寄存器组0MOV   TMOD,#01HMOV   TH0,#0F0HMOV   TL0,#60HSETB  EASETB  ET0SETB  TR0//定时器初始化20MS扫描
//------------------------
DISPLAY:MOV   DPTR,#TABLE_CCMOV   R1,#30HMOV   A,@R1MOVC  A, @A+DPTRCLR   LED1SETB  LED2MOV   LED, A  ACALL DELAY1MS//ACALL  DELAY50US  //个位ms级别扫描稳定MOV   R1,#31HMOV   A,@R1MOVC  A, @A+DPTRCLR   LED2SETB  LED1MOV   LED, A  ACALL DELAY1MS// ACALL DELAY50USMOV   R1,#32HMOV   A,@R1CJNE  A,#01H,KEY_FIRST   //初次判断没有按键按下ACALL KEY_BOARD
KEY_FIRST:AJMP  DISPLAY//---------------------------------
INI_T0:MOV   KEY,  #11110000B    //矩阵键盘高四位通过电阻串联电阻,接高电平(初始化)MOV   A,  KEY            //读按键值, XRL   A,    #11110000BJNZ   KEY_EN00AJMP  initT0_END
KEY_EN00: MOV   R1,#32HMOV   @R1,#01H  //传递主函数标志
initT0_END:MOV   TH0,#0F0HMOV   TL0,#60HRETI//--------------------------
KEY_BOARD:ACALL   DELAY200MSMOV     KEY,#11110000B    //矩阵键盘高四位通过电阻串联电阻,接高电平(初始化)MOV     A,KEY      //读按键值, XRL     A, #11110000BJNZ     KEY_ENB;CJNE   A, #00H,KEY_ENB  //两种处理办法;AJMP   STARTAJMP    BACK   //-------
KEY_ENB:
KEY111:     //扫描第一列MOV      KEY,#11101111B   //在第一列中如果按下那么低四位肯定有为0的JB       KEY.0,KEY5MOV      A, #1AJMP     CONVER
KEY5:   MOV      KEY,#11101111B   //在第一列中如果按下那么低四位肯定有为0的JB       KEY.1,KEY9MOV      A, #5AJMP     CONVER
KEY9:   MOV      KEY,#11101111B   //在第一列中如果按下那么低四位肯定有为0的JB       KEY.2,KEY13MOV      A, #9AJMP     CONVER
KEY13:  MOV      KEY,#11101111B   //在第一列中如果按下那么低四位肯定有为0的JB       KEY.3,KEY22MOV      A, #13AJMP     CONVER
KEY22:  MOV      KEY,#11011111B   //在第2列中如果按下那么低四位肯定有为0的JB       KEY.0,KEY6MOV      A, #2AJMP     CONVER
KEY6:   MOV      KEY,#11011111B   //在第2列中如果按下那么低四位肯定有为0的JB       KEY.1,KEY10MOV      A, #6AJMP     CONVER
KEY10:  MOV      KEY,#11011111B   //在第2列中如果按下那么低四位肯定有为0的JB       KEY.2,KEY14MOV      A, #10AJMP      CONVER
KEY14:  MOV      KEY,#11011111B   //在第2列中如果按下那么低四位肯定有为0的JB       KEY.3,KEY33MOV      A, #14AJMP     CONVER
KEY33:  MOV      KEY,#10111111B   //在第3列中如果按下那么低四位肯定有为0的JB       KEY.0,KEY7MOV      A, #3AJMP     CONVER
KEY7:   MOV      KEY,#10111111B   //在第3列中如果按下那么低四位肯定有为0的JB       KEY.1,KEY11MOV      A, #7AJMP     CONVER
KEY11:  MOV      KEY,#10111111B   //在第3列中如果按下那么低四位肯定有为0的JB       KEY.2,KEY15MOV      A, #11AJMP     CONVER
KEY15:  MOV      KEY,#10111111B   //在第3列中如果按下那么低四位肯定有为0的JB       KEY.3,KEY44MOV      A, #15AJMP     CONVER
KEY44:  MOV      KEY,#01111111B   //在第4列中如果按下那么低四位肯定有为0的JB       KEY.0,KEY8MOV      A, #4AJMP     CONVER
KEY8:   MOV      KEY,#01111111B   //在第4列中如果按下那么低四位肯定有为0的JB       KEY.1,KEY12MOV      A, #8AJMP     CONVER
KEY12:  MOV      KEY,#01111111B   //在第4列中如果按下那么低四位肯定有为0的JB       KEY.2,KEY16MOV      A, #12AJMP     CONVER
KEY16:  MOV      KEY,#01111111B   //在第4列中如果按下那么低四位肯定有为0的JB       KEY.3,BACKMOV      A, #16AJMP     CONVER
KEY_BACK:  //AJMP START
CONVER:  //一般都会吧二进制转10进制  就是把得到数据A(1-16)看成 个数MOV     B,#10DIV     ABMOV     R1,#30HMOV     @R1, A//存储高位MOV     A,BMOV     R1,#31HMOV     @R1,A  //存储低位
BACK:     MOV    R1,#32HMOV    @R1,#00HRET
TABLE_CC:DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f //共阴(0-9)DELAY1MS:   ;误差 0usSETB RS0SETB RS1     //使用寄存器组3MOV R7,#01H
DL11:MOV R6,#8EH
DL00:MOV R5,#02HDJNZ R5,$DJNZ R6,DL00DJNZ R7,DL11CLR RS0CLR RS1     //使用寄存器组0   RET
DELAY200MS:   ;误差 0usSETB RS0SETB RS1     //使用寄存器组3MOV R7,#43H
DL1:MOV R6,#8EH
DL0:MOV R5,#09HDJNZ R5,$DJNZ R6,DL0DJNZ R7,DL1CLR RS0CLR RS1     //使用寄存器组0RET
DELAY50US:   ;误差 0usMOV R6,#01H
DL05:MOV R5,#16HDJNZ R5,$DJNZ R6,DL05RET
END

4效果图 (您的关注点赞是作者创作的最大动力哦)

二,UART通信

 基础知识:CPU与外界交换的信息称为通信。通信分为并行通信(速度快,连接复杂)和串行通信(速度相对慢)。

串行通信又分为异步通信(需要每发送一个字节要验证UART)和同步通信(无需校验位,只要时钟脉冲约定典型iic,spi)。

UART为全双工串口。                                                                                                                     

80C51串行口是一个可编程、全双工的串行口,它由两个独立的发送器和接收器构成,通过设置SCON、PCON这两个寄存器来控制串行口的工作方式和波特率。
发送器可以自动将CPU放入到发送缓冲器中的数据,完成并/串转换(以后的如果深学的化,有模拟iic通信,就有串并转换代码),从TXD(P3.1)引脚串行输出;接收器可以自动将数据从RXD(P3.0)引脚串行输入,完成串/并转换,送入接收缓冲器,由CPU取走。发送缓冲器与接收缓冲器,物理上是独立的,可由CPU直接访问。对于发送缓冲器来说,它只能写入而不能读出数据;对于接收缓冲器来说,它只能读出而不能写入数据,因此赋予两个缓冲器同一个名称(SBUF)和地址(99H)。CPU对SBUF执行写操作,就是将数据写入发送缓冲器;对SBUF执行读操作,就是读出接收缓冲器的内容。

1.串行口控制寄存器SCON和PCON

STC89C52系列单片机的串行口设有两个控制寄存器:串行控制寄存器SCON波特率选择特殊功能寄存器PCON

SCON :串行控制寄存器(可位寻址)

SMO/FE:当PCON寄存器中的SMODO/PCON.6位为1时,该位用于帧错误检测。当检测到一个无效停止位时,通过UART接收器设置该位。它必须由软件清零。
当PCON寄存器中的SMOD0/PCON.6位为0时,该位和SM1一起指定串行通信的工作方式,如下表所示。
其中SM0,SM1按下列组合确定串行口的工作方式:

当单片机工作在12T模式时,定时器1的溢出率=SYSclk/12/( 256-T HI);当单片机工作在6T模式时,定时器1的溢出率=SYSclk / 6/ ( 256-T HI)(注意SMOD为1为小分频,加倍效果)

(方式0又叫同步移位串行方式)

多机通

目录

一,按键控制数码管

1四按键控制程序(汇编)

(您的关注点赞是作者创作的最大动力哦)

2矩阵键盘(4X4)按键控制程序(汇编)控制led数码管1个

3矩阵键盘(4X4)汇编语言控制多个数码管,使用定时器扫描,数码管不带锁存芯片

4效果图 (您的关注点赞是作者创作的最大动力哦)

二,UART通信

1.串行口控制寄存器SCON和PCON

STC89C52系列单片机的串行口设有两个控制寄存器:串行控制寄存器SCON和波特率选择特殊功能寄存器PCON。 SCON :串行控制寄存器(可位寻址)​

电源控制寄存器PCON(不可位寻址)

波特率


信SM2功能

  • REN:接收允许位。由软件置位或复位。REN=0,则禁止串行口接收;若REN=1,则允许串行口接收。
  • TB8:发送数据的第9位,用于在方式2和方式3时存放发送数据的第9位。TB8由软件置位或复位。在方式0和方式1中,该位未使用。
  • RB8:接收数据的第9位。用于在方式2和方式3时存放接收数据的第9位。在方式1下,若SM2=0,则RB8用于存放接收到的停止位;对于方式0,该位未使用。
  • TI:发送中断请求标志位。用于指示一帧数据是否发送完。在方式0下,发送器发送完第8位数据时,TI由内部硬件自动置1,向主机请求中断,响应后软件清零;在其他方式下,TI在发送器开始发送停止位时置1。当TI=1时,向CPU请求中断,CPU响应中断后,必须由软件清零。
  • RI:接收中断请求标志位。用于指示一帧数据是否接收完。在方式0下,RI在接收器接收到第8位数据时由内部硬件自动置1向主机请求中断,响应后软件清零;在其他方式下,RI在接收器接收到停止位的中间时刻由内部硬件自动置1。当RI=1时,向CPU请求中断,CPU响应中断后,必须由软件清零。

电源控制寄存器PCON(不可位寻址)

(复位值为0,SMOD=1控制加倍 PCON.6前面已讲到)

波特率

在串行通信中,常用波特率表征数据传输的速度。波特率用每秒钟传送二进制数码的位数来表示,单位为位/秒(b/s)。例如:传送的速率为120字符/秒,而每个字符又包含10位(1位起始位,7位数据位,1位奇偶校验位,1位停止位),则波特率为:120字符/秒×10位/字符=1200位/秒在串行通信中,发送端与接收端必须按照约定的数据帧格式及比特率进行通信,这样才能成功地传输数据。异步通信的重要指标:字符帧格式和波特率

波特率因子

在波特率指定后,输入移位寄存器/输出移位寄存器在接收时钟/发送时钟控制下,按指定的波特率速度进行移位。一般几个时钟脉冲移位一次。要求:接收时钟/发送时钟是波特率的16、32或64倍。波特率因子就是发送/接收1个数据(1个数据位)所需要的时钟脉冲个数,其单位是个/位。如波特率因子为16,则16个时钟脉冲移位1次。 例:波特率=9600bps,波特率因子=32,则 接收时钟和发送时钟频率=9600×32=297200Hz。

51单片机按键扫描程序汇编程序(独立按键与矩阵按键)(使用定时器)(可移植的汇编程序)矩阵键盘控制两个led数码管(汇编语言)与UART通信总结(上)相关推荐

  1. 独立按键扫描程序的思考(整合两种算法)

    摘自:http://blog.csdn.net/xuechaojie/article/details/6761772 网上看到Etual 2008年总结的<新型按键扫描>的博文,很有感触. ...

  2. STC单片机按键扫描程序

    STC单片机按键扫描程序 最近在做一个电子秤相关项目,使用STC系列单片机作为主控芯片,项目第一阶段直接使用IAP15W4K58S4驱动两个矩阵键盘,一切调试顺利,在项目即将结束时老板要求使用另一块单 ...

  3. 新型的按键扫描程序,仅三行程序(amo)

    新型的按键扫描程序 不过我在网上游逛了很久,也看过不少源程序了,没有发现这种按键处理办法的踪迹,所以,我将他共享出来,和广大同僚们共勉.我非常坚信这种按键处理办法的便捷和高效,你可以移植到任何一种嵌入 ...

  4. 【按键】短按,长按,按键释放,三种模式的按键扫描程序(软件消抖动)

    先来说一下这三种模式的意思: 1. 短按模式:单击按键时,返回一次有效按键值:长按时也只返回一次有效按键值.这样可以有效地排除因不小心长按带来的返回多次有效按键,进而执行多次按键处理程序. 2. 长按 ...

  5. 原子哥的STM32视频,我发现他们都看不懂原子哥里面按键扫描程序

    近身边的很多同学都在学习原子哥的STM32视频,我发现他们都看不懂原子哥里面按键扫描程序.由于问的人多,所以我也写了个心得,分享一下,老鸟别喷我哈.先贴上代码吧: //返回值: //0,没有任何按键按 ...

  6. 51单片机+L298驱动步进电机+L297测速+LCD1602显示+按键调试+Proteus仿真

    51单片机+L298驱动步进电机+L297测速+LCD1602显示+按键调试+Proteus仿真 *Proteus仿真 L298N是双H桥式驱动器. L297是步进电机控制集成芯片(包括环形分配器), ...

  7. 【按键】短按,长按,按键释放,三种模式的按键扫描程序(软件消抖动)--- 矩阵键盘

    请先阅读上篇: 短按,长按,按键释放,三种模式的按键扫描程序(软件消抖动) 上面的程序适用于单个按键,那是不是也可以适用于矩阵键盘呢? 答案是肯定的. 接下来在这里做一个简单的扩展,具体框架不用改变, ...

  8. 《ESP8266学习笔记》之 采用定时器内的按键扫描方法,摒弃传统的延时按键消抖

    简介:传统的按键扫描程序,大部分都是采用 delay_ms(5); 这样的语句来进行按键消抖,但当你把它放在你高速运行的程序中时,这5ms可能会拖慢你的成语运行,导致体验感受下降,因此,我便找到了新的 ...

  9. 51单片机c语言程序执行顺序,51单片机程序执行流程详细分析

    这里是一个循环,根据DJNZ指令的功能:每执行一次DJNZ RO, IDATALOOP就将R0的值减1,若R0的值不为0则就跳到IDATALOOP地址去.很显然这是一个循环,那么RO的值是多少呢,在以 ...

最新文章

  1. joyui版本和android版本,JOYUI 11内测版正式推送,黑鲨游戏手机体验大幅升级
  2. python抓取html中特定的数据库,Python抓取网页中内容,正则分析后存入mysql数据库...
  3. P1855 榨取kkksc03
  4. 不同文件实现登录功能的数据驱动测试
  5. 云计算正在“抹杀”开源?
  6. 微信生成专属海报(专属二维码)
  7. 2016/03/30
  8. 3.30华为笔试第三题
  9. Head First 设计模式
  10. adb刷入第三方recovery_PE Plus类原生系统刷入教程(小白基础篇)
  11. linux工具消失了,输入法工具栏为什么不见了?
  12. 切身体验的优秀时间管理法——番茄时间工作法!
  13. MS Office/Visio 2003 sp1 下载
  14. vbs代码未结束的字符串常量
  15. [工具推荐]截图工具 -- snipaste
  16. html在抽奖图片自动效果图,jQuery实现图片随机切换、抽奖功能(实例代码)
  17. confluence 空间复制
  18. F-One融资B轮,企业绩效管理与分析服务再升级!
  19. Java小白修炼手册--第二阶段Java SE--IO流
  20. 谷歌cloud_Google Cloud如何为您的应用程序安全提供帮助?

热门文章

  1. SpringBoot项目中Druid自动登录
  2. 算法全集合概览 2020-11-20
  3. Spring Boot + flowable 完美结合,快速实现工作流
  4. 请叫我程序员 第1章
  5. DOM事件流(支持冒泡与不支持冒泡事件)
  6. Pytorch 深度学习实战教程:今天,你垃圾分类了吗?
  7. 社交媒体给照片打印服务带来了新形式
  8. 如何在移动端使用WebP图片格式
  9. 代码规范-对抗软件复杂度
  10. 电脑未同步iCloud钥匙串