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

总觉得什么地方不对,我这是不是民科代码?

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
新手,没人教,就看视频和资料下面是我写的一个按键控制1个灯和马达开关,另一个按键控制马达和另一个灯定时60秒(或更久)的代码。, M% V0 A6 E, w0 W8 z8 T
虽然在板子上能工作,定时也准,总觉得代码不规范。
' N# M. I4 T% \4 C/ i当然还有按键1开始工作后,再按按键2是有问题的,这个还在自我研究,哈哈
! J' p5 D( i% b# U不多说,发下代码,有没有高人帮忙看看
! R# N  n$ V" v* i+ _- ]8 u#include<reg52.h>
0 z. p+ @; \. Y! d& N
8 [. |4 ^" M: r9 j4 |4 X) atypedef unsigned int u16;
& J0 Z, |! `. X0 S3 @typedef unsigned char u8;
% F! z' r+ y7 Q
, P. i7 I2 f/ J% o" H1 Z; y# bsbit led1=P0^0;
/ r, X( ~3 P  V3 [' isbit led2=P0^7;" [3 ~* w8 t0 @+ a% a0 M
sbit k1=P1^0;4 K* N) G/ n& E4 A! A
sbit k2=P1^7;& d* {( t' Y5 h" b5 D0 X4 E
sbit moto=P1^4;1 M2 ~7 ]; r# ^6 u% ~

" h0 m8 Z% s0 zu16 num;- d5 @( d- X  ]9 k; G+ v9 }6 r
u16 TIME1;8 t9 N, \) h8 s* h# E# J

6 B9 g4 c5 C& n" o" P+ s- F$ J1 d3 I. D
/**************************************************************
1 }! [7 e; W+ x                                        延时 Xms; e0 O2 ?! u/ z
**************************************************************/
1 l. z7 g* P. M% }* S4 Uvoid delayxms(u8 x)
. `, Q  P) Z* C% a. a1 M# N{% S% l  J( b% u: x0 U
        u8 i,j;
2 Y; R0 Z# v3 M1 \) @/ r& }        for(i=x;i>0;i--)$ ^  s: \$ Y/ Z' k/ U3 j
                for(j=124;j>0;j--);" k+ _& _8 A$ l! H
}
2 h1 O' w2 Y. f1 k: }. `% k. F; E2 x2 i6 F1 b8 l( n% h
& D, t) \! g! e7 s
1 ]% x$ b& {4 |# k; p; h
. ^9 c. o& P: ?( n9 ~

. \- H. p1 f8 z. S1 O/**************************************************************7 c; y; a/ z6 c8 r  S4 C
                                        初始化
' Q- w) z% n8 }$ s- x- c" r**************************************************************/
# t2 Y# J5 l2 v- Evoid init()
1 l4 M# u% q  x5 E{" {% u7 y( U: f  t' G* E0 d0 `/ B
        moto=0;
1 _8 K& R: [4 D* i        led1=1;
8 u/ X+ }  w- P# Q        led2=1;$ C/ t) ]! H0 g& g3 |7 |( ~# y3 X
        TMOD=0X01;0 L+ J/ P; \( T! u. ^2 }
        TH0=(65536-50000)/256;                 //50ms发送中断请求一次
/ S) P+ x% \% r        TL0=(65536-50000)%256;
0 M8 X8 g0 @# \8 ~  ~, V! d& E        EA=1;                                                //打开总中断
) v0 t8 Y% I5 V4 c4 B        ET0=1;                                                //打开定时计数器T0; k: Y  ^% \. z8 Q8 Q# k
    //TR0=1;                                //启动定时器T0,进入中断程序
