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

这个单片机程序为什么按键按了没反应?有什么问题吗

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
#include "main.h"
  I) A- j8 u+ j; ]/ m% T5 _- b4 d2 w, F0 a# A+ \* A7 b
9 o' F  o' E3 h" C7 s' s) I
u8 t=50;
. w6 X2 f% G$ b  z6 D9 e" g& z7 c: G5 E: t5 F/ Q- g
void anjian_add() //电机减速
; K, G- G3 b3 X9 X{/ r: _- ^/ r! V# v5 y# Q" F; J: n( T
        if(key_add==0)
; e! n* k6 h3 k+ s        {
4 n) C- Q+ H. O! J                if(key_add==0)1 G9 U( O+ l5 s9 @% u8 R
                {' b# c  F2 l; P, N1 A5 b
                        t+=5; //每按一次加速按键占空比减1; v9 z) d1 L; E0 w2 b
                        if(t>=255) //限定占空比下限
3 g7 u5 m1 E! e0 @, ?                        {8 O8 C( Y  s% Y" \  R
                                t=255;6 K' R: x% o0 L. x8 F
                        }$ i  y& i# u: x. V6 z% i. E% v
                }
, n3 e  W% O  h        while(!key_add);
. f5 e# w) A+ ^        }" R5 l# o) }% l. E0 |
}
. @, ]- i7 {, a, Q( O* I
: u$ t" M* o5 }7 z
$ i/ w; T% v" D2 D1 b. O% N) _9 V1 Svoid anjian_dec()//电机加速) j! R8 r) n& m7 G, Z8 u
{0 n+ W* l9 U( R
        if(key_dec==0)
% U% N* f: v5 ]5 x, |  y! s        {
2 U2 g8 u% d$ Y, z, A( ]                if(key_dec==0)& E7 ~" i5 \8 d6 Q/ z3 |3 t! ?! J+ v
                {
  A7 v1 B7 i" M/ A+ c; J$ j; c: V                        t-=5; //每按一次按键占空比加13 l& `, B' @7 S* X7 h6 u2 a& q
                        if(t<=0) //限定占空比上限" j0 A' C8 D! f4 p& h/ F
                        {7 Y$ R4 t, W6 b; q
                                t=0                                ;1 ]+ ]- t( I1 l  v' r' Y0 Y- o$ P$ j7 j
                        }
& `$ P+ b; B+ U. d/ e' P/ Y6 x                }
" ]4 Z6 [& q) ?1 s4 |- Y                while(!key_dec);
4 C( h& J: L+ Q, x; S; I) v8 C7 r        }* f7 [0 d( G% K3 o4 h
}
" m3 a. S1 j$ C6 L& w/ n: M2 Q
void PWM_shuchu()2 M  A  A  o+ d3 q* V3 u
{  % A( R' c. W" Z" A& W. ^  ?7 i
                CCON = 0x00;  
5 D8 L7 d8 F5 J- S6 r$ {                CMOD = 0x08; //PCA时钟为系统时钟  
& d, w$ e, y4 Q- d7 b& z                CL = 0x00;' x, b$ E7 K4 U/ d4 D& U
          CH = 0x00;
5 ?; c) G- v% x$ `          CCAPM2 = 0x42; //PCA模块2为PWM工作模式  ( s5 _$ s: w: N7 c( c# z
                PCA_PWM2 = 0x00; //PCA模块2输出8位PWM  , i% A$ ^2 x  V6 h1 [% s0 @$ D
                CCAP2L = t; //PWM占空比为81%[(100H-20H)/100H]  
, W% H2 }. G. e7 p& }                CCAP2H = t;' l& `' Z# ?- z6 H
           CR = 1; //启动PCA计时器   + j* W% H6 _" Y1 a+ w& `" S3 a$ g* ~
}5 q6 q6 ~$ L* d5 @5 Y
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-7-1 15:29 | 只看该作者
    看了一下,你的程序不是很完整吧,按键的定义,原理图那些都没有,而且你的按键程序是不是应该加一个消抖呢

    点评

    while(!key_dec);有消抖  详情 回复 发表于 2022-7-1 15:30

    该用户从未签到

    3#
     楼主| 发表于 2022-7-1 15:30 | 只看该作者
    nocturne 发表于 2022-7-1 15:29
    + j1 a4 f1 I  r4 r1 }" G2 G看了一下,你的程序不是很完整吧,按键的定义,原理图那些都没有,而且你的按键程序是不是应该加一个消抖呢
    9 Y$ ^8 `! _4 n; {) s, T$ r7 l
    while(!key_dec);有消抖
    / _: A: n! P7 r' a8 u% s- e: A4 F
  • TA的每日心情
    开心
    2022-1-24 15:10
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2022-7-1 17:18 | 只看该作者
    这个不是消抖,是等待按键释放。
  • TA的每日心情
    开心
    2022-1-21 15:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2022-7-1 17:22 | 只看该作者
    你的程序上电就执行一次检测按键。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-29 11:51 , Processed in 0.078125 second(s), 24 queries , Gzip On.

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

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

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