|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
编译时这么多错误该怎么处理,我也是网上复制的,如下图:请麻烦给看看
0 j1 r' s" H& ?8 a- r; u( b0 h
( T- q X" Q# m, G7 J/*程序说明*/3 |2 o& G1 G, g% F) Z: R2 P
//P3.3-P3.5输出3路频率500hz占空比1%-99%可调方波//" n4 `2 b, N9 L( v
//P3.0-P3.2有3个按键单独控制3路占空比输出长按加5%4 I) W l7 p8 `- Q5 S. I5 D! T
//短按加1%占空比) |$ [ [. \: ]; I3 G* M, O
#include <STC15F2K60S2.H>
1 D; q8 G7 ] q7 ^7 \: Z#include <intrins.h> " _/ x4 d# X) H V/ ~* C, o% }
#define uchar unsigned char
6 a. a# c2 e9 h$ Y5 V#define uint unsigned int
7 r' J3 t" P$ csbit red=P3^3; //红色LED输出口& l8 V, C2 W! Z' ~6 u) c
sbit green=P3^4; //绿色LED输出口
# h4 H5 W3 ~! t3 w5 [sbit blue=P3^5; //蓝色LED输出口* `4 y F0 d+ B2 Y8 q3 ~+ A2 z3 Q
sbit k1=P3^0; //红色LEDpwm控制
( W) i* U8 m7 r1 x! f& w& t) }0 Ssbit k2=P3^1; //绿色LEDpwm控制" j+ f6 ^9 E) H. V3 Y# E
sbit k3=P3^2; //蓝色LEDpwm控制
! l8 X! ^2 H$ j% s/ R8 t5 Ouchar r_temp=1,g_temp=1,b_temp=1; //三色占空比数值缓存0 U" q0 S1 D& w8 u1 h; @
uchar flag; //定时器T2定时次数标志
0 X# x I% \ |//延时函数,大约延时10ms.
7 d6 x& s. C9 e- l$ O0 x% x
/ y8 S# x# ^8 Y( n8 _void Delay10ms() //@11.0592MHz
! @# {5 G1 |" v1 }9 Y- ^{
' `6 g1 R. i/ Y9 m4 [ unsigned char i, j;
+ F- F# |( y: W! M, ~1 v; C4 u$ p; }: C1 M! d- e
i = 108;$ I( T% N2 G! Y5 R
j = 145;
3 Q4 l: t5 F ?% b( z4 B$ e do
$ H7 C2 h: T. Y {! k+ `: [$ x! L3 H/ _' _$ N4 R
while (--j);& n& R6 U: ~0 Y7 x$ x5 M3 M
} while (--i);) |; }5 b6 ~0 h* D/ J3 y7 t
}: {) E5 h0 y9 K; K# P) I
8 U m5 k/ z; j( _2 ]% @0 Q; v
//按键扫描程序
9 H- ?/ b6 ~) zvoid key()
7 p7 G& _3 ^% e- u) w{
( ~! b }! T1 L5 F7 d, l7 t uchar num1=0,num2=0,num3=0;! L! @' J; D& S6 i2 N
if(k1==0) //按键K1处理程序
/ a; C& _, q- ?6 l9 Y8 n7 J3 N {! H* Z: w' r1 B0 Q9 n+ P
Delay10ms();
6 C9 ` M, I& o if(k1==0)2 D- Q' {2 P& S0 l
{8 _2 s5 x: A- G6 g6 P' V
if(r_temp<99)
: D4 E& z5 M9 Z1 d$ ] {
* x& r$ {; f) A1 H8 i$ L r_temp++;
7 Q8 S7 z9 Z+ A$ V% L" t, l while(!k1)
& C$ n; h2 H/ r# M2 Z K E- y {/ j$ `1 l- Y7 N, f7 ~' }9 C0 Z
num1++; //长按标志位加到10约100ms
, F. U+ X* u* u5 H Delay10ms();) ]) R7 M! v1 Y* e1 l9 N0 |
if(num1==10&&r_temp<95) " D7 R1 H% m: Z' H V
{
. L+ {* Q1 e6 S& v r_temp+=5;5 g5 ~: j. O- v; f
num1=0;
/ o3 U' [$ H% C; R5 L* H }
* H+ D" _2 k& x if(r_temp>=95) r_temp=1;/ d0 j( g. g2 I# U2 z- M
}( u! G" c& _6 P+ i
}+ }; `$ H2 b' e8 D
else r_temp=1;
( Y1 U3 ^# n, v) {5 J }$ q1 p# K/ P) f
}
" J) o3 U: }. X; q3 D) O( m
% l8 ~' M0 L, m4 U9 v if(k2==0) //按键K2处理程序- W9 `; G. r; ]) n4 I
{
# ~' }3 P$ h9 G& ~# d Delay10ms();! b! ]0 H- @' _6 ~
if(k2==0)6 T3 k. B, `0 y, q* R0 U; U+ H
{, j. w/ {# n& u- {; g- _# [
if(g_temp<99)( J+ N6 [3 p: [3 K
{
* z, k% P& x& ], z g_temp++;2 A3 x* B7 g+ ^/ }
while(!k2)5 g ` _! E. p( F# |& ~5 x
{" t3 {1 ~7 S) a3 Z! r! C% e
num2++; //长按标志位加到10约100ms4 U" t+ o: ?! e7 s& \- P
Delay10ms();/ C* O; S$ z9 C* I- {
if(num2==10&&g_temp<95)
; k |8 g- t1 b2 |, D9 ] {# g' O! u& O6 b' ]6 E; y
g_temp+=5;
( ~# @* h: `9 Q/ W# B' \ num2=0;
5 ]* W/ @4 S2 M) A }- B, I# D9 J$ Y2 ^" g% l
if (g_temp>=95) g_temp=1;
& `/ W9 J3 n3 c5 {8 \- e }
' }7 u6 }% d3 c" i* {' Q }
8 F7 K1 V2 `3 S5 X2 L else g_temp =1;
& h6 v" {9 g# j- j }
6 q* ~3 ]9 a8 h$ ^% H6 C }3 `# p2 v" `4 }5 N9 T2 x2 }: Z7 M3 e" G
if(k3==0) //按键K3处理程序
. b( b5 ?3 ~8 P% ~ {% I: @7 U0 v* k* x
Delay10ms();
1 {& t% e* i# Q6 Z if(k3==0)1 J. g+ y0 a5 v7 A+ i
{
; e# c; D* s" D5 ~/ X if(b_temp<99). w, F1 r& V- m
{! A6 O" S. ~/ _4 ]( _. v% {2 r+ {
b_temp++;- \# E9 g1 q$ F) u
while(!k3)
/ ^% v6 \# ^5 d+ s1 L {( a1 S4 v# ?' ]" _- p1 o3 l
num3++; //长按标志位加到10约100ms8 I. `7 v3 v7 |
Delay10ms();
( R* O5 i9 e q g if(num3==10&&b_temp<95)
+ H2 \& a* B6 l3 { {, M! |! E9 p+ Q: t8 H. L) J4 s
b_temp+=5;. `& q. M0 k3 R
num3=0;- S- ?# }4 w6 N$ ?6 {$ U7 _5 o
}
2 ^" K: Z1 X5 o, V; x if(b_temp>=95) b_temp=1;
. n1 w! h4 [% L, B8 ?9 m }" [5 K! E, s, P6 s( b9 A
}
l a# v+ M+ T8 m$ v else b_temp =1;/ w. m- g b, p' T
}
: |( p4 N8 M% c8 k }6 U6 H1 p) P. k3 ^# e
}2 ~- p% f( c- U
1 t( A" M2 M7 y* G4 L//定时器T0 16位自动模式定时1ms 控制灯灭时间
! W# r9 j/ m6 o
# z- e5 |; V) w( D! |6 L4 A; zvoid InitTimer0() interrupt 1 // 1毫秒@11.0592MHz( N/ S: x% R5 E5 B9 Z& f
{ & {0 E5 s# M9 p Z
IE2 = 0x00; //关闭定时器2中断
+ w* Y' e5 {/ g/ e! p AUXR=0XE4; //关闭定时器2计数
5 {& h; h6 D5 ?. o9 o: q, J TL0 = 0xCD;
$ w& a6 c% g" ~! Y% n TH0 = 0xD4;* V4 F5 k- M( Y) r: `; s
red=1;
- Y+ k0 Y$ n* W5 _6 b green=1;
8 m& R c% C( e( n0 e( } blue=1;3 L; d4 a$ V! y1 U" N- b4 ]2 a9 L
flag=1; % P/ @# |$ e5 s- o( s
AUXR=0xF4; //开启定时器2计数( F ?% c$ q3 ^' ?6 H7 ^
IE2=0x04; //开启定时器2中断允许
# {( T+ m4 E( ~- {6 K: R/ T}0 h+ {# F2 i. H. L
//定时器T2 16位自动模式定时10us 控制等亮时间! ]5 C3 f: W- T; j. f
void InitTimer2() interrupt 12 // 10微秒@11.0592MHz
1 Q9 ^2 ~2 T7 Y7 c/ Y1 c" {( S{ ( k: [" a' N' w4 |
flag++;
9 ^1 y0 v& k- m' } T2L = 0x91; //设置定时初值
3 y6 z' l+ E$ N0 _( E6 ?2 ~ T2H = 0xFF; //设置定时初值9 [0 D' _4 g3 |7 i
if(r_temp==flag) red=0;
% o# G, N! u; K# I' C* X9 r% Q if(g_temp==flag) green=0;
( l5 d0 A; Y& M C if(b_temp==flag) blue=0;1 K8 @' F& ~5 J+ P
}
* Z; j: [ y5 [2 fvoid init()
1 n) x& U4 V8 Q, S{7 v! {& F/ o. C; w0 O
AUXR =0XE4;//设置定时器0和2为1T模式
# l0 v8 f+ \9 H' O* \" G0 _ TMOD= 0x00;9 q% \9 }( ]4 D6 y* y3 `
TL0 = 0xCD;$ |( G5 N& a: u, \- W% j& X
TH0 = 0xD4;3 p5 [" ~0 i6 ~% H. m
T2L = 0x91; //设置定时初值& n0 F) m! h. Z$ ]" F
T2H = 0xFF; //设置定时初值
9 |1 b1 u2 y1 d; c EA = 1;
$ o* i2 G1 s) Y8 o' ] ET0 = 1;: q% I& [' s% u9 j( o1 X$ E& k" B
TR0 = 1;
6 r; i% ^: j" {6 O} 0 a( X1 \9 O! f( j$ a9 l& B
void main()$ H6 _( `8 N/ {$ \7 n
{ 2 V/ f/ k3 A' F2 m; e% A
init();
5 W% G: ?/ J6 owhile(1)6 S! @0 z" j! D: s
{2 A8 B8 |) \" ]; e* [4 g b
key();
0 h5 C! ~' X( v- z& [ }
+ \. v$ x' r+ n}
, f; n1 i# j" ], {" A! o- i; d+ M& l+ Z+ L& Y( j
7 w# N Z: d* D' T: O/ r1 H |
|