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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    代码如下,这是一个光立方的程序。第一层亮了有短暂的延迟第二层才亮,然后到第三次第四层,有没有什么办法让四层同时亮。" f  I0 O; N7 N% `
    5 e* ?& g: N; P7 Z6 s
    单片机源程序如下:
    # ~% C3 v" n1 ?# L  T#include <reg52.h>1 S7 W  L. i1 H% p' q; l/ w  ]
    #define uchar unsigned char        # d3 j" @5 }# b( W% _
    #define uint unsigned int         
    3 a5 M) E1 l& r" t7 M8 J3 h% D+ Q# [. w
    sbit SH_CP1 = P1^0;                          //第一层引脚
    : R7 _* d# O% {4 j  }" y* Q7 G) Rsbit DS1 = P1^1;
    9 \/ {: V8 D5 f- x+ C; w# z/ [sbit ST_CP1 = P1^2;
    1 @* x) G" w) A; R! F0 `* d) a
    9 H; Q' J7 k1 g, Isbit SH_CP2 = P1^3;                          - x9 D4 r/ m1 b6 Y
    sbit DS2 = P1^4;5 l' l9 h! p! I3 f+ {" n1 k* Q
    sbit ST_CP2 = P1^5;         ) }" Q) H8 b, x3 |' R3 h0 z
    ! _3 e+ J! v+ [% H
    sbit SH_CP3 = P1^6;                          //第二层引脚* a) q* J/ h& z, J" D. u
    sbit DS3 = P1^7;
    ; e4 s2 |: @. Isbit ST_CP3 = P2^0;/ r, B& d* v3 g% |7 n$ @
      H1 S3 t& N: Y
    sbit SH_CP4 = P2^1;                          
    ! w/ M' ~8 Z/ k! }4 M! usbit DS4 = P2^2;
      \8 O' H2 ^" C* [* V* i1 Esbit ST_CP4 = P2^3;         ( B6 k$ F6 T7 e. _

    + @8 h2 C8 i0 `sbit SH_CP5 = P2^4;                          //第三层引脚  b% U0 _4 u- A- J% d
    sbit DS5 = P2^5;
    . I  I2 p* d; Psbit ST_CP5 = P2^6;
    6 n, P+ T" z1 R2 v& y
    7 [& D7 b, N; N' e& o) ~0 xsbit SH_CP6 = P2^7;                          # S* I) p2 g4 s! h
    sbit DS6 = P3^0;
    " T+ R; t- Q- ^3 G+ X9 C* `+ ysbit ST_CP6 = P3^1;         
    ! y0 n$ ^5 B6 v& W  {
    ( z3 }& Q; i* R" ]# U) Q0 Ysbit SH_CP7 = P3^2;                          //第四层引脚! N- d1 V# A" H  E7 d
    sbit DS7 = P3^3;6 i6 K0 ]9 D- v* {0 e) l- ~
    sbit ST_CP7 = P3^4;
    8 O3 k7 Q) S' v' N) s
    4 m/ i4 O: O! v4 a4 Osbit SH_CP8 = P3^5;                          2 w8 g8 }5 A  r/ S% b6 t4 [4 B
    sbit DS8 = P3^6;
    # {% v! r( J6 B8 h, Z! lsbit ST_CP8 = P3^7;         ' x& j2 z% l- p$ F" K

    2 W9 T) M0 N" Yuchar a1[] = {0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xff,};   //十六进制转二
    / N; s2 H0 E6 T% ]* K/ M) N! juchar a2[] = {0x06,0x06,0x06,0x06,0x06,0x06,0x06,0xff,};  # j# U3 F6 y0 C; [- y+ e+ d
    uchar b1[] = {0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xff,};   
    $ ]; z7 u6 h; H6 D3 \/ G% M' Auchar b2[] = {0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0xff,};& S! [0 g: G- s0 j- B# `0 {7 \
    7 q5 p5 o2 t3 ^. z
    void delay (uint x): M# x  z0 f1 M
    {+ r! U- J& t2 S/ G3 K. {
    while(x--);
    0 o+ `) I; M$ M$ o5 w( i8 m}                                                                 
      n5 T6 z4 y- s9 c, S" V0 Cvoid in595(uchar temp)
    8 x: i# _9 ^% K) Q" W{- x9 H+ b7 P0 G0 v
    uchar i;- I- E/ v1 w0 U7 Z& J0 X8 u
    for(i = 0;i < 8;i ++): K4 C. @# J6 _& a
    {$ j% h. t) |$ E8 T
    temp <<= 1;
    2 m/ i% y  E; U7 M6 K9 ^2 k4 @1 S; W4 t
    DS1 = CY;                  //第一层0 o0 [9 G& E, J
    DS2 = CY;) _& |0 ?8 P- N+ d
    SH_CP1 = 0;, P' i6 L* G- Q4 T
    SH_CP2 = 0;  i6 y; k" O! P- e9 c
    SH_CP1 = 1;; x; R; z* Z% p. u6 T9 i, j* B
    SH_CP2 = 1;
    ; J( M! D2 c- F6 L- J) W4 qDS3 = CY;                  //第二层9 v7 i8 G' v/ V9 V
    DS4 = CY;2 f2 @8 m6 S& o
    SH_CP3 = 0;
    # b5 D+ l- [: ]  O  x' q2 b0 e7 ISH_CP4 = 0;
      w. ?/ _( ^/ R- i4 ZSH_CP3 = 1;
    2 t( U% ?0 |- a& B6 `0 a0 QSH_CP4 = 1;
    $ {; H! u: M+ s0 g7 fDS5 = CY;                  //第三层+ I, f9 i9 E2 m( L: n
    DS6 = CY;
    . q. e- [6 u! v" h* B& G* |. jSH_CP5 = 0;: Y1 l7 j- ]& M0 J
    SH_CP6 = 0;# o; l+ x* B, F$ E
    SH_CP5 = 1;4 n. l* |& ]( e; t; {
    SH_CP6 = 1;
    * }% L5 g$ ?6 \8 w8 f5 |0 `1 NDS7 = CY;                  //第四层
    ! {) e& X( ?+ F  b) D) \DS8 = CY;8 ]4 ^3 J" }( q0 C9 H) H1 h/ k! w. e3 e
    SH_CP7 = 0;0 l# G) h( y7 m3 t) K  E
    SH_CP8 = 0;
    2 F8 R2 K. V4 j* Q2 h' N& P! USH_CP7 = 1;$ m3 f1 B" a  ~) w& w
    SH_CP8 = 1;) x; O3 k+ U* M) F* |
    }; P3 @% b: |3 v: |9 S* g
    }
    / z0 d. V' ?+ ^; L, O3 {void out595()5 ]6 `$ \- k: ^* X# I
    {
    + O5 m$ a- a8 \% x  W, L* yST_CP1 = 0;                                //第一层5 Y5 @+ @2 X; b$ S5 p/ h/ M
    ST_CP1 = 1;
    3 O  e, J. u% O7 p) Q: zST_CP2 = 0;
    ( l4 D+ _" V$ I; |5 FST_CP2 = 1;2 h8 k4 ?' [/ h" p
    ST_CP3 = 0;                                 //第二层
    8 m! t1 y! r2 v8 [" yST_CP3 = 1;
    8 J  \" G- @# G* z  UST_CP4 = 0;        
    " _* }: X- ~* V; xST_CP4 = 1;
    * z0 c0 w6 S. {ST_CP5 = 0;                                 //第三层
    2 X, V5 m% V( X( ]ST_CP5 = 1;# h+ n) u% z, w0 F4 A* Q
    ST_CP6 = 0;
    : ^3 m) A/ Z1 T7 F7 Z' G  T8 u5 IST_CP6 = 1;
    ) M' v# Z$ n; \# @9 kST_CP7 = 0;                                 //第四层; ^' Y$ @4 w% H2 h# \
    ST_CP7 = 1;0 z0 s( x" {: [+ @6 t
    ST_CP8 = 0;
    : ~9 d/ i, e* D( S+ yST_CP8 = 1;
    6 X- l, @: S8 A4 C" x}
    ( E1 C3 j9 R5 l5 F3 o
    , X- K6 d* j, ]% Avoid main ()
    - Y6 U5 f3 |& j  E6 @8 z{2 w0 f$ h- t7 J) T/ L
    uchar i;' [3 @$ k1 y3 e# Y
    while(1)" f: j9 V5 N% \& B* v' d: m6 h2 `7 J. M
    {, @; i8 u9 m* W" `% U% F9 h
    for(i = 0;i < 8;i ++)' t7 X3 I! z" }' q7 t: p
    {3 u0 X1 Q( f) X0 H
    in595(~a1[ i]);                                                            //第一层前8个灯2 a  s. ]  m, O# e; I" \
    ST_CP1 = 0;
    ) j2 ~% K& {/ ^$ }. kST_CP1 = 1;! K. m: D& z- V% e
    in595(~a2[ i]);                                                      //第一层后8个灯- R% j. j' U9 v, W# A
    ST_CP2 = 0;5 i# v0 i) x% _  s0 y5 I$ Q
    ST_CP2 = 1;        
    7 G1 i7 S' I0 t2 D4 W0 @. @in595(~b1[ i]);                                                          //第二层前8个灯                                         ; U0 Y; @- Z! q. A
    ST_CP3 = 0;) y3 _( ]5 a* @( Y$ s/ O' G
    ST_CP3 = 1;
    , O- T1 W3 ^- {% h/ y% s( vin595(~b2[ i]);                                                     //第二层后8个灯" a4 @8 i7 A" @! }9 E8 k) z1 J
    ST_CP4 = 0;- A) T- b) ?% L
    ST_CP4 = 1;        
    " I3 H% |0 ~) S* ^in595(~b1[ i]);                                                          //第三层前8个灯        # f' E' f0 R, q2 `  N( [* c
    ST_CP5 = 0;. H& d  O0 |, U2 x: c( W; E9 U. E; v
    ST_CP5 = 1;                                 " {, ?/ p+ R/ H5 ~
    in595(~b2[ i]);                                                     //第三层后8个灯( e' d8 p; K+ |# y. n/ q; d% j
    ST_CP6 = 0;
    * s& u, H) t. t- ]8 Y6 b2 vST_CP6 = 1;
    ) z4 t, p" x% l/ I' ~in595(~a1[ i]);                                                            //第四层前8个灯9 W8 z5 |! e# b% e" H1 |2 {' f1 ]
    ST_CP7 = 0;4 Z( \6 A  v$ j; r( q
    ST_CP7 = 1;
    1 \( j; u+ G4 N3 O: cin595(~a2[ i]);                                                      //第四层后8个灯. A( V( {+ X3 \0 x1 t8 ^+ H
    ST_CP8 = 0;& r1 u% s5 i0 t
    ST_CP8 = 1;                                                
    7 a8 T6 c+ \' k4 w" x# M}  t5 e- J0 z3 \8 A
    }! I) B2 W0 w' G4 O0 M: M
    }
    ; S3 t9 P3 \0 L* D

    该用户从未签到

    2#
    发表于 2022-5-26 09:58 | 只看该作者
    就没有任务程序同步进行的概念    只是一个任务完成后执行另一个任务罢了  
    & Y* z  d' t6 N3 T5 `7 c+ k: y最多就是可以使用实时操作系统    任务程序可以打断保存现场运行其他任务后再恢复这个任务    表面上看是在同时运行    其实是任务分时和中断运行罢了  
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2022-5-26 10:07 | 只看该作者
    有一种叫做实时多任务操作系统的。叫RTX51。256K内存,8K存储的89C52就能运行。可以研究一下。
    ) N% [9 W, D; \, ]" c6 l. L# f也可以不用搞得那么复杂,一般的开发板带的程序都是多功能同时工作的。数码管,1602,12864OLED,超声波,时钟,按键,流水灯,8*8点阵。都是同时运行的。也没用实时系统。也运行得很好。# O# r! r6 m* A! z7 O
    C语言真是太强大了。
    # c1 H  w' e& S; T1 n6 ?3 r
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2022-5-26 10:14 | 只看该作者
    没有哪个单片机能“同时”进行多项任务!都是分时进行的。
    & k3 b. I7 F; O8 P6 Q9 g5 ^- L5 u" }3 Q看上去又亮灯、又显示的,基本上都是“锁存”和“扫描”或“轮询”。
  • 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-8-5 00:17 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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