|
程序: h- I* f" o9 {; p7 ^9 q
#include <reg52.h>. S/ W$ ^+ R7 U7 k8 ^
#define uint unsigned int6 j0 Z* E8 I% B; E6 S: z: B
#define uchar unsigned char
! W" `" u2 k2 |/ s, F( @# w1 O1 _+ W/ V. W; T, p' G; E: T- {
//先省略内外部中断程序
7 G9 k& g3 \+ I" Wvoid main()1 ]6 d* E$ H* [2 V+ Q
{
0 ?* ~ F/ C1 g V/ Y; @ while(1)
+ c2 A( c" @1 Z# i {, f& x) I& Z" ^$ B8 h
while(1)
% V7 q2 {+ }/ s! }+ v6 [ {/ T! w9 N$ H) w% R( f
if(key1 == 0) //这个就是按键1,切换模式。用1根杜邦线把P32和P37相接,每按下按键1就会进入一次中断。/ T: E6 R# h! Q
{
+ Q7 k1 O3 M! p delay(20);//按键消抖3 S5 b2 n2 p5 c
if(key1 == 0)
/ V3 K1 s) J, B! s+ _8 { {
3 {- y( S# W7 s flag = 0;) f: m: P0 i, k& \
flag = 0;//产生低电平
1 d' m$ D5 x) P1 E4 H4 y flag = 1;//结束低电平* [; s3 c! k0 J" [# t
while(!key1);//松手检测
( h6 N: v) F. F# S$ Y* T+ K } ; E, e) O7 L$ M2 b6 y+ |, K, {2 F
}0 s/ C: Q3 y( V/ @: z
4 x8 G4 H6 ^& k( `9 l+ i* y
if(1 == mode)1 a8 \" `- m; y2 i/ Y
mode_1(); //检测到mode等于1,就进入mode_1函数里面
/ v$ T+ ~+ U; i9 K& j1 A if(2 == mode)1 w" \' c; p) v/ g) W9 j/ g' @
mode_2(); //检测到mode等于2,就进入mode_2函数里面, z, O- C. ?: \! s) p
if3 == mode), ?; }! Y! H. n, N, b5 o0 s P
mode_3(); //检测到mode等于3,就进入mode_3函数里面
! q1 p8 j/ \$ c5 ~2 K( o7 C7 y
5 ^ \$ ~! H9 i- w }: e) a6 E3 o; r& f- G" r; j5 @1 i
" a/ o O6 m( J$ V) g4 ?1 v } , \/ o7 M/ H& r& F' U- c9 o
}) k/ v7 \8 f: j7 x+ @$ p4 ~
1 A/ {6 ~$ ?/ D3 Z& o4 b+ [mode_1() 模式1
1 e5 O. q2 J8 ~9 u8 \- d& H+ n{( l' C7 J, j' j0 q# P: j
led灯闪烁;4 C" R5 l- {2 @4 @. }% i( M' f9 p- J
判断标志mode是否改;(若改变,return跳出mode_1函数,回到主函数,根据标志mode进入子函数)
& n+ b7 @ o& x- a N- @}. z9 z: W- c. [, [; ^
, f# x. a" K8 N& G; Omode_2() 模式2& X w3 H/ C! K- f/ J: R
{
: P7 t3 c% W( R2 d6 e 按键2,就实现点动;
5 G* g4 `" u. Y$ s: e& x% U$ } 按键3,发送4000个脉冲;
% ~4 \/ _" ^0 E: s 按键4,正反转改变;- ^" c5 V( \- Y1 x2 o2 h; j
判断标志mode是否改;(若改变,return跳出mode_2函数,回到主函数,根据标志mode进入子函数)5 m2 t' _) D' x0 ]
}
1 O6 m1 M$ e- z4 U" r- p2 D2 s" z9 ^% X
mode_3() 模式3, U: s% D* ^2 i+ q# x' _
{0 @3 @% U( _/ f9 ?$ N6 t" P
内部中断函数;$ d4 h: [! Q/ `( p* k0 Y4 [
按键2,加速;
& s5 e- U' u' ?. Y" P4 k 按键3,减速;
5 ]% M- x4 t; W1 c( w$ V 按键4,停止发送脉冲/启动发送脉冲;8 `' a; P# q7 q2 y
判断标志mode是否改;(若改变,return跳出mode_2函数,回到主函数,根据标志mode进入子函数)0 S; u, J% t" @5 y3 O
} |
|