找回密码
 注册
关于网站域名变更的通知
查看: 657|回复: 2
打印 上一主题 下一主题

单片机实用按键模块,没有延时语句、while()语句,资源占用小。可以直接复制使用与...

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-7-13 14:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
使用时只需要直接引用全局变量key1和key2就可以。举例:& M* b  k) h* M* j3 \1 M  N. @7 {
1、k1按键按下LED1亮,再次按下LED1灭,8 F# w- {3 Q3 b. h; }5 n
if(key1==1)        //k1按键按下
2 B: r  w" t4 g# E! j* g" ~{
3 Y7 q& c9 W7 D, w4 n& T- D# e, |   key1=0;//必须软件清零!!!* {8 W8 S& j4 N% _& W: u# u
   LED1=~LED1;8 U! e' y) F/ ?% D5 g  Q6 H5 T
}
! w8 c, j6 f$ D3 X% _: E8 F. b" T+ s+ @/ x3 M* X1 k3 U! u& B
2、k2按键按下LED1亮,K2长按LED1灭,$ @) m: C( g& ]3 Z5 ?8 t  k6 W9 ?
if(key1==2) //k2按键按下9 X' L6 P0 H% L4 Z* K& I
{% }) @/ J% h/ `) Z  B* l  B' a
   key1=0;//必须软件清零!!!
- j0 J& ~2 b! _! i: J3 w) e+ r   LED1=0; //0开1关+ R3 ]: ?8 f% X6 I/ C' B9 V
}+ a% \9 q* v. v8 D* V/ j. w
if(key1==20) //k按键长按8 u7 m9 d. X0 o# [, ^; w
{
2 m1 H0 ?$ G) |) P& c7 j8 Y   key1=0;//必须软件清零!!!
# ^3 [; Z; j( r5 B5 c: r) |   LED1=1; //0开1关. M8 x# K7 Q* ~  @; F
}) L: x. U. d! l! ~& `; f
$ Z" n" g2 t. q5 T4 M# Y
3、k3按键按下LED1亮,K4按下LED1灭,' t, C& I6 P% k' a
if(key1==3) //k3按键按下
4 m, j# ~3 F2 K( W: s5 U{
6 J) r' j4 [3 {, K4 n( P. L   key1=0;//必须软件清零!!!0 e' s" `( i( \+ ?5 y
   LED1=0; //0开1关
