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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    代码如下,这是一个光立方的程序。第一层亮了有短暂的延迟第二层才亮,然后到第三次第四层,有没有什么办法让四层同时亮。
    + h9 B- \1 ]; e0 F1 l
    % _' Z% H" d+ Y' F8 u& o$ R单片机源程序如下:
    3 T1 T' X. K1 H" m0 k/ n3 K#include <reg52.h>
    : x& n/ H) G$ H% b4 s1 X/ G#define uchar unsigned char        + s' ^7 I  W( ^
    #define uint unsigned int         
    % Q7 t' `+ G# M7 m! C8 E! C  D
    sbit SH_CP1 = P1^0;                          //第一层引脚
    ' @5 o3 }' F9 ~* ]0 B: esbit DS1 = P1^1;
    * q" [) u9 ?2 S, ?/ X; J2 osbit ST_CP1 = P1^2;
    8 i0 ^) ?9 n3 D7 s. Q, i" z8 W/ i. |+ o9 Y" O1 ?: t5 `' N
    sbit SH_CP2 = P1^3;                          
    ! L7 \0 j7 D* g% p; ~. Jsbit DS2 = P1^4;
    8 V# f9 W; A  e; K! D6 r. Msbit ST_CP2 = P1^5;         
    4 j- i' f5 \3 C3 |" `$ P% F
    4 R/ ^0 M& @$ a9 |* {1 `0 Ysbit SH_CP3 = P1^6;                          //第二层引脚
    3 }. s6 P+ d+ t/ O4 I% |sbit DS3 = P1^7;4 S" e) U+ g7 d$ G" s
    sbit ST_CP3 = P2^0;
    4 D3 M5 j  A7 e. [$ h0 M! |# C5 U  ?! \& Z% n) a2 w% z7 ^9 y
    sbit SH_CP4 = P2^1;                          / q' Q, A6 K# r* a3 k+ z; O
    sbit DS4 = P2^2;: q8 W! i) J. Z2 e- {
    sbit ST_CP4 = P2^3;         
    0 e# O+ [; J& o5 J1 J+ Q
    . l/ D) Y( K8 m7 a) U; ~sbit SH_CP5 = P2^4;                          //第三层引脚, ?+ F+ b7 U, M
    sbit DS5 = P2^5;4 |2 P0 M; P+ T9 C* N
    sbit ST_CP5 = P2^6;3 M" |( f2 E% R. s% G

    % a$ V7 h; u1 R  _: q" F" v; Tsbit SH_CP6 = P2^7;                          
    4 I( `* i! N# T& F+ A4 f( X. asbit DS6 = P3^0;
    ' v$ g6 o* [9 M- q/ Nsbit ST_CP6 = P3^1;         ' E! T2 |6 B; D

    ; C- I7 |: B# H9 L% J" j6 ?sbit SH_CP7 = P3^2;                          //第四层引脚
    / Y2 z1 o7 C6 Y8 ?" U- q6 nsbit DS7 = P3^3;* R/ u4 y6 A+ w8 H. R
    sbit ST_CP7 = P3^4;& a+ f" t2 l& x, _" p- r

    2 W/ ?0 A: n( u# Asbit SH_CP8 = P3^5;                          
    3 V& }+ ?! n/ ^3 ^* E/ }4 r$ Vsbit DS8 = P3^6;1 n, W3 B, K) q+ r% I/ n
    sbit ST_CP8 = P3^7;         
    ( @8 V4 ~) e% f/ i% |! d' e; A* e* N: ^) {/ r
    uchar a1[] = {0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xff,};   //十六进制转二1 M$ ^8 O6 V% i9 q; M6 j3 v# W! O8 d
    uchar a2[] = {0x06,0x06,0x06,0x06,0x06,0x06,0x06,0xff,};  * d, R8 v0 j- q0 i3 ]
    uchar b1[] = {0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xff,};   0 S& |6 e5 x+ s' x  I
    uchar b2[] = {0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0xff,};
    5 y' D1 N; q) A; i& Q6 }
    % D/ V8 g3 {* y$ \$ z2 Svoid delay (uint x)3 c1 t# S' ?. ^" k8 U! h* d
    {
      ^( C% {% a8 M1 Hwhile(x--);6 p+ T4 [& L' \% l2 E
    }                                                                 
    ! d% c- W) Q/ k; f1 e, i: X$ Gvoid in595(uchar temp)
    0 Z4 ]  Q  }5 P{
    7 S( p1 z( _: h& R7 _3 Cuchar i;
    9 [' g6 @1 u5 ]; q/ Sfor(i = 0;i < 8;i ++)7 [: \0 k; X) F! ?4 _/ G  r
    {
    ' F3 `( S4 @8 ?. htemp <<= 1;
    , T# ]  a! Z" f1 k4 L, l* F9 Z+ {4 f+ n- |. v* C) |
    DS1 = CY;                  //第一层
    * u6 V% U* G0 |2 @DS2 = CY;6 ^$ M/ H3 A. r9 z* x+ D
    SH_CP1 = 0;5 H; \  I6 p$ j6 T* Q. n" j: ]* `
    SH_CP2 = 0;
    5 b5 {7 c, Z9 F% N! b. i1 |& R- H( ?SH_CP1 = 1;
    - y( t/ b* V8 aSH_CP2 = 1;
    # j: q7 W; f7 l0 j( {* `: V+ R; \$ JDS3 = CY;                  //第二层
    : q8 j- Z# O9 N4 G6 {  E  ZDS4 = CY;
      L" y9 D! Y1 s. x; h2 Y# ]SH_CP3 = 0;
    9 w! H2 ]+ D, fSH_CP4 = 0;
    2 J7 p% N. L; T* r# M2 r8 Y# ?SH_CP3 = 1;/ j4 V8 O5 y& d9 u9 x
    SH_CP4 = 1;+ N) |/ D( j) ^5 E) _) G
    DS5 = CY;                  //第三层
    1 V  a; ^8 `( z2 _' GDS6 = CY;- S! E, W  G- N; e
    SH_CP5 = 0;
    ' a8 {0 c. J  b+ _4 _) E% ESH_CP6 = 0;
    " K% J9 W) t- i- b8 h, X3 @( H; pSH_CP5 = 1;: `* [/ s% r7 n# o3 c# ^- L
    SH_CP6 = 1;
    8 ^4 ^+ D2 O! E$ jDS7 = CY;                  //第四层
    % n& ?' E" ~+ o0 x$ \9 `4 V! ~DS8 = CY;% e+ Q6 }8 G9 x. d( o
    SH_CP7 = 0;
    6 `9 F  U0 G2 v' wSH_CP8 = 0;
    2 x8 v+ S/ h! j" ~# d, kSH_CP7 = 1;- J$ n* m- U5 z4 a1 j
    SH_CP8 = 1;% q6 G% w+ t2 D4 X1 l4 P9 e
    }
    ; x! J5 q) F6 O: q! _}
    ; ^# z. j' _5 g" n% Y$ ?void out595()" r- w; r- g! M1 j0 d: j2 a; a
    {
    1 c" Z* M0 x" z6 A( B) {$ vST_CP1 = 0;                                //第一层
    * P4 Y! q) i$ |- ?7 XST_CP1 = 1;; d. Q: P/ c" {  i  h% ~( [, Q: s0 a
    ST_CP2 = 0;
    2 e1 w, C2 k) d% N/ fST_CP2 = 1;. Z( d4 k0 W5 k# ~) X
    ST_CP3 = 0;                                 //第二层/ A' ]' p' u1 F; H
    ST_CP3 = 1;
    % B* X7 E3 I5 [4 \! X5 s* u( A: iST_CP4 = 0;        % O* y" f' h' H
    ST_CP4 = 1;
    5 }! e. |( C1 n, r! b9 n% {- @( \: ?ST_CP5 = 0;                                 //第三层
    / k# Z3 }1 X$ L  oST_CP5 = 1;! i5 K5 }* S; e/ ~
    ST_CP6 = 0;
    9 F, y  C* q% w7 _' |& z  j$ k- _ST_CP6 = 1;
    6 M. U# f* J3 d3 o& h8 A, g9 U' ]7 YST_CP7 = 0;                                 //第四层# _3 H# c! j- `! u1 R! ]5 A
    ST_CP7 = 1;
    * x: b3 t6 u- {" y7 c$ b8 LST_CP8 = 0;
    0 m: E, D/ W. x: vST_CP8 = 1;
      E% I7 z1 ?; ~/ c" |% t& m+ O  U}
    ; z- i; ]0 n8 K9 }
    , ?/ ]7 E4 x, d/ b  @+ P0 u6 o4 Hvoid main ()
    9 g4 ]+ ~( u: _* y) U{, U# V; W7 j) p7 N& p$ ^" z
    uchar i;9 |- }7 S" O( l! W  A$ {
    while(1): |9 q# E0 Z4 Q6 v# I
    {
    9 @' ?4 c/ z4 b- Afor(i = 0;i < 8;i ++), `; P, X+ @% `( ]# r
    {+ I2 i% X4 K( {  Q) D( u! r# L
    in595(~a1[ i]);                                                            //第一层前8个灯/ k- K! @3 c9 D& S! t
    ST_CP1 = 0;: z( R8 ?; D3 M% @2 ?$ N
    ST_CP1 = 1;9 D! B8 L  W- E4 F: u9 v' n- _5 H
    in595(~a2[ i]);                                                      //第一层后8个灯
    / p) o6 Q& u: z7 g9 pST_CP2 = 0;
    " O" E& A5 S- g1 U- W0 v* A* C: cST_CP2 = 1;        
    9 ]9 @- P8 V5 _! l1 qin595(~b1[ i]);                                                          //第二层前8个灯                                         
    # c% J0 C4 l% i" F' M- s2 t" kST_CP3 = 0;
    8 p  q# M( R% r7 `- B7 YST_CP3 = 1;
    ; R3 j" {$ ^+ M$ G" V" din595(~b2[ i]);                                                     //第二层后8个灯
    4 [4 [' i3 h/ [" D; E8 VST_CP4 = 0;8 l4 e1 S3 X) m' \
    ST_CP4 = 1;        
    1 ?6 }' z+ M+ ^" Q0 Q# z; xin595(~b1[ i]);                                                          //第三层前8个灯        7 P, A; `, d3 y" b  V5 U
    ST_CP5 = 0;0 A. I+ L0 \, i  T
    ST_CP5 = 1;                                 2 z. {7 e% J# Q
    in595(~b2[ i]);                                                     //第三层后8个灯8 q2 h; i0 n6 Q
    ST_CP6 = 0;7 Y- t$ \* b9 K2 |
    ST_CP6 = 1;
    8 s& f+ _4 h7 y- ~in595(~a1[ i]);                                                            //第四层前8个灯
    2 V- v: {% h: @* G4 g* cST_CP7 = 0;
    - v2 f& r. R$ u2 Q# p# DST_CP7 = 1;7 N( N- S1 \0 B4 [. l: l6 c
    in595(~a2[ i]);                                                      //第四层后8个灯
    / K+ Y; B2 ]- I/ w0 }5 bST_CP8 = 0;
    ; y$ g9 K2 Y* w" j* E9 H4 U1 m1 }; {ST_CP8 = 1;                                                
    ( B3 X" t1 u1 z}
    1 y/ l2 }- L; r! A2 G$ }' c}
    2 r4 G& B8 h! b. e3 r}
    2 A2 f+ h/ l! G0 D% }0 L/ B- g

    该用户从未签到

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

    [LV.1]初来乍到

    3#
    发表于 2022-5-26 10:07 | 只看该作者
    有一种叫做实时多任务操作系统的。叫RTX51。256K内存,8K存储的89C52就能运行。可以研究一下。
    ; x5 y, z+ j; X/ `5 @也可以不用搞得那么复杂,一般的开发板带的程序都是多功能同时工作的。数码管,1602,12864OLED,超声波,时钟,按键,流水灯,8*8点阵。都是同时运行的。也没用实时系统。也运行得很好。  |& q9 a, L& O2 ~+ B. X
    C语言真是太强大了。5 E% @4 N" A$ p( E9 W
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2022-5-26 10:14 | 只看该作者
    没有哪个单片机能“同时”进行多项任务!都是分时进行的。. u! `, {5 t( n2 C$ R3 y
    看上去又亮灯、又显示的,基本上都是“锁存”和“扫描”或“轮询”。
  • 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-10-8 23:03 , Processed in 0.281250 second(s), 24 queries , Gzip On.

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

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

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