|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
编译时这么多错误该怎么处理,我也是网上复制的,如下图:请麻烦给看看7 o" z7 `4 F. k7 h
. X2 }9 T ^' b5 Q2 x2 N6 f) u/*程序说明*/
2 S# e% D' l% j% g* E+ k" @3 ~//P3.3-P3.5输出3路频率500hz占空比1%-99%可调方波//. _1 X3 k4 T1 \1 O+ G j4 U" i5 a
//P3.0-P3.2有3个按键单独控制3路占空比输出长按加5%8 B% i1 h8 L6 p! k
//短按加1%占空比8 h1 v# w3 T( h! ~6 L( P
#include <STC15F2K60S2.H> ; _- X" S' e: t4 V
#include <intrins.h> q5 l7 Z6 J4 }! j5 h+ H1 n7 a
#define uchar unsigned char- ^1 u n# i4 M
#define uint unsigned int- E, \' n7 a5 G l# Z) [. X
sbit red=P3^3; //红色LED输出口5 J9 F; O$ ?( U; h5 i' B) y# Y
sbit green=P3^4; //绿色LED输出口% ~( _1 R) u* ~, G
sbit blue=P3^5; //蓝色LED输出口
" E9 k+ r) g1 ^sbit k1=P3^0; //红色LEDpwm控制) W! B( ]" E( U0 I5 ]
sbit k2=P3^1; //绿色LEDpwm控制8 P5 A! p" `+ Z% ^
sbit k3=P3^2; //蓝色LEDpwm控制
3 j$ N6 ^9 j9 Z7 euchar r_temp=1,g_temp=1,b_temp=1; //三色占空比数值缓存1 t* C' @0 \" ]9 B1 g. O$ \
uchar flag; //定时器T2定时次数标志* y4 l* [( B, H* H- n
//延时函数,大约延时10ms./ E e/ f% g! q8 E6 t7 L1 L* U
( W$ o* P1 [% V; t- }( w- w
void Delay10ms() //@11.0592MHz
: j4 {5 M( Y; K{
! S- P9 ~: l1 b7 { unsigned char i, j;0 \6 }1 [7 X) o) N; w
" o! Z# T' E8 }/ X' ]+ E
i = 108;3 t3 J7 N- f% r! o' A
j = 145;2 V& z% e4 A& \: x
do
6 a4 E8 H/ o4 c$ o {
- h; E Z( K: e( I' I5 p8 d while (--j);) f0 Y4 \( p# \4 t# h% t, E& b$ M
} while (--i);6 D7 L3 r4 t" R. O- r/ B% x4 S
}
* p0 v* K7 u U+ y4 Y3 s3 Z& H! ]8 \* {' L
//按键扫描程序
( x, C, t ~/ Evoid key(). f: J3 h, t7 R" K
{
/ Y+ \$ }, g: H# Z; @6 s' @1 f6 m uchar num1=0,num2=0,num3=0;- Y1 z' ~/ @+ |( o5 A' s
if(k1==0) //按键K1处理程序2 j. b& L% D( u8 Q" K+ E/ E4 H! F
{
( Z) l" G5 E4 Q* z2 ?5 P# {- @- B Delay10ms();7 l6 t5 n' D W; z0 d6 j
if(k1==0)
( w$ y. _) z' f0 S! e, k {
6 X' Y9 G7 s+ m; ?2 _ if(r_temp<99)
* [; L, U8 _9 V! x6 a; I { 7 n- \, O4 m4 P$ A; x' C+ r
r_temp++;3 @$ x$ ^0 p2 c! i/ w" W: F
while(!k1)
! N) X" u& I) T# j {% I) \2 O+ J/ G
num1++; //长按标志位加到10约100ms
`; L% C0 J" a& v& [' g Delay10ms();
+ l7 m" ? g) @ if(num1==10&&r_temp<95) ( c% P2 u) g7 g- y" d, [. V
{
, t/ N Q) p( W3 @( O5 ]: v r_temp+=5;7 b, }. U. C9 R% x. |; \
num1=0;+ `1 A! C/ s7 W9 @; \( p9 Y
}! b& I* y4 K3 @5 a4 z( Y' p9 j
if(r_temp>=95) r_temp=1;" `5 f. b7 @4 M4 R5 M
}) t4 I3 ^4 P _& _. W* F
}
; T3 L$ a" {; x else r_temp=1; / Y* j4 U" `+ J7 w, v* G7 f
}9 F% w: c/ D" F
}4 S& T2 y8 u3 K# t
" t$ F& \. v) d7 O% f" T1 k
if(k2==0) //按键K2处理程序" y$ l7 e4 h0 r, J' k, a% j/ ?
{
4 p# W" s, b3 |) J9 | Delay10ms();
- K8 e( `' u: g" ], ?" ~) n/ [ if(k2==0)
: ^$ E1 T5 \% Q m7 T {+ u7 w9 H! O1 h0 U% E4 K& @: U7 Q* j) V
if(g_temp<99)& R+ N0 O* K9 o {
{
! X9 R! D# o/ f8 | g_temp++;/ W( x# |8 ]1 E% u+ p2 O. p" Q# k
while(!k2)0 _: _8 o P) G l. X- `$ [8 L3 [0 d! M
{6 W4 D" P" z$ m1 P/ N: S1 a2 o r
num2++; //长按标志位加到10约100ms2 [; b% y- S! a; Y
Delay10ms();4 Q/ D3 w% _: f/ s+ x
if(num2==10&&g_temp<95)8 w7 ^& ^; r$ X. K' I4 Z/ Z- P, C
{3 [( v+ h+ B: F* |6 q s; d. s0 w
g_temp+=5;
1 C2 B F- K. C$ M! x4 i! P- c+ ^3 ]7 [+ b num2=0;5 i7 K L8 s+ ^) J+ K
}- k$ s7 Q9 p6 n1 i
if (g_temp>=95) g_temp=1;
- Z: y/ ]* u4 f) i7 Q/ a) j }0 J/ X$ f3 |2 `1 D( X" \
}. z2 Y/ Z; z5 d; Z" w6 H3 j, O
else g_temp =1;" i( c5 Y1 k) a8 y
}1 _# d# W% b2 m3 K" w( x
}
- I& T: \; u: Z9 M- K5 ]6 v if(k3==0) //按键K3处理程序1 f/ u( s& q4 E/ i2 v) f; b
{
; D4 e' }1 c# U1 n+ x. w1 w: M Delay10ms();
; ?- r f8 z! y# n4 ] if(k3==0)4 G( e/ w6 q2 x# Z6 \
{: b4 w1 A0 x7 T' L7 x, l0 }
if(b_temp<99)0 n5 t( F; U3 f5 |4 W
{
5 U7 F3 _0 g( H b_temp++;
0 h6 P! T. h- S2 p3 L- A9 ?0 a9 a4 P while(!k3)
\& `* ]9 n; y6 y1 X% A6 a' H( k6 Z {
8 o. n/ N. p$ C5 L6 C& C num3++; //长按标志位加到10约100ms8 ^- h4 m9 e; B, g
Delay10ms();
5 ^5 S, B3 D f& `5 v$ h8 c if(num3==10&&b_temp<95)
z0 r' x6 l7 C {8 y k! d: i o }9 L9 b
b_temp+=5;# ~9 z! O7 ]# M
num3=0;
0 q& ?& E8 @2 C2 b- v2 U2 r4 ` }1 h& S# K. r* K1 P' A0 \
if(b_temp>=95) b_temp=1;
( H ~ L: v! V }9 J L: t2 T( l9 u* t
}
6 m, n S3 p* y# F else b_temp =1;0 C, W8 x) T! |% u: Z% o) F) U5 j
}2 r6 A& J8 t* b2 _5 Y
}% K }0 R+ r( I6 C9 d
}( w/ S( [) D! C
( Q/ ^* Q# F" \8 O4 h- F3 E5 s. j//定时器T0 16位自动模式定时1ms 控制灯灭时间# ^7 \9 o- z. v
6 X' r5 F$ [ f# E0 }3 evoid InitTimer0() interrupt 1 // 1毫秒@11.0592MHz0 H l* [6 ~* _0 L: \5 L
{ 7 o% Q' E% [: I& ~; r
IE2 = 0x00; //关闭定时器2中断! o2 G: a- [& q, r; y0 ~
AUXR=0XE4; //关闭定时器2计数
! z$ J' l( o0 l1 ]; n6 s TL0 = 0xCD;, F+ ~, N I# L% @: d
TH0 = 0xD4;2 I3 r9 A3 k& Z
red=1;
, K2 b$ y) c% V6 q green=1;
5 @/ ]" ^& ^ ]$ d: A' R; p; L4 N blue=1;
6 T% m5 E, V$ S/ j flag=1;
1 D7 E7 H% d! M! O9 m AUXR=0xF4; //开启定时器2计数7 P; D% L H+ c
IE2=0x04; //开启定时器2中断允许3 Q) D! {" l( N: F
}9 ~; k$ @) b0 c7 E
//定时器T2 16位自动模式定时10us 控制等亮时间
! I% T; i' j2 Kvoid InitTimer2() interrupt 12 // 10微秒@11.0592MHz
: Y7 k& }! {6 ]( [; I{
7 K$ v+ P% J8 c$ \) W flag++;6 F5 P M$ B* h2 Q
T2L = 0x91; //设置定时初值) _; U# g5 j! ~" X& y
T2H = 0xFF; //设置定时初值
* h- \% |. e' `% K6 j if(r_temp==flag) red=0;: G0 b B/ w% p, F( u; t* ?3 ]
if(g_temp==flag) green=0;
: E4 |1 w3 J* u: U; H$ e if(b_temp==flag) blue=0;
0 E' Y! Y; ]; E2 m0 l, o}
5 b+ Y2 [- d: a0 ~void init()0 x0 z4 }: F- y- Q. y! o5 ]; }$ ]
{. f2 l4 r3 s- V
AUXR =0XE4;//设置定时器0和2为1T模式
0 b: m% s' h/ Y% I* }' u, _* ^ TMOD= 0x00;
& h. A% {* L D2 { TL0 = 0xCD;
/ V% k @4 e* E Y; G9 x8 G+ P- G, c TH0 = 0xD4;5 t( e! ~5 j; w# e
T2L = 0x91; //设置定时初值+ d: h9 A2 {8 T0 d0 _
T2H = 0xFF; //设置定时初值
) H/ ~ v4 i7 k# y2 S2 h7 p EA = 1;7 W. E, m7 O7 d, F/ T) H `! b( s
ET0 = 1;" d* H" L( z2 |. y% e
TR0 = 1;
2 {1 t6 s- I4 p. W/ S7 k. U7 M}
+ R8 U7 K1 ]' i! E- B( {void main()( Z1 U4 K' Z. e W( |+ |
{ " M4 k Y$ T! r. _
init();
) c% j2 \: B1 Q8 Q$ `, n5 Awhile(1)& l3 M" u. P8 l7 f
{
/ ?3 P" B, ^6 J% O1 v) N' } key();
0 t1 N3 z( _$ ~4 ?9 i; T( L }: {& T$ T* x% e$ s; Y
}
8 o& ]8 ?5 ^, p ?. Y
; F8 I4 j) w6 Q( g, a" ~
* U9 N; `) w4 M |
|