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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    代码如下,这是一个光立方的程序。第一层亮了有短暂的延迟第二层才亮,然后到第三次第四层,有没有什么办法让四层同时亮。/ U  R* v' E2 P) c. T

    ' D- A' y: S8 F( ]6 q5 f( X9 H单片机源程序如下:
    & ^( J; R: U7 ~8 }6 V: ^9 ?#include <reg52.h>
    / ]$ q! }+ K# M+ w8 T  j#define uchar unsigned char        8 p. g- p: j2 U* n- S+ W
    #define uint unsigned int         ' `3 f) E( A7 \7 R! D

    : D/ D+ O- y- g5 wsbit SH_CP1 = P1^0;                          //第一层引脚" m3 `5 G! g5 H" k" X
    sbit DS1 = P1^1;
    7 O: @+ y3 ?) F; o8 t  psbit ST_CP1 = P1^2;
    9 D7 t4 L8 a0 p3 u4 J+ T& m/ j: Z/ B
    ' y4 O/ Z5 S' L6 Ssbit SH_CP2 = P1^3;                          
    3 X0 |, @( M& N; L6 Ysbit DS2 = P1^4;) s  @- Q% T. N/ B7 X
    sbit ST_CP2 = P1^5;         , m. o: j5 F7 y* ?7 l3 e, X: E
      C7 C, o8 ~+ j: G) q$ Y8 g
    sbit SH_CP3 = P1^6;                          //第二层引脚
    8 K8 R' ?, E$ {sbit DS3 = P1^7;
    * C* K) B+ z/ jsbit ST_CP3 = P2^0;
    ' j) M; c, Z6 z1 Q+ R5 b, O5 i4 @6 [
    + h; D$ z# v/ U- k# }8 P' E0 q6 Z  csbit SH_CP4 = P2^1;                          
    * \" W; b. S$ p6 h! P4 Vsbit DS4 = P2^2;
    0 B( A8 f- `6 C) c, H7 usbit ST_CP4 = P2^3;         
    6 e5 w7 g+ P6 t; U+ I/ {" k$ x- }7 \7 m7 x; _! ~
    sbit SH_CP5 = P2^4;                          //第三层引脚) ?5 I! S9 g$ q! I) c( ^
    sbit DS5 = P2^5;3 v, z" s' p9 X1 P7 [
    sbit ST_CP5 = P2^6;) o0 `4 ]# ?; K
      Y# e2 J# Y+ Z" c
    sbit SH_CP6 = P2^7;                          7 t$ c# F! Q3 U
    sbit DS6 = P3^0;* E1 C9 h( S! p% E
    sbit ST_CP6 = P3^1;         
    5 m: ~$ X5 I$ B/ _& g$ t" S7 x( M; S3 p: @3 z0 V4 Q8 z2 O
    sbit SH_CP7 = P3^2;                          //第四层引脚
    . b+ N6 a0 Y- [) V5 {8 D# ssbit DS7 = P3^3;1 z4 P7 H- n& t/ j+ |
    sbit ST_CP7 = P3^4;
      @- N' ~! V' c* s0 T" b6 G, H
    & @# O6 w, e5 ]4 p1 @4 p* ~sbit SH_CP8 = P3^5;                          5 w% s1 n$ C" C
    sbit DS8 = P3^6;
    9 K; [, j7 n5 U# M  Bsbit ST_CP8 = P3^7;         
    - `6 d3 ^/ S1 e, |* x* T' B; U* S) d4 C6 P3 Y' N3 P
    uchar a1[] = {0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xff,};   //十六进制转二0 x, A, E0 k' z) m1 x
    uchar a2[] = {0x06,0x06,0x06,0x06,0x06,0x06,0x06,0xff,};  
    , w6 o- u! ^" f5 d, x( K5 D7 K+ X! \uchar b1[] = {0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xff,};     w! f1 |/ b' a! K, J" D
    uchar b2[] = {0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0xff,};) v, Y2 _3 x" {* E4 X% \
    - t2 a! B1 v) Y1 @. J2 y: u
    void delay (uint x)
    ) h7 _1 Q$ l" c' `4 x$ p{
    % N/ ?/ \( w* lwhile(x--);
    ( F( p- J! T) e0 @/ ^, J}                                                                 6 B1 h; W0 J* L: W, [
    void in595(uchar temp)2 Z% \, {8 b, e6 |- C: l7 [& z
    {( [/ H/ ^) S$ o) n: N3 ^4 E0 t
    uchar i;" ^: S$ y$ T) h7 v5 ?
    for(i = 0;i < 8;i ++)
    1 `6 s% }1 i( c{7 n" W' H" a0 g2 K% j& m
    temp <<= 1;3 Q3 O- p1 _# @& k+ R3 S
    - w4 Z/ b/ F- D& m  k0 A: @$ F
    DS1 = CY;                  //第一层
    * r% I" s! `+ d/ {8 h- ]DS2 = CY;
    " C+ Z7 }- e+ k8 n! y$ mSH_CP1 = 0;
    / R+ C! H3 a' I4 a. T; OSH_CP2 = 0;6 R4 p9 b5 F0 q
    SH_CP1 = 1;
    6 \1 f& ]6 p* q5 T7 N! F2 KSH_CP2 = 1;
    , ?* e% M6 q# d5 g" MDS3 = CY;                  //第二层
    4 N( H) a, v  r3 L' j% \DS4 = CY;* V# ~% b8 W7 }) b& l
    SH_CP3 = 0;" t0 H- d; _* T( L% }  V- h
    SH_CP4 = 0;" r# n4 c) }$ ]# R8 _
    SH_CP3 = 1;
    $ P8 ?) r- u$ KSH_CP4 = 1;# E" R: P/ b. L: `
    DS5 = CY;                  //第三层; N4 Y" o& n* P- a- Q/ o6 J
    DS6 = CY;2 }1 i2 g, h/ M3 i4 ], j. a* k0 s4 H  I
    SH_CP5 = 0;& Z1 h' O9 I! p
    SH_CP6 = 0;
    , L5 A; v6 |1 w' K' a9 lSH_CP5 = 1;6 q/ ]' ~; F# K! X; b5 T7 u
    SH_CP6 = 1;. J/ w( C. z7 [. ?, r+ x
    DS7 = CY;                  //第四层% b/ t% q: ^8 N- U$ _
    DS8 = CY;4 w/ Y( f* j1 M2 B
    SH_CP7 = 0;
      @+ Y$ _8 {% q! |SH_CP8 = 0;$ n/ c  P% L- p$ e
    SH_CP7 = 1;! F1 u/ u6 E& w' X* W
    SH_CP8 = 1;1 E+ q7 Z3 L- e( O/ }3 c
    }
    # q) R! u, m0 M}$ P+ T: O4 ?" i1 J; T3 D7 [
    void out595()
    4 z. l' Y1 Y' e7 o7 Z{
    + ]2 y- ]# V' U  X  e; i0 fST_CP1 = 0;                                //第一层7 I% F, H# l7 T+ V
    ST_CP1 = 1;" o1 r0 J$ c* N" b; G- D
    ST_CP2 = 0;
    3 A8 q7 M- s; U1 }9 \/ m4 `8 ]ST_CP2 = 1;) Z1 O; G; S& x
    ST_CP3 = 0;                                 //第二层
    : X, @# Y0 l) L7 E  ~' N7 F" N4 \ST_CP3 = 1;
    $ n! G' [+ d7 h& b( d% t' uST_CP4 = 0;        7 z- ^& `- D* c
    ST_CP4 = 1;
    7 A+ H2 w& O$ o% ]ST_CP5 = 0;                                 //第三层! G& v! X* s2 l* x& R$ V
    ST_CP5 = 1;9 r7 J" L! `! X: o3 Q
    ST_CP6 = 0;/ Z, g* G- C" Y6 {- Z
    ST_CP6 = 1;
    4 j: f& M4 }1 c1 bST_CP7 = 0;                                 //第四层; W& C! r* M' Y) z3 s. Q3 h: t+ o
    ST_CP7 = 1;# E5 q; M2 J; }3 x9 H* l% X
    ST_CP8 = 0;
    6 u1 K5 r4 |6 w$ KST_CP8 = 1;
    + b* R' M3 Y* f% q+ r' ~}8 e) l0 y1 I' p1 i1 U

      |8 [: }" p9 n# \2 U2 G8 L3 \void main ()
    9 u: ?; |8 j. z) M: ?) M{+ y. }% p+ j7 d& d1 r( }
    uchar i;
    7 y4 d  ?$ h$ Q% c6 p7 x- H* ?while(1)5 q5 \8 ?. y8 B5 r( @5 V- i( b
    {/ B% Z* I: T& U" ~! L# p6 A
    for(i = 0;i < 8;i ++)! E" m. d6 C7 S* ?. W. [
    {8 I8 o  q' B, E) O" Y0 M+ u
    in595(~a1[ i]);                                                            //第一层前8个灯1 _% j% f. h& C. m. @: k( y
    ST_CP1 = 0;
    " ~4 W7 `2 ~7 O  l. S; DST_CP1 = 1;! n5 o0 e+ Z( Q" x& G+ y
    in595(~a2[ i]);                                                      //第一层后8个灯3 k" V" \5 d. F/ `. C. x
    ST_CP2 = 0;
    2 @% a. p8 Z9 V& sST_CP2 = 1;        
    9 l2 f6 _! B9 p4 f$ f$ Z, Fin595(~b1[ i]);                                                          //第二层前8个灯                                         * V8 w' W( O5 g0 b" @' N2 _/ D
    ST_CP3 = 0;! X, T9 N' I& F6 A) V' `2 v
    ST_CP3 = 1;
    % B+ H7 T& Y/ N. _6 A9 J$ e6 Min595(~b2[ i]);                                                     //第二层后8个灯) l& U% |" I  ^
    ST_CP4 = 0;
    0 N, g/ j. j9 a5 c( `/ ^ST_CP4 = 1;        
    2 i& {. L6 {' Xin595(~b1[ i]);                                                          //第三层前8个灯        7 H; u/ A8 u2 x# C. B
    ST_CP5 = 0;
    , e' Z' P% n/ N& ~* n- y- EST_CP5 = 1;                                 ' v* _; P3 O, D- Y3 p2 u
    in595(~b2[ i]);                                                     //第三层后8个灯
    $ |1 R" f- @2 t' q- D" f* hST_CP6 = 0;
    + E8 ^% x, C' q0 r: H+ E; g, m% u5 qST_CP6 = 1;& L% X$ V( |* L3 N
    in595(~a1[ i]);                                                            //第四层前8个灯  M+ Q$ U. C& q" i) l+ b. k( O
    ST_CP7 = 0;
    ; [( @1 C0 l% x) y) iST_CP7 = 1;
    " x9 n7 M" q" G( \1 Q5 O& S- Xin595(~a2[ i]);                                                      //第四层后8个灯& R; E7 X' v4 C3 V6 D3 d5 i% l1 P
    ST_CP8 = 0;
    * l8 y2 x9 j; ZST_CP8 = 1;                                                
    . s1 i# X1 i( i2 [( a3 v}
    : n) R$ t" q9 s) m}" }6 ?% P- `5 ~( @, R
    }
    6 T3 o4 U  e3 K7 _

    该用户从未签到

    2#
    发表于 2022-5-26 09:58 | 只看该作者
    就没有任务程序同步进行的概念    只是一个任务完成后执行另一个任务罢了  
    % A' O: g$ u/ {7 b( M# _8 N最多就是可以使用实时操作系统    任务程序可以打断保存现场运行其他任务后再恢复这个任务    表面上看是在同时运行    其实是任务分时和中断运行罢了  
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2022-5-26 10:07 | 只看该作者
    有一种叫做实时多任务操作系统的。叫RTX51。256K内存,8K存储的89C52就能运行。可以研究一下。
    / h& Y  y, U8 c, n) A8 C" o也可以不用搞得那么复杂,一般的开发板带的程序都是多功能同时工作的。数码管,1602,12864OLED,超声波,时钟,按键,流水灯,8*8点阵。都是同时运行的。也没用实时系统。也运行得很好。
    , `/ p5 Q# [" L8 c7 R2 }( sC语言真是太强大了。# T$ g3 n. H6 a8 r6 C! O2 A
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2022-5-26 10:14 | 只看该作者
    没有哪个单片机能“同时”进行多项任务!都是分时进行的。8 j: h6 r8 D% a& I4 e3 o1 L
    看上去又亮灯、又显示的,基本上都是“锁存”和“扫描”或“轮询”。
  • 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-21 05:58 , Processed in 0.093750 second(s), 23 queries , Gzip On.

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

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

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