$ ^3 r1 k) R# I" p+ D# r}1 @7 f2 P8 u9 p3 E! ~* P4 o
if(key1==4) //k4按键按下
* g, ?. {( z/ A. x4 o6 t{6 j) U  d- E- ?1 s( D& ]
   key1=0;//必须软件清零!!!1 r4 c% J& L3 p; a5 O  u# p1 H
   LED1=1; //0开1关
4 i/ l  c: s, N8 z+ w( a}4 G2 P3 m2 D; P/ A

' ~9 C6 c  z# x4、K3按下一次,数据m 增加1,长按k3两秒以上每隔500ms数据m 增加10;K4按下一次,数据m 减少1,长按k4两秒以上每隔500ms数据m 减少10;
7 K8 z9 V" ~  mif(key1==3) //k3按键按下! [7 u* r7 q. D' `( Y, H  W
{
  c4 E( f- s9 N   key1=0;//必须软件复位
0 ^+ ]1 g& a5 [" F+ U   m++; //数据m 增加1
: e% a3 e! w8 c+ H) E- c) T  x}
( `8 `2 l* K; P- ]- V/ Aif(key2==3) //k3按键按下两秒以上,注意key2不需要清零,key1必须清零!!!' X% C. j2 _" e7 z  k2 \
{
6 g* F1 W. d. v/ I   if(ms1>2000&&ms1%500==0) m=m+10; //长按k3两秒以上每隔500ms数据m 增加10,ms1是毫秒变量,需要放在定时器1ms中断中自加,ms1++;' r1 ^3 q$ G. s4 h; r; R" i
}
6 i  b3 q3 w0 W( ~( ?0 @else ms1=0;        //复位
; E2 j1 o0 p/ I) ~( Z# z6 N8 s3 ]# z5 i  T. ~0 i8 W, u
if(key1==4) //k4按键按下$ S3 ?. q; r# L, W# V1 W; t$ q2 l9 u- M
{0 k# _" `6 c/ a9 _
   key1=0;//必须软件复位
8 N2 J* u% Y1 ~. D) K( R   m--; //数据m -1# i. O4 h  _$ J% b8 K
}
! O6 Y0 g% [/ j; yif(key2==4) //k4按键按下两秒以上 ,注意key2不需要清零,key1必须清零!!!
1 g; m1 I9 J" S4 |* |" ]{  f  ~# K" S7 N, W3 Q
   if(ms2>2000&&ms2%500==0)  m=m-10; //长按k4两秒以上每隔500ms,ms2是毫秒变量,需要放在定时器1ms中断中自加,ms2++;
2 {: S" R+ `' G4 T5 b}
+ c# I/ X8 n# A  telse ms2=0;//复位$ a( a! g6 Z! E& A9 w8 q6 J
4 Y. \6 t$ @7 k1 p  T
//下面是完整程序代码:
! `1 f/ |/ z6 M6 ]: d% R9 r6 C3 |#include "stc8.h"
6 B& w  `+ e& B: b3 R; H" E#include "intrins.h"' \3 J. c2 E" }0 H1 ?( Q. p! e6 l( y
#define u8  unsigned char# B) a, v3 u+ K
#define u16 unsigned int$ k: [5 t  e7 S0 `
sbit k1=P0^0;//按键1,四个按键可以是任意I/O口。按键按下时k1=0,按键释放k1=1
  H! ~" L+ p. B0 J% u: Qsbit k2=P0^1;//按键2) q" X8 P: P$ [; A1 q: M
sbit k1=P0^2;//按键3
8 g4 r" }# b7 x* W4 y) Tsbit k1=P0^3;//按键4
( p8 i+ ^5 H7 e2 qsbit LED1=P1^0;//LED1* R/ i5 T& \7 e  F

# a* n4 i/ a. w7 S//u8 key1[4];//按键变量数组,4个按键互不影响,如果用key1,一次只能够按一个按键,不允许同时按键。
7 d5 o: L) I! A$ }7 ku8 key1;//按键变量1,输出按键单击,长按。每单击或长按一次只输出一次,由调用函数清零。//key1=1/2/3/4是对应的按键单击,key1=10、20、30、40是对应的按键长按。key1=0表示没有按键按下。! j5 e  a. O3 o4 x; ]" P' w
//key1主要用途是:判断某一个按键是单击还是长按.注意调用函数需要将key1清零!!!
5 X" F1 c6 ~' l/ e6 f( P+ K5 U//u8 key2[4];//按键变量数组,4个按键互不影响,如果用key2,一次只能够按一个按键,不允许同时按键。
9 d4 k6 {2 J( r+ j5 Lu8 key2;//按键变量2,输出按键单击,每10ms输出一次,key1=1/2/3/4是对应的按键单击。
$ b2 h* M* h1 s2 C' E& h//key2主要用途是:长按按键时快速增加或减少数值。
3 w' z+ L( W, f5 i! \  nu16 ms1,ms2;//毫秒计时2 }! {+ W) |, h" _. [( q( m3 K
u16 m;//
6 u- X4 V7 P3 M3 y* F# p9 r  Qvoid key() //按键处理模块,需要放在10ms中断中运行!!!0 {7 Y& j/ O; |. h3 z
/* 说明:1、按键单击,指按下100-1000ms内释放,加入时间限制是为了防止干扰。) @+ E& @% T6 n; E4 N
             2、按键长按,指按下3-10s内释放,加入时间限制是为了防止干扰。( Q! U) _; F# ~8 h
              3、函数运行后,按键值保存在key1、key2。用户直接调用key1、key2即可。' \7 Z6 ]1 k6 s

  l9 J9 q& Z5 I. J*/* Z# y7 n$ Y4 M5 O: I' g7 S
{4 W. I8 f' Z& o
  //静态变量,必须要static$ q. T( E1 q3 F; r6 P4 N
  u16 static kgr[4];    //必须要static,抗干扰时间数组
* C3 Y: p6 X, J8 N4 V5 l! h( F" ]  u8  static kanggr[4]; //中间变量1- [$ b/ I5 Q, A1 B( Z9 F
  u8  static anjtem[4]; //按键释放中间变量。
  p! Q8 T" }. O! B1 Q$ t) |  u8 i;
! G8 }% }: V8 W$ b* |; `  u8 L_anj[4];
. f6 s: A  _& @0 C  L_anj[0]=k1;
7 [2 s+ _: s: J; k  L_anj[1]=k2;
* l! ~. z9 U$ ?7 {$ o& H7 l0 f* ~  L_anj[2]=k3;
. e: }- c+ C) c  L_anj[3]=k4;! ~4 D$ r: ?9 @6 O2 K) X. i" K
  for(i=0;i<3;i++)  //4个按键处理,key1,
& z1 [8 ~1 R9 S   {
1 @! j( x9 r0 b3 D& `1 `         if(L_anj[ i]==0)        //按键按下                                       
9 @/ h+ x3 U9 U# Y' B+ M' L          { if(kanggr[ i]==0)        //中间变量1,与下面互锁/ c4 Z  W# x6 b( D: n
             { kgr[ i]=0;                //抗干扰时间清零,每次按键只写1次。
  R* z" Y! [/ ?6 u/ ]) I# [               kanggr[ i]=1;         //中间变量15 O; h8 U) V3 _0 d' w7 F* D2 ~
               anjtem[ i]=1;         //按键释放中间变量。与下面互锁
2 N1 S* A) }, s, z             }
4 m) u& d+ g2 m; C$ a- U
& x2 y3 O( ?, Y# i6 Z           if(anjtem[ i]==1)
) Q9 V0 G) S. q( q4 E1 N9 V% f! k           {
+ n, x+ Z! q0 ?                  kgr[ i]++;//10毫秒计时。
& J1 S! P9 |" ?8 X                  if(kgr[ i]>1000) //按键按下大于10秒,强制复位,防止误按。6 U: i& j& T, k: X& C% N
                   { anjtem[ i]=0; //按键释放中间变量。与上面互锁
' k! @4 p. X  V$ G4 r0 ?3 Q                     kgr[ i]=0;* f  `1 [- B4 E7 C  I3 ^* e" s
//                  key1[ i]=0;//数组,4个按键独立+ B+ n) A9 k: R! X& R
                   }
, G0 r. h* Z& \) f+ L           }
) N: D4 }' E1 k/ H6 m& K! l' D         }
6 b/ {! T* e! O9 O9 D' @5 m  R- Y8 t8 H0 l$ `$ ?$ I! x/ f
     else    //按键释放
8 a/ e  m+ P! D# X$ d( g, g' L: D! M     { kanggr[ i]=0;           //中间变量1,与上面互锁5 W& H7 t- n0 h
           if(kgr[ i]>9&&kgr[ i]<99) //按键间隔100--1000毫秒才有效,防止电磁干扰。时间可以修改
& s  N3 j0 Z5 r' t+ Y: [, Z                 key1=i+1;   //单击,按键间隔100--1000毫秒,每次释放只写1次。一次只能够按一个按键,不允许同时按键。2 `% F- |% g$ C4 v  H2 ^
           //key1[ i]=i+1;//数组,4个按键独立, B6 J* k1 J1 \
           else if(kgr[ i]>300&&kgr[ i]<1000) //按键间隔3000--10000毫秒才有效,防止电磁干扰。时间可以修改+ I4 V. @3 k: c
                 key1=(i+1)*10;//长按,按键间隔3--10秒,每次释放只写1次。
0 _* a# |2 K1 Z( G           //key1[ i]=(i+1)*10;//数组,4个按键独立
$ f* l5 s. X& z     }9 j& v+ @. L8 w0 s
  }2 h1 o" ^2 n- F& P
! w" G: L- ~  X4 m, F
//下面是处理:key2是有按键按下就输出键值。        9 y( M& ?$ d* |( P6 y, g
    for(i=0;i<3;i++)4 Z0 |; Z  O, @0 u6 i3 Y, H
         { if(L_anj[ i]==0)1 k  [! g, O% y" Y4 Z
           key2=i+1;//一次只能够按一个按键,不允许同时按键。+ K+ A; u3 r# A# I+ E  Q7 Q; |
         //key2[ i]=i+1;//数组,4个按键独立.8 I$ g2 F% P( {: ]9 _
         }
( \& ^# Q9 w6 E: \}: I! h- I6 q; k1 _
9 t6 W8 e$ S3 D
" T" s3 I- S: z# I6 t4 y+ [5 L
void timer0() interrupt 1                 //计时器T0中断1ms。
6 h# |$ L: O' Q" ?; C; N( q; D{2 k  X0 n# [# f/ C: |; Y0 g. i
  //静态变量,必须要static( W! p  A# t& g4 D5 R! V
  u8  static time=0;   //毫秒变量。& k# L$ B* l0 S( v: d7 S; @
  time++;//毫秒计时。: R  O7 i8 d: J1 z/ M
  if(time>9) //10ms运行一次按键处理函数,不需要防抖程序。
$ }2 I; A( e( ?( c  {3 ~9 {5 g1 r& O' A$ T$ _
       time=0;! ?) v2 s! r; I9 V
        key();//按键处理模块,需要放在10ms中断中运行!!!% i: |3 \$ ?( u/ j- d
  }
' O3 ?- Z: v3 c% N5 K2 r0 w9 B//下面的语句不是按键模块需要的,可以删除。
7 S4 q- j& F. i7 J; R    ms1++;ms2++;//毫秒计时4 {* c6 S1 r; ]# O& F
}! a) |; t4 D4 V$ b1 j2 g4 h- C% y
/ F3 n2 f7 Z* o5 S
void main()
* n0 O5 J4 s1 y! G9 C' k{
( ^- L5 J7 Q0 D. O  F! x//1毫秒@12.000MHz,下面是STC单片机定时器0代码,如果是别的单片机请根据手册修改
  }5 B9 U$ V# V( x1 M        AUXR |= 0x80;                //定时器时钟1T模式
) e1 s$ \5 H7 e) G        TMOD &= 0xF0;                //设置定时器模式1 m* n6 T" f) G& E0 u- J9 v
        TL0 = 0x20;                //设置定时初值,1毫秒@12.000MHz  \+ @. q/ Y) V. a1 n' s. Z
        TH0 = 0xD1;                //设置定时初值,1毫秒@12.000MHz, Z4 ?# c- g" ~- |
        TF0 = 0;                //清除TF0标志        
& a  X2 `& w9 P% t9 L' _        ET0 = 1;        //使能定时器中断
8 ]( ]+ Q0 O. ?! i3 K       EA = 1;                    //打开总中断5 _$ W. e! i7 w' s& L
        TR0 = 1;                //定时器0开始计时
8 ~9 D3 P. b- F  cwhile(1)
4 u" A5 Z* u/ Z+ _& c  {
: M3 Z7 ]! a$ m! W" E! E//1、k1按键按下LED1亮,再次按下LED1灭,+ P" Y* P) n1 A- B6 U3 k) @- m: s0 M
    if(key1==1)        //k1按键按下) i7 [% ?+ Z/ l. ~# e
     {
/ B" H0 u; I) V- Q* ^+ r7 L. S- ^  _       key1=0;//必须软件清零!!!* M0 b) ~! I( ?# k, Z& D
       LED1=~LED1;
. o  q* V# G7 L6 R7 v; X7 @- k  L     }
% w3 b2 S$ v9 _. G5 n0 R$ E% ~4 t& [4 D- D
//2、k2按键按下LED1亮,K2长按LED1灭,3 N& ^, V/ N2 \$ ~: F  v
    if(key1==2) //k2按键按下) r5 J6 h. J6 v6 v% s( v
     {
' p8 ]4 S. t0 n% @! Q% ~. x: @       key1=0;//必须软件清零!!!/ c# z* E7 V" g7 p! b
       LED1=0; //0开1关7 Q+ I( S7 D# N- b
     }/ C9 C( I% ^9 c: N; r
   if(key1==20) //k按键长按+ d/ Z. m8 G" @0 T
     {2 y5 ^# X3 n' E7 K
       key1=0;//必须软件清零!!!
* |0 z+ h; E1 n/ m       LED1=1; //0开1关
- U! G2 _, J9 o( r  }     }" w9 {) F# R1 y+ O) e$ H2 l
1 `1 p8 O4 s; g
//3、k3按键按下LED1亮,K4按下LED1灭,
' A# ^# R1 a7 {9 s  d; |" L0 x9 s   if(key1==3) //k3按键按下3 G- J$ z2 w* H& y# ?
    {
% y: W( v, a8 z$ f3 F      key1=0;//必须软件清零!!!% a+ m6 s1 K' ~" `; z) M$ i' F/ u
      LED1=0; //0开1关
+ Q4 h+ N" S' s: [' c" A    }
$ D5 h* y$ ?- z+ o2 \; F7 x( X/ t+ V   if(key1==4) //k4按键按下
" I2 _+ [! F$ G* w    {
; y5 @4 {8 m7 M" d* C      key1=0;//必须软件清零!!!
* r6 y% p5 S1 o; b      LED1=1; //0开1关
. j' g: K# D- t6 ]    }! N( f- b9 a: i- T# G! \8 i

% {0 I5 l8 q2 h/ |//4、K3按下一次,数据m 增加1,长按k3两秒以上每隔500ms数据m 增加10;K4按下一次,数据m 减少1,长按k4两秒以上每隔500ms数据m 减少10;
1 E$ ~$ r# d* G+ w3 N9 r//m的范围:0-60000/ k6 C& u, d- ]8 P
   if(key1==3) //k3按键按下* B" ~% p; D7 K$ _1 t9 y( H, S
    {2 T5 q; h  v' r* s" y; k- K
      key1=0;//必须软件清零!!!
$ }4 h) v* H9 }9 v) V1 B4 C2 O      if(m<60000) m++; //数据m 增加1
+ n: ?% R5 P3 P: W( g2 O( z    }
% k6 R2 |; P  u7 v( F+ R   if(key2==3) //k3按键按下两秒以上,注意key2不需要清零,key1必须清零!!!5 ~5 m. D8 r4 i. |0 M4 ~
    {
( W. U- M$ @: m      if(ms1>2000&&ms1%500==0)+ E! d7 v: E; f, R  V
           {if(m<=59990) m=m+10;} //长按k3两秒以上每隔500ms数据m 增加10,ms1是毫秒变量,需要放在定时器1ms中断中自加,ms1++;
6 w( ^: D! p& E5 r3 F    }8 f* I! M" w0 d" [  J: G6 m
   else ms1=0;        //复位/ p+ s: r0 O- F4 C+ E3 o  G
2 H/ K' p) ]+ w: c  c8 p( {
   if(key1==4) //k4按键按下
+ K; c& x( x9 P" F4 |    {! D7 R9 g2 a; U6 {
      key1=0;//必须软件复位
7 Z. h2 `9 }' ]+ O" M      if(m>0) m--; //数据m -1
3 d5 n% \+ I1 \  Q3 s    }1 a+ {' e$ _: x; ?- l5 h
   if(key2==4) //k4按键按下两秒以上 ,注意key2不需要清零,key1必须清零!!!
: q( s" y5 X- R& r% q  c    {0 R: u6 e$ k0 y8 E% S
      if(ms2>2000&&ms2%500==0)
6 ?  k9 v: ^! L1 R. f: E          {if(m>9)  m=m-10;} //长按k4两秒以上每隔500ms,ms2是毫秒变量,需要放在定时器1ms中断中自加,ms2++;$ f5 H9 J& ]& A; X
    }
  \- ?- F. A( \; Y* z   else ms2=0;//复位
$ J0 A: S8 o2 r* _8 U}; Z1 Q  v7 [6 g& C! T
}8 ?! K: m! @% e( d( @' z9 }, s

5 a' _# m9 {) x6 A$ ?4 k  \# g

该用户从未签到

2#
发表于 2021-7-13 14:38 | 只看该作者
这是按键检测模块函数:要认真看才能够理解。: V, y" G( I% }$ d. i& z5 I
void key() //按键处理模块,需要放在10ms中断中运行!!!
* H. @. a/ K0 {) B/* 说明:1、按键单击,指按下100-1000ms内释放,加入时间限制是为了防止干扰。6 i- l7 T/ [2 i& m1 ~/ z
             2、按键长按,指按下3-10s内释放,加入时间限制是为了防止干扰。
( E' c6 U3 ]! B. H7 Y0 I             3、函数运行后,按键值保存在key1、key2。用户直接调用key1、key2即可。
+ i( y  W! c- P; M4 `: ?% f*/
1 _5 ~) N' x6 x$ {. s6 P{) A' s, ^( F5 Q! e6 g
  u16 static kgr[4];    //必须要static,抗干扰时间数组( P7 ^' \: q5 D9 I
  u8  static kanggr[4]; //中间变量1
/ F+ A7 ^# y& c' q0 T5 i6 T9 @  u8  static anjtem[4]; //按键释放中间变量。
  J$ s* a( |' W! ?  u8 i;
5 ?: p7 t8 B6 w/ _  u8 L_anj[4];+ x, n$ E$ K7 k3 m8 F
  L_anj[0]=k1;
% K1 q" Y& F9 i% o, l  {" a4 e  L_anj[1]=k2;; E5 c' q7 S8 [4 @; |7 S- W; S% _
  L_anj[2]=k3;4 r- h) G$ J" L0 T4 c
  L_anj[3]=k4;+ q. T# y* |5 q5 u
  for(i=0;i<3;i++)  //4个按键处理,key1,
6 i  O; n) @. Y   {; r* `* c* }1 g! y
         if(L_anj[ i]==0)        //按键按下                                       
) c: N6 X+ G) @          { if(kanggr[ i]==0)        //中间变量1,与下面互锁
" w* ^( `; p0 X! m             { kgr[ i]=0;                //抗干扰时间清零,每次按键只写1次。$ ^$ N6 P" K+ C9 z* ]9 X; p9 L/ m
               kanggr[ i]=1;         //中间变量16 k* I# K/ r  J& F
               anjtem[ i]=1;         //按键释放中间变量。与下面互锁
" j. y9 l2 c6 k            }6 C! I4 _) s0 o1 L" _
9 C" @, V+ K6 Z/ Y8 P" G
           if(anjtem[ i]==1)5 A9 f( p4 O8 w
           {
; K* w  w9 x' U# Q6 c8 D, B% U                  kgr[ i]++;//10毫秒计时。
/ ]' T5 g. Y* k6 o: w                  if(kgr[ i]>1000) //按键按下大于10秒,强制复位,防止误按。; W9 f$ g+ h; o; D5 {8 |
                   { anjtem[ i]=0; //按键释放中间变量。与上面互锁0 f! O. y! R6 T8 Q
                     kgr[ i]=0;
' X8 B+ T9 j: [6 x6 l2 O                   }3 C0 ?+ `8 ~& g8 Q) S6 _
           }9 K( a* v# t8 {: l
         }
3 j& s7 L. L) F& o# d/ c& Y5 l( W1 n/ Y
     else    //按键释放
) `8 X$ X1 z7 V7 ?& D3 ^8 x* I5 C     { kanggr[ i]=0;           //中间变量1,与上面互锁- O0 G$ L) S* |# v0 V  w
           if(kgr[ i]>9 && kgr[ i]<99) //按键间隔100--1000毫秒才有效,防止电磁干扰。时间可以修改6 S4 n+ c7 }+ ]2 T
                 key1=i+1;   //单击,按键间隔100--1000毫秒,每次释放只写1次。一次只能够按一个按键,不允许同时按键。
/ _. \$ `% B2 z/ L9 V6 p1 y/ v# p           else if(kgr[ i]>300 && kgr[ i]<1000) //按键间隔3000--10000毫秒才有效,防止电磁干扰。时间可以修改; Z% f: E+ i  {
                 key1=(i+1)*10;//长按,按键间隔3--10秒,每次释放只写1次。) g& l4 Q+ p6 E# q+ a! {/ b
     }
/ v: p' f6 x6 l" |, c  }
: P7 U  p7 t. a- V  Z6 t9 P
7 g3 M1 u1 }1 w  P1 ]//下面是处理:key2是有按键按下就输出键值。        $ W' t4 w% Y$ ?9 b% e9 Y& w
    for(i=0;i<3;i++)
/ g) U, {+ F" }; ^  t* M7 Z         { if(L_anj[ i]==0)
& ]% e. }" q5 v4 V/ N' Z0 a           key2=i+1;//一次只能够按一个按键,不允许同时按键。. N1 ?: Y. u; @# [' J. q
         }
$ F. h/ s; j9 d; c5 ^}
  • TA的每日心情
    开心
    2023-5-30 15:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2021-7-13 14:48 | 只看该作者
    程序一定要模块化,不然程序移植的时候就很麻烦
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-23 11:25 , Processed in 0.093750 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表