EDA365电子论坛网
标题:
Keil编译错误怎么处理
[打印本页]
作者:
YJIHXK
时间:
2019-5-11 14:26
标题:
Keil编译错误怎么处理
编译时这么多错误该怎么处理,我也是网上复制的,如下图:请麻烦给看看
, ~& y7 X& d3 T1 J
2 \# n4 b7 j8 j9 N o, l& X
/*程序说明*/
% {8 ]1 i) A6 @
//P3.3-P3.5输出3路频率500hz占空比1%-99%可调方波//
! K3 j4 o) _! y
//P3.0-P3.2有3个按键单独控制3路占空比输出长按加5%
6 g2 P1 c0 v# S4 D/ q' ]
//短按加1%占空比
4 L2 p6 ]- G2 o5 r
#include <STC15F2K60S2.H>
; ?5 `6 ?' J: g( S, e
#include <intrins.h>
% ^$ ?1 _4 v+ E5 X; J& s4 V& F
#define uchar unsigned char
' d1 r. u# Y4 r; P" r/ N0 H6 t
#define uint unsigned int
/ K4 c! W4 D, z e/ q) X
sbit red=P3^3; //红色LED输出口
$ ]+ z( O5 C: E3 z& ~
sbit green=P3^4; //绿色LED输出口
. ?4 S6 U5 i! Y4 h2 |
sbit blue=P3^5; //蓝色LED输出口
! W1 a& I! q# J, s" L3 a
sbit k1=P3^0; //红色LEDpwm控制
% y/ i9 l/ l- ?0 Y0 k, R9 o
sbit k2=P3^1; //绿色LEDpwm控制
* X, I% a* n8 m( I* b
sbit k3=P3^2; //蓝色LEDpwm控制
: U% \% J1 d. w5 V
uchar r_temp=1,g_temp=1,b_temp=1; //三色占空比数值缓存
: L) y; D+ s7 H! G5 L! n, V
uchar flag; //定时器T2定时次数标志
x# ~* i4 o \# W3 G
//延时函数,大约延时10ms.
. M* h4 r! R5 O" t
$ q& B3 R# k0 }
void Delay10ms() //@11.0592MHz
' o' n5 `7 d7 E+ }4 l# U. N
{
" `+ m; d) k2 r- i6 G; B
unsigned char i, j;
8 B* S# X1 a/ |& W
1 _% {6 R4 F6 `9 D! P
i = 108;
% N8 B. p. `: r5 w, g
j = 145;
8 ]" t) \, v4 j4 R/ M; v% \: s9 u
do
/ ~4 m2 g, F, ?: [
{
6 n" b0 u! A3 o/ _' ~% N% G
while (--j);
/ B p6 ^) v1 Y, X9 L9 ]& J) Y
} while (--i);
3 W" v- M& [+ S/ C/ l3 D
}
+ {- Z; a9 {. z! o% l0 q9 t" x
5 G. _0 W0 n5 ?' }
//按键扫描程序
- p7 {7 K* E2 g$ u5 d4 F
void key()
$ v+ k/ a; U) p4 }# ]7 w% o' B
{
/ K& E; Y" b. G
uchar num1=0,num2=0,num3=0;
! S. x. m1 u/ {. n: M/ K& y/ c* n7 t
if(k1==0) //按键K1处理程序
9 ] u/ j8 u, t; e8 W% H
{
1 d: S% _/ r+ Z
Delay10ms();
B9 d6 \: \# d& t1 B' F
if(k1==0)
$ P. h) U( W, l* h( K- a, C( r
{
, b0 s7 s2 V. y8 A+ }! m
if(r_temp<99)
" _- ], I& ~% ], c# H! o
{
8 F. k: y1 A/ c; d. w4 O
r_temp++;
& T, f% i) f3 {$ _
while(!k1)
V1 [9 z8 V1 q( C
{
" T/ |2 k0 m9 F, \) n1 P- }
num1++; //长按标志位加到10约100ms
% B+ A' ~" G* I' y: K* @
Delay10ms();
" _9 w+ Y+ i# x# c; [, J
if(num1==10&&r_temp<95)
7 h! Q1 j# p# u: d, Z4 a" E
{
2 k. h: Z. a) a% X. g
r_temp+=5;
" Z/ N( S% Y% L& y' B6 Q4 u
num1=0;
* q% N7 P- |: ~
}
# k' B2 L" f1 x1 i+ V
if(r_temp>=95) r_temp=1;
4 @$ p% W/ g3 `. R G% T
}
7 A B& ~( E, Y5 y7 p: t( n
}
' ~! k9 _. F+ a5 x- a+ v# }/ |
else r_temp=1;
" \/ t J/ }0 t7 T, I4 j
}
( x, P" f; t a( ^0 p2 S$ n
}
: p" j, e$ D) M3 W- j; f7 |# p
' g; }9 t/ S8 v3 F+ t
if(k2==0) //按键K2处理程序
0 I& } @' ~2 t$ n% c+ g& j
{
6 J( z4 [2 r6 Z! h+ ~8 X$ ^0 K
Delay10ms();
0 v( d) W) S/ f3 o* B ]1 p5 y
if(k2==0)
: h9 `: w4 I, T3 F
{
! G" S# a+ J% a" c( I3 P
if(g_temp<99)
2 F2 m, {4 e9 o
{
3 Q+ V- [& o3 ?* ]8 U* c* ^
g_temp++;
/ X% x# x) O# R6 N- s, k4 d1 ^
while(!k2)
; u" X+ [5 C* j- o* n b
{
! u# [) d2 p. d+ ?7 I# ~
num2++; //长按标志位加到10约100ms
- f! s8 M! B5 h6 V: J+ w
Delay10ms();
: n% X1 n# r1 R/ i7 h
if(num2==10&&g_temp<95)
# v5 ` y0 A( ]/ l( K5 q% k- X% N
{
1 {9 m# j; a: C
g_temp+=5;
$ n. l5 Z, V# ^5 ~5 w' Q; i; d$ Q
num2=0;
, W" j. T' U, }: ], o
}
3 p1 e5 F3 _: J1 I* o
if (g_temp>=95) g_temp=1;
# z! I! \+ N- f' T
}
# ]% T2 ]& a2 f9 q" O5 I
}
0 e8 e! R) q- ]& X* M3 R; h+ U8 z4 e
else g_temp =1;
0 i- X5 T! B8 _% J0 P! E
}
# l5 g3 K0 m* E+ I
}
6 D" Q7 e+ V% i0 h
if(k3==0) //按键K3处理程序
/ y/ X2 b) V2 O" Y6 ?0 X
{
, U. i2 p9 M) h4 C* ?
Delay10ms();
# W M& V0 Q `) h5 `- J5 t
if(k3==0)
4 w4 i8 c/ b: F' l( a0 n
{
: x; i U. G, o+ V& U
if(b_temp<99)
3 ?' f1 q, c* q; `4 o- G3 }. M9 Q
{
: y; f. n1 s7 x- f7 K. a
b_temp++;
6 |% H6 \+ A$ o' l
while(!k3)
2 ?) P0 a r# r- J
{
4 ~. b8 K( |+ m7 I7 Y+ N5 ^
num3++; //长按标志位加到10约100ms
( K, E0 r2 Z6 [) B K7 C9 k
Delay10ms();
& G1 \! Q# B! G B# c" g
if(num3==10&&b_temp<95)
% r+ [2 p. ~) x2 a& L8 p
{
/ g) m X# E8 A" y$ d' O* U' ]# e
b_temp+=5;
. g* Z0 f6 ?6 |( i, Q4 J$ z0 S
num3=0;
5 u6 {( y2 w9 s# | x9 A$ l. I3 n8 k
}
1 Z) A5 L- ?( E/ q& `6 r" ~2 C5 x' j
if(b_temp>=95) b_temp=1;
: D, E) P ^! F3 I6 A4 v) Q
}
: B" J- C$ U+ l; t9 B; Q0 \1 P
}
" y0 h# u& ]" p. ?1 x; H
else b_temp =1;
$ J- A, Z, H2 F
}
+ Q5 L9 p8 [+ A) Y. a
}
* N) G+ D: N' A$ }6 k
}
: n+ L. Z& E8 W* n$ D% x
6 ]7 f; ?* Z ]9 X! A
//定时器T0 16位自动模式定时1ms 控制灯灭时间
$ p1 k# r! v! {, G4 N3 Z
/ n9 t! C- H: ^; R
void InitTimer0() interrupt 1 // 1毫秒@11.0592MHz
/ P7 L. }* N, ?6 I0 F, [, g
{
; O2 R& H: A, v+ g: T2 L
IE2 = 0x00; //关闭定时器2中断
" r( t; t6 t5 }8 y0 V, _
AUXR=0XE4; //关闭定时器2计数
3 z% e, a& h. x
TL0 = 0xCD;
0 M$ K, V) _! {- U3 H
TH0 = 0xD4;
' U5 e6 G1 _3 y6 S& N7 ]4 M% W
red=1;
6 [2 M$ A. x% s* U% g* M- J& W
green=1;
+ H- G/ j% P" h
blue=1;
7 e- g9 R+ l5 }% g" t& o
flag=1;
7 {: V8 g s( o! v% ^
AUXR=0xF4; //开启定时器2计数
4 C y1 Q( }5 R9 B8 p! ^
IE2=0x04; //开启定时器2中断允许
9 z: n( A& u* ~/ D
}
6 P8 G: ~0 @8 Q: l! V+ }# o! h* \
//定时器T2 16位自动模式定时10us 控制等亮时间
I+ ~; H/ D O1 h( Y# d, {6 [
void InitTimer2() interrupt 12 // 10微秒@11.0592MHz
9 ]( P9 R0 u# s8 N z* P |
{
- f/ g. K; D6 i8 Z
flag++;
7 n. g' v7 ~6 K4 ^! `
T2L = 0x91; //设置定时初值
* I' _6 _ D2 J; t2 u" P+ z
T2H = 0xFF; //设置定时初值
" K& i) T7 G: g9 i8 d! J
if(r_temp==flag) red=0;
3 }& d* l% Y+ U' \, L
if(g_temp==flag) green=0;
5 j e5 ]' J& ^; n
if(b_temp==flag) blue=0;
Z) u9 X1 J& U" M4 Q) g
}
# F. U; ?: N2 @
void init()
5 e, @/ Z$ L3 U% j: i' H# A
{
) ~8 D( b/ l/ A8 R
AUXR =0XE4;//设置定时器0和2为1T模式
2 Z# k. ^- B% L* b: h7 d1 u' K9 H
TMOD= 0x00;
4 V+ U, l! E, I' s y
TL0 = 0xCD;
# z4 P+ y/ z' w5 s& q: b4 I! Q' V
TH0 = 0xD4;
1 W" T" i9 `% S) c( E: B; l, g) O
T2L = 0x91; //设置定时初值
; x: E/ E7 E/ |* h( c. R/ }
T2H = 0xFF; //设置定时初值
; P2 Q7 K+ @% n, n* _
EA = 1;
7 m( V$ c0 O1 c7 u+ M! L
ET0 = 1;
2 c5 O6 J, `% V, `5 Y
TR0 = 1;
; l- D2 Z, H, B& p* f
}
4 D) ^: a, h8 i, I! \
void main()
- V7 t6 A% F* K, s- T- u; h
{
5 r8 Y6 g" ?" {2 K
init();
2 F* t4 t5 [+ _, A6 I* n L
while(1)
" ^/ n0 b l$ N4 p! |! d
{
7 x! b* s* O6 P2 t3 m. ?: h6 }# U
key();
1 S' z0 P6 b: c" k4 h2 p- L
}
; D1 N; E4 G, t+ x
}
3 ]( N$ }) x0 Y3 X8 E0 h
* Z' T, {8 |% s' s8 y, t* ^
; M0 G* B y5 A/ v
QQ截图20190511140111.png
(76.59 KB, 下载次数: 1)
下载附件
保存到相册
2019-5-11 14:26 上传
作者:
YJIHXK
时间:
2019-5-16 09:48
那位大神帮看看,在线等
欢迎光临 EDA365电子论坛网 (https://eda365.com/)
Powered by Discuz! X3.2