|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
编译时这么多错误该怎么处理,我也是网上复制的,如下图:请麻烦给看看
- K! G- L: e. Q: h: N. V; u2 k) k \" U& ?/ r% [
/*程序说明*/& X+ A3 k2 I; B
//P3.3-P3.5输出3路频率500hz占空比1%-99%可调方波//, L. g- N- u! U; Z1 D# t9 |1 W
//P3.0-P3.2有3个按键单独控制3路占空比输出长按加5%7 r ]! N0 D- Q: M* h7 I
//短按加1%占空比
- W A+ t. Y: [2 Y#include <STC15F2K60S2.H> ! J7 h( T9 H4 Z0 ? d
#include <intrins.h> 2 F" K* w B3 B$ `4 ^; U
#define uchar unsigned char; i+ ?/ m* \- Y
#define uint unsigned int3 V5 P0 b8 ?. h3 A
sbit red=P3^3; //红色LED输出口# F0 G1 |; I L: K4 ~! @/ R
sbit green=P3^4; //绿色LED输出口 b( F$ B7 v/ l2 x N7 A
sbit blue=P3^5; //蓝色LED输出口0 j9 x, y. a" t/ @5 K/ W; b
sbit k1=P3^0; //红色LEDpwm控制2 V6 y$ g7 g& p% u
sbit k2=P3^1; //绿色LEDpwm控制+ H4 }& m# c" L3 j! r1 b- B: @
sbit k3=P3^2; //蓝色LEDpwm控制- y. ^5 r4 {/ u) B2 _! V% f) X' D0 u
uchar r_temp=1,g_temp=1,b_temp=1; //三色占空比数值缓存
9 S6 _$ @2 Y) Huchar flag; //定时器T2定时次数标志
& Z* x* G' q! l( |/ _5 F//延时函数,大约延时10ms.
9 l% c. E- I9 g" R a I+ d9 L5 w" b; G) C) G. i/ N9 O
void Delay10ms() //@11.0592MHz
# p6 ` q3 u3 g# Z{( _( L7 _5 k5 F$ _
unsigned char i, j;
; E% `0 u4 C0 t: p
) g% Z d& n6 F% u i = 108;
Z# J; ~/ D( Q5 c j = 145;, \0 E1 m2 X6 E# V
do
1 {" c0 p5 M2 y9 F; U; g: @ {
) O/ t# X9 b* P/ ~( x while (--j);) ]1 P: `( \) ~
} while (--i);5 N( ~" A/ X- Q4 F& G
}
8 ^& j( W: y" L t o6 b+ e# E; u3 q4 W
//按键扫描程序
+ z+ \/ ?3 p" Kvoid key()" J2 s5 h3 {% ?0 W3 S
{
7 u$ N E/ _9 q! m; |9 |/ B uchar num1=0,num2=0,num3=0;) C2 m, G) S# o1 a
if(k1==0) //按键K1处理程序$ S3 Y+ v8 D* y* c
{1 i/ a$ F4 {1 d# e
Delay10ms();7 H1 A1 ^4 ^. t7 a0 Y
if(k1==0)! |# B5 q' I @5 S( [" U2 c. C
{7 U! I* f" K4 ~4 Z, n- [
if(r_temp<99)
* b" W$ H4 R9 W! N# l2 b6 v. h { # a* f1 u2 T1 `5 b/ ]6 _
r_temp++;
+ Z7 k; i5 s7 k( z+ e while(!k1) : W- f! H9 X* K0 p8 b& T
{9 S7 K& z, [8 N) `/ {. b2 n7 e, s
num1++; //长按标志位加到10约100ms
7 B6 _* {! s+ S7 y. | Delay10ms();
5 h3 j @. d, c1 D if(num1==10&&r_temp<95)
|! T5 j. `1 ~# ^ {
: X* {, m7 U1 h/ X r_temp+=5;3 M4 z- m/ t4 {9 n# E8 R
num1=0;9 ]: J; [ \& W) _# `3 I8 f
}
" u0 j b z8 p7 S$ B6 [& s if(r_temp>=95) r_temp=1;
, v& V( J* o" o; D0 B }
8 V$ `3 q: N n9 y7 `" p/ F3 ] }
& C8 M9 n$ {( P, g4 j. P+ ^ else r_temp=1; $ E! T8 u! @; p+ a
}# |7 g$ y3 A% k
}, Z. b ?7 a$ g" Z7 K/ k; n
# O7 M/ J6 _7 d, g* d5 J0 [ if(k2==0) //按键K2处理程序
- @5 `" `: W% `4 r0 x. \. `1 @ {
, n0 [+ H9 D r- w; ~ t Delay10ms();. C' C b4 s$ v
if(k2==0)
2 c2 Q& ^* g" s- V {/ Z q/ N# J# ?& d8 i0 J
if(g_temp<99)8 S5 `5 t. i& G: |: Q8 r
{% r& w1 w/ ]) p; n/ J/ W
g_temp++;
6 u/ |# J" Z G" [# \ ~- B while(!k2)# [8 c& n7 ] s& o; {
{. U' b- J; }% c2 Q% I; T
num2++; //长按标志位加到10约100ms
5 G" J6 y. ]! c `+ m( s: {/ B# P Delay10ms();
# d4 i1 P, Q* ^8 I7 E4 T/ G5 Q' C if(num2==10&&g_temp<95)
) e; g% i' N* X+ ? {
% v& E5 @& p1 k j. L! |! L g_temp+=5;
. S2 B) ]& f' H' x% [6 K* w num2=0;; w: K D% r# h+ l$ o# S8 F
}6 P, u" a( f: l; M2 I
if (g_temp>=95) g_temp=1;
! u. y: Z1 R# Y& _& y }0 \1 a9 V4 I t, H3 S
}+ x& P, i( K' e: K% @0 j6 w2 z
else g_temp =1;( Y* N* N4 D! |& u1 I4 v: U
}
# a4 K, L% u1 [4 A }
( W4 ` ^5 Y( s4 P, {( q+ ?! V* l0 D if(k3==0) //按键K3处理程序; a# ~) k: I8 B1 q
{4 }' i' g' W1 e! y( F& K& q
Delay10ms();7 A5 J5 p) I, B7 K
if(k3==0)
0 o* C4 u7 n7 r# o9 G {6 M6 E, L9 g8 o3 k! S! G
if(b_temp<99)* G& v) S1 H5 n/ a e2 V2 m: J
{1 p$ X" E* w" Y. m( ?
b_temp++;; G3 J- I3 e @$ Y
while(!k3)
/ y8 X9 M8 P1 I8 @) N {
, n% q9 l2 v) @: ~ num3++; //长按标志位加到10约100ms
3 z& o2 j! h! ], k, ]2 R Delay10ms();
! j& U9 f U |5 R* \6 @ if(num3==10&&b_temp<95)
' Y2 ~% W% C, l {* g& z1 z2 c( K6 K1 y
b_temp+=5;
( G0 j9 E+ ^/ n2 q num3=0;) S+ l" a7 I% Y2 l- H' T
}0 \; S. T- I L
if(b_temp>=95) b_temp=1;$ X _' B1 o2 R h; Q% ^9 c, n) i
}
6 ?$ i& r3 Z D6 s3 u }
A& `8 g/ y, e: M else b_temp =1;
% s( {% \0 Z; j9 r9 x1 q }$ V! |4 E* B' q, k0 X2 `
}
; F1 l z2 V& k# S! O2 o}
" N5 ^# s/ K! \1 T) b' i2 @! P9 b* A! @1 j
//定时器T0 16位自动模式定时1ms 控制灯灭时间+ F$ }# l& C6 {: v/ ~( V
4 u) m- i( F: ]3 ^9 z1 G N5 u8 r
void InitTimer0() interrupt 1 // 1毫秒@11.0592MHz3 R( `5 c' u$ a! @, W1 e: N4 C" j6 m0 ?
{
2 x' r6 y8 c0 J$ g IE2 = 0x00; //关闭定时器2中断/ ^3 R) D) V' y# F6 S9 ]& B
AUXR=0XE4; //关闭定时器2计数# g5 F. T9 {; S3 J
TL0 = 0xCD;- q, n: w0 l7 M* M1 m4 r
TH0 = 0xD4;# Q) j' f: q* k* E
red=1;
1 j. ]3 G" k0 ?2 k* e green=1;* d: }- A7 Q) u' k0 s5 R; c
blue=1;
( h, O. u0 X$ q0 t8 }+ K flag=1; , C; I) e" P }5 C- Q: n9 I8 R
AUXR=0xF4; //开启定时器2计数
' \, @& C1 K. I; }; e IE2=0x04; //开启定时器2中断允许
) N- U4 J* D% J}0 `# s8 b& I4 ^# l- e
//定时器T2 16位自动模式定时10us 控制等亮时间. J% o; R( E" E- C
void InitTimer2() interrupt 12 // 10微秒@11.0592MHz
% _2 l) l+ n* [$ t{ {) f$ w# B" h2 z
flag++;
! Y0 D3 R# X1 V/ z T2L = 0x91; //设置定时初值$ t1 A% F, Z* b
T2H = 0xFF; //设置定时初值
3 F6 C# W6 g) g* I0 ^7 o/ r if(r_temp==flag) red=0;+ V. X! A( {& I+ y
if(g_temp==flag) green=0;
8 ?5 N! a1 k* Z7 M, w if(b_temp==flag) blue=0;2 Y8 j7 n" U0 X0 h; m1 j8 O
}' b! i$ `, w. j2 h+ ?2 {. i
void init()
& N' ~4 |: g9 M" ~0 @7 J5 @% j{5 L: [; @, z$ i( T/ [" Z
AUXR =0XE4;//设置定时器0和2为1T模式
( C+ E7 | g. K0 M( J# D/ j TMOD= 0x00;
$ R4 N( L" `2 h# x, b9 ^2 k$ d3 h- } TL0 = 0xCD;
# j0 X3 I5 V& o- H* V TH0 = 0xD4;
9 q' c; H. M$ D4 C T2L = 0x91; //设置定时初值
5 V% E% ] n4 d T2H = 0xFF; //设置定时初值/ f6 h5 r7 R0 R
EA = 1;; O8 P3 a5 F$ Y# q7 G3 I+ d
ET0 = 1;
9 X2 e) R# S n- F TR0 = 1; C2 ]4 v- B1 l; ]
} & L- m. Z! Z5 W- b5 u ]' C
void main()
* ]# d' j( h6 c2 Q' z- r3 Y{
* X3 A# G/ `3 d, O" g9 G) ninit();8 [ i5 [6 f' _0 t2 {* ?+ D3 |, V
while(1)
0 h& _+ B3 Y9 {/ B; j1 u: A6 u# @ {
6 @0 q8 H3 y" P4 n( q3 w) L key();
; d1 M3 U+ S/ |9 N; O/ ] }% [. x& V: T% O' i! P! L
}
" J y5 L+ P5 F: s- d; V5 A7 p3 n: R5 _8 U
) P ^. S, P/ ]$ e
|
|