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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    代码如下,这是一个光立方的程序。第一层亮了有短暂的延迟第二层才亮,然后到第三次第四层,有没有什么办法让四层同时亮。1 p1 H; s. o2 }$ Y* Y
    $ [6 R% y0 ]  n
    单片机源程序如下:
    . _& r: \0 j2 J( t#include <reg52.h>! h" R- {& E7 _% X
    #define uchar unsigned char        % t1 T% H; ^. T  y
    #define uint unsigned int         ; d# P2 y; [0 W5 m+ w, ]
    " j5 a) \. d2 d# Y2 z
    sbit SH_CP1 = P1^0;                          //第一层引脚
    % q. q; N1 Z! t) z  o6 K: |; ]sbit DS1 = P1^1;
    - ^% }& {$ H5 \: e: rsbit ST_CP1 = P1^2;
    ; d6 S/ ]5 E* }6 i) f2 F- E# q- M3 F# V; M# p2 J9 F# K
    sbit SH_CP2 = P1^3;                          
    7 W; m! g0 u4 c) p! j: y5 K7 J; b8 Hsbit DS2 = P1^4;. @* [& {* ]- j" N& e
    sbit ST_CP2 = P1^5;         9 C2 H7 ?: b$ G, ^" N

    : I, h- Q) Q; ^9 jsbit SH_CP3 = P1^6;                          //第二层引脚
    + f$ p* l$ B3 [2 Z6 _  G4 p! L! X5 Ssbit DS3 = P1^7;) \* B3 @) x1 J1 d; [
    sbit ST_CP3 = P2^0;' L$ k) Y. p  q6 _" T
    . S7 x! Y7 V. |' n7 ~0 L
    sbit SH_CP4 = P2^1;                          6 s9 _4 N) @# ]/ q( s
    sbit DS4 = P2^2;! I+ V- R6 H  D! z
    sbit ST_CP4 = P2^3;         2 k9 x4 g7 S9 C" W# D

    % y3 W, q$ s) Rsbit SH_CP5 = P2^4;                          //第三层引脚5 U5 f. C* e, U6 a/ w7 }0 E0 J
    sbit DS5 = P2^5;
    " E7 F$ o% j2 ~" ]& W6 C0 vsbit ST_CP5 = P2^6;# W* F6 s. h! E7 `4 l; O5 u

    7 M+ Y! r" j/ k# C$ D5 f: O+ F: x# Xsbit SH_CP6 = P2^7;                          
    ' [$ z' \' {# u* P1 u$ Z0 M( Tsbit DS6 = P3^0;6 d9 X, y# `# R3 B
    sbit ST_CP6 = P3^1;         % G% h2 G- O2 Y" i$ g3 Y
    * a; V; n8 Y- ^, P5 b! q/ X+ m
    sbit SH_CP7 = P3^2;                          //第四层引脚
    + D9 Y- r( P' I# u0 j! ~$ gsbit DS7 = P3^3;
    ' w* g  q# r: wsbit ST_CP7 = P3^4;% j+ t: c/ X) S% ~) F7 G" E
    % f$ M6 I$ X$ }+ }
    sbit SH_CP8 = P3^5;                          
    # U4 Z4 ^  H. t' `# H; Nsbit DS8 = P3^6;
    ! u3 d# z; |' t/ U* n, ^: W# j& J4 @! |sbit ST_CP8 = P3^7;         
    / m  [9 Q, Q6 g4 j/ Y& n+ Y
    * R8 z# W3 `" Suchar a1[] = {0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xff,};   //十六进制转二
    2 C! f6 q2 ^7 g0 @. y& l$ ?+ p' puchar a2[] = {0x06,0x06,0x06,0x06,0x06,0x06,0x06,0xff,};  # H1 T$ C) x' D# O! e9 b# g
    uchar b1[] = {0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xff,};   ) X: c9 v# S- Y& J, R
    uchar b2[] = {0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0xff,};, s# S: V, s; L9 _4 m8 @# e; o5 x

    1 ^! u8 \9 U$ t& u( G: h  \  m# v; ?void delay (uint x)
    + A) q1 v4 v& ?+ _{. c. R$ N: x! r& k! n; A  u, t; Q
    while(x--);
    + j+ B' A1 ~# J+ u6 y}                                                                 
    : \5 G) u% Y0 F9 {void in595(uchar temp)7 _5 D. A% Q3 s6 _0 R3 h% J
    {7 B" ^9 f7 n$ Z3 z3 ?; e
    uchar i;
    4 \5 K8 ?4 `+ @for(i = 0;i < 8;i ++)4 J  m( U9 S& q3 p
    {9 z$ ]2 j6 N" w- h7 H" _
    temp <<= 1;
    + W; \$ v! E" L  v7 `5 g7 ]
    - S( A  g  ?$ f0 z: s0 iDS1 = CY;                  //第一层
    * y5 `' _2 B" C/ `- q: V0 ]; qDS2 = CY;7 Y4 K/ S  I, H2 A
    SH_CP1 = 0;/ z$ L! I3 g: u4 g
    SH_CP2 = 0;0 P; N- s, k6 E0 {& e
    SH_CP1 = 1;
    9 G* w2 b8 N! x$ r& m: p8 GSH_CP2 = 1;
    + z2 Q' s. s& A- Q1 {6 c- C# IDS3 = CY;                  //第二层- b$ J& n1 `1 k+ d$ ^. G4 X
    DS4 = CY;
    % x; \1 ~; u" Y' U: k% mSH_CP3 = 0;
    ! y, T) }) D6 B, z5 PSH_CP4 = 0;
    / L6 ~7 z. H& h7 XSH_CP3 = 1;
    * t+ T" `7 |) }2 H4 \, [SH_CP4 = 1;+ o  q6 _1 e$ T3 }8 P$ U
    DS5 = CY;                  //第三层- h0 e% t; @/ r' |; o- k3 F
    DS6 = CY;- c" {( q" q8 D& r
    SH_CP5 = 0;
    ' b; V$ P7 T0 {+ z5 y& E% }0 cSH_CP6 = 0;
    / S6 m- N7 e0 p: I0 w- ]6 X3 vSH_CP5 = 1;
    ( @: z! N$ y4 m  E" j% a8 k# cSH_CP6 = 1;
    ! N* _' p7 }; h( XDS7 = CY;                  //第四层
    4 n' _9 v7 w' Y& l: T% Y! e6 vDS8 = CY;" ]- S: s3 x- C# `3 [) U* r
    SH_CP7 = 0;
    / X; o% \! E, l# i- ]' P9 uSH_CP8 = 0;
    - D5 i, f; h' t% CSH_CP7 = 1;
    : t! V" E9 c0 J2 o: rSH_CP8 = 1;
    + z- O$ ?8 B8 o+ r+ F/ Y/ p& J- m}
    - [1 \% R: q! r}
    / J$ t# d% K. fvoid out595()
    0 w9 `) y; }4 O: p* I, S{5 U% K3 D+ ~' }$ r; g  [
    ST_CP1 = 0;                                //第一层
    + b' R2 b! D* I; g2 OST_CP1 = 1;5 f3 h" t' z2 F6 I3 R
    ST_CP2 = 0;
    & q( ]. v- d$ l) w2 OST_CP2 = 1;
    6 ?' ^$ n( A$ C5 ]: N7 C" Z& jST_CP3 = 0;                                 //第二层% S  c) V) v1 l: s
    ST_CP3 = 1;+ O1 G; Q1 g. B( Q- Y' c! d
    ST_CP4 = 0;        $ g8 j4 ~  D; H- z, m
    ST_CP4 = 1;
    3 C. g3 n7 S  P  W( b; ?ST_CP5 = 0;                                 //第三层7 v6 B0 _7 }$ F. s" W- [
    ST_CP5 = 1;6 e  D# B! ~5 O6 F; r/ R6 s
    ST_CP6 = 0;
    5 a" B/ b  d6 ?0 SST_CP6 = 1;
    3 V- d6 S; g( c- c7 ]ST_CP7 = 0;                                 //第四层$ [8 c5 T  X  p: M  @7 i) `' N! H9 ]
    ST_CP7 = 1;
    ) k% V  p1 D0 f7 AST_CP8 = 0;
    6 H. \5 r, E. G3 r0 xST_CP8 = 1;2 I7 V) F1 `$ }: R( N6 s
    }% H  s8 f, n* i; x' G" `

    3 v' K+ |$ l# V9 {6 zvoid main ()
    & a" R+ G+ [$ P& q1 b{
    2 g( Q( Z9 {' Q3 suchar i;& v$ g& d) n/ _5 H) I0 E; p
    while(1)
    0 t5 w# }  f5 f: o6 E{
    8 G+ b' p) a) Cfor(i = 0;i < 8;i ++)
    * K+ U4 J# A! {3 b{$ ?4 T/ f% |9 s
    in595(~a1[ i]);                                                            //第一层前8个灯1 o6 Q5 A0 z5 c7 i/ a
    ST_CP1 = 0;
    : }/ S4 w4 `: _1 d7 O: H+ gST_CP1 = 1;7 I1 W* m) j& [2 A+ }# I
    in595(~a2[ i]);                                                      //第一层后8个灯/ {* \/ z/ k1 @3 z2 _! M
    ST_CP2 = 0;
    & P. \; @0 _. j, ]4 o/ VST_CP2 = 1;        2 O6 Q' r  x+ W; M* k4 H3 U+ o
    in595(~b1[ i]);                                                          //第二层前8个灯                                         
    6 O' f1 E: k# l0 f- O: Q% |ST_CP3 = 0;
    1 Z" N3 c% `5 M) L/ n/ S. DST_CP3 = 1;: j- k  [" E$ q; s9 U
    in595(~b2[ i]);                                                     //第二层后8个灯
    ; U6 b% x) M/ N) C/ YST_CP4 = 0;8 }; K/ b3 V: Z1 _6 h/ e$ E
    ST_CP4 = 1;        ; D" Y9 o4 j3 f. i6 q, G  i# |# g
    in595(~b1[ i]);                                                          //第三层前8个灯        
    " b% ]2 i* Z2 Y4 nST_CP5 = 0;7 O. O% s/ k$ l# ~9 W
    ST_CP5 = 1;                                 ' [2 i/ i, U, b
    in595(~b2[ i]);                                                     //第三层后8个灯) U- @- l0 E$ u
    ST_CP6 = 0;
      i; d5 v/ ?) H5 u) U; sST_CP6 = 1;
    9 E: ?' d" v# I# ~in595(~a1[ i]);                                                            //第四层前8个灯
    9 `3 [8 @7 B( n) M: B8 aST_CP7 = 0;
    5 u2 z5 a: t, D, p  X7 j4 xST_CP7 = 1;
    ; l! ~5 o) l0 ~' O+ w9 n+ G# Oin595(~a2[ i]);                                                      //第四层后8个灯
    7 R4 R: ]5 s* s; U  N) nST_CP8 = 0;4 I: M8 N$ Y$ j2 T* E4 D) C
    ST_CP8 = 1;                                                
    5 v( Q3 z  {- G! t- g+ W}8 H6 S2 u* C* @4 X5 {# E* O
    }" D9 J5 z6 p  {( B% s: ]
    }
    1 j* o6 f' ?- R2 h% ^) ^5 a& O

    该用户从未签到

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

    [LV.1]初来乍到

    3#
    发表于 2022-5-26 10:07 | 只看该作者
    有一种叫做实时多任务操作系统的。叫RTX51。256K内存,8K存储的89C52就能运行。可以研究一下。7 I( }, f+ G7 C& H7 b% n
    也可以不用搞得那么复杂,一般的开发板带的程序都是多功能同时工作的。数码管,1602,12864OLED,超声波,时钟,按键,流水灯,8*8点阵。都是同时运行的。也没用实时系统。也运行得很好。
    * m4 g( x! R( D/ @" }1 E& f$ }2 eC语言真是太强大了。6 D+ r+ i4 b) b2 K# l4 r' e
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2022-5-26 10:14 | 只看该作者
    没有哪个单片机能“同时”进行多项任务!都是分时进行的。' t: {2 {" K# G, b1 c+ 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-7-19 17:24 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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