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

怎么让C语言void main()里的程序同步进行?

[复制链接]
  • TA的每日心情
    开心
    2022-1-29 15:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-5-26 09:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    代码如下,这是一个光立方的程序。第一层亮了有短暂的延迟第二层才亮,然后到第三次第四层,有没有什么办法让四层同时亮。
    7 x5 c8 B# b$ n& W( l: m9 _/ c4 E& g
    单片机源程序如下:
    & w+ A8 d* I; F; A% f#include <reg52.h>- ^7 Y$ U, e5 p* y$ N
    #define uchar unsigned char        
    3 ?; a$ v5 K( H  L0 W#define uint unsigned int         
    - H4 k( m6 u( h0 U9 G( i! h4 w
    " X% O  ]7 ?& t# Jsbit SH_CP1 = P1^0;                          //第一层引脚
    / V9 L& Y- x8 @( a. c  qsbit DS1 = P1^1;$ Z$ n, u% |$ R; Z2 J6 P
    sbit ST_CP1 = P1^2;1 i& w& t4 U8 b; n) u
    ( l) D1 Z& A( `
    sbit SH_CP2 = P1^3;                          ! C- E% w& }8 p( z% C
    sbit DS2 = P1^4;
    , s: ^. F$ v* j% wsbit ST_CP2 = P1^5;         ' S5 \. Z0 n5 s* i6 i

    2 k; e5 j" m1 [4 n4 `, W* _sbit SH_CP3 = P1^6;                          //第二层引脚/ a& f9 ~9 J3 J7 F! Q
    sbit DS3 = P1^7;1 k' u+ k3 V' M  E( C) M
    sbit ST_CP3 = P2^0;" Q  E. a; L5 \. W5 i: ~( \

    0 p2 F% U" ^  {5 d$ f4 Lsbit SH_CP4 = P2^1;                          
    & p* G8 u- X+ {* s9 Nsbit DS4 = P2^2;
    7 o- w% I8 d3 F: c0 E  K+ }) Gsbit ST_CP4 = P2^3;         
    7 g- s9 p+ n2 U: q; `/ m
    , t/ L  t7 T# D  Ssbit SH_CP5 = P2^4;                          //第三层引脚
    + r8 F+ Y( v5 d2 m8 osbit DS5 = P2^5;
    : Q3 G" a. y# Z1 s  G! Osbit ST_CP5 = P2^6;$ e6 z& r# Q3 G  ?9 |
    ! ^5 S  y+ c* I  B* N. B5 e
    sbit SH_CP6 = P2^7;                          
    . n$ a, @' o, {sbit DS6 = P3^0;
    % I) w* l+ \; W) Z' j; Ysbit ST_CP6 = P3^1;         
    . s  V3 ]) l, P# [( M
    0 m& @5 A0 _7 ]- l( Ssbit SH_CP7 = P3^2;                          //第四层引脚* D% G$ s3 R2 E
    sbit DS7 = P3^3;, D% U9 I# a  ^- z, Q% O, T
    sbit ST_CP7 = P3^4;
      |4 }! I! j5 U7 s1 b4 ^
    * L8 c- @& z# J9 W! q" J# B7 |sbit SH_CP8 = P3^5;                          5 R' ~$ G+ \/ _1 W$ e
    sbit DS8 = P3^6;! n) ]% D; W/ D/ A* g; k
    sbit ST_CP8 = P3^7;         
      E9 Q% t: x, c0 w/ U
    0 A6 `- y1 V, Z8 S. Muchar a1[] = {0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xff,};   //十六进制转二1 q! I( {# A, r
    uchar a2[] = {0x06,0x06,0x06,0x06,0x06,0x06,0x06,0xff,};  
    5 G7 h! }  r  q/ L$ e7 [8 Wuchar b1[] = {0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xff,};   # L- `: S$ T7 v$ l7 `. A2 E
    uchar b2[] = {0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0xff,};" Y0 ~+ `- j8 L* N6 G. q3 V
    $ l* @/ H6 g& s' S+ _, _
    void delay (uint x)- D- x; |: k" A
    {' }* J% E6 b- b( h2 n1 C" E
    while(x--);
    3 h8 S0 l* X) ~' p' k' a- B2 p2 X}                                                                 
    & ~$ B# M, C' e5 `; wvoid in595(uchar temp)7 J# f- K5 P* R  ^, j  E9 Z: |0 M/ S
    {
    6 R- g7 H6 ^, E6 j8 ?uchar i;- V/ i8 s% x6 {1 I; r! E, S
    for(i = 0;i < 8;i ++), X) _3 w: M4 X. l0 r( ^
    {
    + z! X+ Z- l  g/ S& ?" _temp <<= 1;
    . Q; \5 P: I: o) A1 D
      P- W! ~! Q$ v7 {; K* J; d- gDS1 = CY;                  //第一层- z2 ~+ B$ l3 a. H% r2 M
    DS2 = CY;
    ! I$ W# X0 y: ?  Y, m- h- K& n3 |4 x+ T$ @SH_CP1 = 0;
    & q# M8 W# I" l* s& {SH_CP2 = 0;
      M0 {7 v* F2 r0 v8 R9 ASH_CP1 = 1;2 ^6 g2 R- W7 z7 f5 y" i: N0 u$ t
    SH_CP2 = 1;
    $ I  o! D9 G$ S! cDS3 = CY;                  //第二层
    2 [/ `: c: _1 eDS4 = CY;9 T* z4 C6 w% v0 T
    SH_CP3 = 0;  C8 o( v. b3 n: i
    SH_CP4 = 0;
    " }; q- H% U. y- P( n6 W; B6 xSH_CP3 = 1;
    * @6 s& P+ j2 bSH_CP4 = 1;9 ?: A4 b$ v: d+ n4 D) i6 m. C
    DS5 = CY;                  //第三层
    2 H' N& e6 y+ LDS6 = CY;
    5 [& ]1 C( E' z: r0 JSH_CP5 = 0;
    9 d' v6 r5 R, r( B& H7 A; `SH_CP6 = 0;
    & d1 x4 @# v# W# A( CSH_CP5 = 1;1 r! b5 M8 M+ l
    SH_CP6 = 1;
    7 @3 k& Z: a& DDS7 = CY;                  //第四层: X, R; t$ i  q( l* u8 N, P$ U
    DS8 = CY;
    ( T9 O0 O+ P4 \# j* F. DSH_CP7 = 0;, f0 ~& b" p; m0 ^$ L8 H2 L
    SH_CP8 = 0;
    ) y0 n5 r" o, z: K; jSH_CP7 = 1;
    0 r1 |; Z2 z# {6 uSH_CP8 = 1;
    ( G3 J+ J2 H( ?" T; J  @}
    , D& P( j2 r" P+ o}
    ! x$ P8 E; \( B, xvoid out595()
    * [, t  v! S4 ^' u$ i% p{& z* u! H0 i2 U9 N
    ST_CP1 = 0;                                //第一层, C+ g3 L6 B& u# W* V
    ST_CP1 = 1;% v- o$ L- u! M# }! I9 u% \# w
    ST_CP2 = 0;
    # j& E7 k$ {3 AST_CP2 = 1;
    & t& B0 h4 G% @ST_CP3 = 0;                                 //第二层& x: b  C. X$ q9 w! a
    ST_CP3 = 1;* ~0 C+ d; T5 P' L' v! C
    ST_CP4 = 0;        7 b; `9 s! u# P; T, l
    ST_CP4 = 1;
    " U1 u3 ]! w4 I2 P! z4 n2 yST_CP5 = 0;                                 //第三层8 r, k7 S8 l4 k! _
    ST_CP5 = 1;
    ' P( }! G5 a& q2 vST_CP6 = 0;
    % I" ^: k" T* L( UST_CP6 = 1;- S9 U, Y# k" K! R- c0 W* W
    ST_CP7 = 0;                                 //第四层3 f: k7 X/ a) G- P0 n! U: l7 E
    ST_CP7 = 1;
    + ]- m. W, ]0 s6 x2 yST_CP8 = 0;3 Z% z) n+ P& |  e
    ST_CP8 = 1;) C* ~# ~' g. x! N( `! S
    }
    2 Q5 h0 Z* E! x  h
    ) R2 x& s* l% a/ S: Nvoid main ()
    6 J* T3 E) B! U& b0 _{: }5 ~' f/ q% Q! y0 k
    uchar i;" M( l1 P' E2 k6 L  {3 |% o$ I! [7 P
    while(1)
    - ?1 _5 F2 P  [0 R5 p{
    $ m7 h/ O0 A  a7 a/ d! A) k# \for(i = 0;i < 8;i ++)
    5 O+ U2 z1 j. w+ O9 T5 h; y* W{( c/ e. M" H2 F0 s; Z! u
    in595(~a1[ i]);                                                            //第一层前8个灯# h4 \0 F9 L, \
    ST_CP1 = 0;6 z: n; W) G: J$ |
    ST_CP1 = 1;: ^4 M; y. l! ~2 ~0 t9 y4 c' o
    in595(~a2[ i]);                                                      //第一层后8个灯
    1 b4 Z. [* m  _ST_CP2 = 0;
    ; J8 \! c( b7 c2 e! v( lST_CP2 = 1;        0 ~0 l* O; X" W0 I5 v- R1 W  e3 s
    in595(~b1[ i]);                                                          //第二层前8个灯                                         
    - P! [. @' ]! m! |: @, ^- e/ ]ST_CP3 = 0;
    0 z; G3 r: R0 I0 a# n2 ], T: ?, vST_CP3 = 1;0 r& l  H9 f- S
    in595(~b2[ i]);                                                     //第二层后8个灯. p, w" B1 p9 r0 n! _; b1 s  t9 i# R! E
    ST_CP4 = 0;6 h% J# M. M6 s, ^7 A% \4 c
    ST_CP4 = 1;        
    1 ^; R6 Q/ P% u1 V$ e/ `9 {* Uin595(~b1[ i]);                                                          //第三层前8个灯        
    3 I' u( n  B! b' H/ N+ MST_CP5 = 0;
    " g6 V% G% u2 g# V' w! y: rST_CP5 = 1;                                 
    & f( @% y4 A7 Q3 m- jin595(~b2[ i]);                                                     //第三层后8个灯
    ) t! Q# Z3 C9 f& X6 c0 ?' HST_CP6 = 0;( O& ~* _1 c1 s# C! r7 u5 y
    ST_CP6 = 1;7 r% x$ O9 P4 o* h/ f
    in595(~a1[ i]);                                                            //第四层前8个灯
    " l& l8 J3 X7 j: AST_CP7 = 0;
    / ~# ?, T/ X3 g- D: x0 CST_CP7 = 1;! T# |, o* k4 c9 I0 {
    in595(~a2[ i]);                                                      //第四层后8个灯
    ! T$ C, o+ H) }. d& }& {4 rST_CP8 = 0;
    % }7 l) F9 i8 i0 l( ^ST_CP8 = 1;                                                
    / P; T4 D( W' K/ y1 s  n( q3 A}# O- ], c( R; Q
    }
    % g9 V' y; Q' p* Y% z}
    8 I  G9 O: Z3 i$ s8 C! O

    该用户从未签到

    2#
    发表于 2022-5-26 09:58 | 只看该作者
    就没有任务程序同步进行的概念    只是一个任务完成后执行另一个任务罢了  
    0 H8 }* \! B: j: O0 [: E最多就是可以使用实时操作系统    任务程序可以打断保存现场运行其他任务后再恢复这个任务    表面上看是在同时运行    其实是任务分时和中断运行罢了  
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2022-5-26 10:07 | 只看该作者
    有一种叫做实时多任务操作系统的。叫RTX51。256K内存,8K存储的89C52就能运行。可以研究一下。
    " F; S/ h7 a3 [. X. A9 T+ `( S( G也可以不用搞得那么复杂,一般的开发板带的程序都是多功能同时工作的。数码管,1602,12864OLED,超声波,时钟,按键,流水灯,8*8点阵。都是同时运行的。也没用实时系统。也运行得很好。
    + ?3 u6 u7 H# HC语言真是太强大了。4 a% P2 u/ B" j2 g; d
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2022-5-26 10:14 | 只看该作者
    没有哪个单片机能“同时”进行多项任务!都是分时进行的。
    % V: P% N, d' u8 z% a5 }# w# v看上去又亮灯、又显示的,基本上都是“锁存”和“扫描”或“轮询”。
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2022-5-26 10:23 | 只看该作者
    单片机是一种很原始的系统,又没有多个cpu核心。只能用中断,伪装成同时进行的样子。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-29 13:51 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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