; x9 [; y& b$ g1 Y  Z$ |}% @4 K& U4 g- O; j2 |
/**************************************************************
1 n, j7 }* e$ q# d1 V; S4 \( z( {5 v0 B                                        按键扫描
9 W7 l/ N& z7 F" O4 C8 K* e# S**************************************************************/' @/ \# S# ?! O- I4 ]4 ?
void kscan()& \8 l9 W7 Z. Z+ t7 K
{        % ?- w2 G9 g  m4 b$ r
        if(k1==0)7 v* h( b3 _5 A9 N, x
        {        - V3 k1 u+ I6 C- Z$ Q8 C7 z" O
                delayxms(10);
4 ?; M8 J4 a) D. W& H! @                if(k1==0)
! }0 q, l% L$ z5 K9 O8 w! I; v                {                / i! h9 |4 v2 a$ z2 e, t# Q
                        moto=~moto;
9 J- O+ N& U; F  O- k$ C6 j                        led1=~led1;       
& I( j5 p! d" q/ g$ Q7 y                }       
# s% v3 {# b) }8 `. Q) |                while(!k1);! v* _: w5 k# B3 q) \# l
        }
. T' v  {5 {. s# K5 Q9 h        if(k2==0)
- i; L1 w& p' t5 p        {          x; {$ j% u9 M1 ~) R  p7 s
                delayxms(10);; |+ I; `8 Y+ a; R$ m: e3 \7 O
                if(k2==0)
) W; [4 |4 _% i, t6 t6 z                {
$ |/ |+ @5 t( W4 h* b' L( S9 b                        TR0=1;                                //打开定时器T0
. `  [9 Y" U- d' d- P) j                        moto=~moto;
. z2 t6 C2 {8 `                        led2=~led2;        : N  W# q+ b- `8 u
                }       
: Q/ A( s  Z' V/ y/ @! L                while(!k2);4 S! i/ G3 c5 F( D5 [
        }: a# [1 b2 _/ Y$ D+ Q
        if(num==20)                                         //1S定时
8 z" R5 u/ S+ R% c, F$ Y( B7 a                { 4 t5 e1 `- _% z
                        num=0;
$ X% Y  R- H7 H- C                        TIME1++;" e9 a- Q: R. x8 D9 ~/ {
                }9 H- ]0 E; K$ k) G
        if(TIME1>=60)                                 //60s定时* [/ w* @+ q/ K7 `3 e2 G
        {  U' }* p" d4 o( S2 ]( b$ ~9 _
                TIME1=0;6 Q1 i. C1 z2 A8 K
                moto=0;
8 ^  l" ?5 U/ K2 o0 w                led2=1;       
0 N: A9 E, ]: F                TR0=0;                                                //关闭定时器T0
9 J$ D$ q  _* h2 S" V( y0 j- X, q  Y        }
' x1 g3 }0 J. G9 k2 d0 i5 G; C; f5 l) Z. u}6 r; Q. a! T/ S- F

! B: H& x6 A6 ^7 L* D' u/**************************************************************
0 r1 A! w5 r" i" n                                        主程序
; p6 L: \* ]. H, y$ j. R+ f( i**************************************************************/
; z5 h. x' K/ M7 y3 D2 Avoid main()
9 Q, P. Q7 d! }2 V0 k) X{
8 o5 G7 s4 ^8 [8 m* |3 g7 t$ Q
2 V% R! A# H  u- ?& @# b5 f        init();# ^  |% l$ q1 j
        while(1)% E  g: T: y' F7 g
                kscan();
$ s: Q' Y, w- h: ]) ~7 m7 g& W6 m1 I7 M0 v1 S8 V/ `) J
}" C( Y7 w: n8 E  ]: M- m
& g, l5 ?8 h1 P
/**************************************************************+ @8 @4 K/ N' e2 f( \
                                        中断
  v3 A# M% D* X5 B**************************************************************/
* G8 ?- O4 G$ I+ ?void T0_time()interrupt 1. E7 K- R3 Z2 a' F( ^
{% p0 A% x7 `' j  _' X3 w$ _
        TMOD=0X01;
4 R5 R+ Q8 Z  _% m: o5 ]; s        TH0=(65536-50000)/256;                 //50MS发送中断请求一次
  B* R7 E/ e4 {% I: a        TL0=(65536-50000)%256;
3 J  }5 m( @7 E7 Z8 b        num++;           
2 L# R' G  l# ?}
2 z1 U) k3 m$ i: J, P! S, _2 G0 ], T" L

' y  \9 S/ t% t8 I+ m8 K( j( f' R2 I4 Q% C# j9 ~9 }
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2020-5-26 09:17 | 只看该作者
    代码没有问题,我们也是从新手过来得,
    + c$ T- ^/ t. K多练习,肯定就会了

    该用户从未签到

    4#
    发表于 2020-5-26 09:44 | 只看该作者
    程序一定要模块化

    该用户从未签到

    5#
    发表于 2020-5-26 11:20 | 只看该作者
    可以把按键这里用CASE语句,
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-22 09:02 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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