|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问大神这个程序我怎么改成可以进行有符号的计算啊 可以计算负值
' |* C9 E& t* {: ?6 X8 V9 F2 E& u9 z% J
#include
' z% q, \5 L& O6 V( i& n2 Y: ?#define uint unsigned int
" y# W9 t8 R. T" {: V4 w* ]8 V#define uchar unsigned char
- W4 o0 V" ]( y3 X***it dula=P2^6; //段选引脚# _2 @$ @' P8 M+ Q6 s
***it wela=P2^7; //位选引脚# T7 l8 [' j: x$ q4 A7 k
uint flag,inputnum1,inputnum2,displaynum,mathsign,outputnum,keynum; n% a* \5 }7 x: o! {' @
uchar address[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //6位数码管地址数组
+ A* x, [4 M3 @" h- x# p$ H+ r2 r% A* n* u
0 I6 }# s% B6 t- `( m& P* J0 ?
uchar table[]={0x3f,0x06,0x5b,0x4f, //0-F共阴型数码管字形码2 |0 |+ R) ` i2 K2 G. t5 e, H
0x66,0x6d,0x7d,0x07,( G: c4 p! P, l9 i) K& }' H( ^8 s
0x7f,0x6f,0x77,0x7c,
5 T0 R% o6 R8 Y! r' w4 X& n( t& Q0x39,0x5e,0x79,0x71,0x40 };
S/ S* t# |+ F1 D6 w- m( G( G8 E: O0 K/ i( H" m8 @! ?
* k* x z* z6 ^, X. ?0 n
void delayms(uint xms) //延时函数+ B3 \/ g& l1 i' K( m
{ D+ B0 a- H( N2 g
uint x,y;# G; ^, L- D% B8 z2 X+ _" |; ^
for(x=xms;x>0;x--)
1 K3 u) }( f) K, | for(y=110;y>0;y--);
# v0 G: y, F- e3 V0 [( Z}5 ^6 K/ Q5 D6 g0 \7 V K* q
8 e9 f$ \" _) p, C! p
' \3 a: Z) ^2 w! M1 X6 d# i/ v4 p! z m2 E! S3 I
3 E! R8 g, c( O; y2 W) g5 ]
void keyscan()
4 b8 D6 q! G& V5 J1 ?* l3 @3 Y{* f! `3 |7 S$ Y9 K9 X4 P4 O4 z( M1 V
uchar temp,temph,templ,k;
9 D1 O; z& F) |0 [ P3=0xf0;
* m/ R4 R" w9 q; @( F: L temp=P3;
" t. [+ ^1 @& {6 T% D6 X temph=temp&0xf0;; \8 A6 x, K+ g: d U
if(temph!=0xf0)" H* \' [2 J9 S" N0 Q. }4 L
{# D( C8 U4 s# d* B2 e, k, q; T
delayms(10);6 N" q) @$ i( V
temp=P3;
9 g' X7 ? `8 [( D0 g temph=temp&0xf0;
7 Y7 X0 h8 J3 f4 rif(temph!=0xf0)1 F3 i* S0 o j; B% q
{
$ ?2 x# R5 w$ e4 o- T P3=0x0f;
" o7 _# @& W5 ?1 O temp=P3;
2 L; C8 ]; x2 e. h* v- h& P2 q templ=temp&0x0f;
* h+ g* r" L3 [ J& t k=temph^templ;# i0 G" V3 Y8 [4 \& |1 _& ?/ ?
switch(k)
4 s! Y! h2 t( ]: ?: i& [- K{9 G$ Z) t4 t1 L" c
case 0xee: keynum=0;break; //数字0
% t' |" S% D+ u! E; P case 0xde: keynum=1;break; //数字1
, r9 x6 B2 b( g: W4 O! {; c case 0xbe: keynum=2;break; //数字2
" D) ^% I& ?3 c case 0x7e: keynum=3;break; //数字3
+ I! c4 d) a. {* C, Y
. K7 g: k, u) C2 j; X% u; f% o
* b. o- ^$ `8 H; G. ^' P case 0xed: keynum=4;break; //数字4, v$ Z, z2 _% Y6 t! e
case 0xdd: keynum=5;break; //数字5" W' B, L4 h) y& q+ ], h
case 0xbd: keynum=6;break; //数字6" _( n' n- J2 ]2 ^- h. Q
case 0x7d: keynum=7;break; //数字75 t% j0 n# H6 p. ^# p
* ?+ J3 N" d: |( b" W# U
, ]/ @: j- O3 t2 r- K case 0xeb: keynum=8;break; //数字8
: Y+ w1 i$ e h, }' q9 Z/ N' N case 0xdb: keynum=9;break; //数字9+ Z3 S' W7 s+ M l( [) B
case 0xbb: keynum=10;break; // =$ P8 a B- j8 f& g6 {& m
case 0x7b: keynum=11;break; // 清零4 g2 `3 ^. M8 q
. H. O4 S l% S0 d6 G1 ^6 k+ z7 M* B! k8 F
case 0xe7: keynum=12;break; // +% ^" R$ H2 T/ `
case 0xd7: keynum=13;break; // - 3 Z7 `. u l% [' L6 i
case 0xb7: keynum=14;break; // *2 i( B* |7 D7 s4 |7 b6 S. l
case 0x77: keynum=15;break; // /
` Y* P& B4 Q1 q0 J}
6 }( T7 R4 o8 F4 E* l8 B% B/ uwhile(temph!=0xf0)
9 b3 |5 F5 I( D3 {* g{# G0 s0 w5 a1 O6 E4 Q. k# I3 e3 M
P3=0xf0;
: o# w# j; h& t, u- T4 C temp=P3;" E3 f5 @* f, \
temph=temp&0xf0;' c' F! u8 d% z% s( t3 d+ v7 _
}
+ F" L. S0 ^ \/ k}
% R* P1 W/ `" P# }3 V- z0 N}
, r2 Z i( m% k0 X9 x}
1 K0 T0 n/ [$ I
7 l$ @* ^5 v, i8 `! D2 O
5 j$ ~6 r. b( U; t. `% h$ j* Mvoid display()
o! I! t$ @; u{
! M {4 n Q5 G. t6 Q/ qif(displaynum<10) //显示1位数,0~9
! u1 E6 X. E+ i. s5 _4 i{7 ]) H1 T% v. S4 @1 e, b& B3 X
P0=0xff;1 [( f; j7 S2 m' L3 ^
wela=1;# ^6 X+ [$ x4 k5 u+ y2 V2 l3 J
P0=address[5];3 Q Z, b3 m0 q* q' m9 }
wela=0;
8 X5 Q4 y, i9 s; U
k4 a3 \0 X( I# X, o! u. N) d, W7 a) c' P- p5 m# y$ ]
P0=0x00;$ n, A2 Q4 [" j W: v' X
dula=1;) D& p# n# ?& f- P/ u: }( d
P0=table[displaynum];6 }' ^. Y3 p6 Q- f' g
dula=0;+ i# n, q, a2 ~; P7 H- r( p
delayms(1);8 ~, U) _$ J8 {9 L8 Y4 L8 d6 M
}
+ S$ e, y. I. d" T9 c Z$ @2 Melse if
& L$ n( ^3 ~ F: x7 V(displaynum<100) //显示2位数,10~99
% s, _* g0 o0 [, i{ i7 y& q; `1 Y1 x; ~# Q3 ^* {; g
P0=0xff;9 z% P ]4 D$ Y
wela=1;$ N0 r8 p" Y. S0 U5 O# _
P0=address[5];
9 _ Q: b# ^$ U' h% P& E* [ wela=0;
% P4 k. L% H0 m& a8 h; `1 {# J1 D* A3 |2 s
8 T( p% x' x9 p6 y9 v
P0=0x00;! ?2 @, J$ j- O3 M( W/ M* f
dula=1;' d) J( Z/ K/ j5 n( z0 v
P0=table[displaynum%10];. h- b6 Q! B. b/ U
dula=0;7 H- ]0 _/ \* A) C2 z
delayms(1);
2 K+ B! x$ K# I2 o( V8 M
6 o& |- q9 v4 r8 J6 f) W f: w& ]: T2 E" `' t; w
P0=0xff;5 m5 t$ s" g. q% N. f6 p: g( Y( i
wela=1;) _- W7 f k- S2 D& u' I
P0=address[4];. J1 o0 A3 {$ C% p/ ?
wela=0;) i3 a# O) \9 n: f: y
+ _8 Y; A" J" C& W0 P4 E
2 o; U/ _( v3 ^$ h; E P0=0x00;- ^: g3 ^2 w1 Z4 q7 E1 q' M* N Y) J
dula=1;" x. n& E) N9 q$ k, p
P0=table[displaynum/10];
* Y0 a8 S( u; j1 G; N dula=0;
3 m' h. ?4 J) \' h- Q( x/ w delayms(1);
' Q" D1 b, D/ y3 G8 |+ v# E}
/ \# ~. ^# N) W, a" K7 delse //显示3位数,100~9994 n9 w! x6 @/ k- Z x3 e
{; t& B& T4 L; T2 l: t' j$ E3 d
P0=0xff;
( \2 r: ~4 F( A wela=1;
) }: H6 |0 c3 \: Q$ ~ @ P0=address[5];
' r2 L0 L# `4 x- b1 p/ W9 o wela=0;. s( H$ T s0 t3 H* K! F4 F& m" N
1 l1 y3 _+ @( D; S/ D9 f
+ p. U& L! }, t( n$ b P0=0x00;+ g' i( ]: K. X3 b7 ~! D* G }
dula=1;9 ^4 }! t$ b0 j
P0=table[displaynum%10];
# s6 U1 `/ a" Z$ @" [ dula=0;1 ~& n5 A8 q( s. [
delayms(1);
, ]* k2 F8 R' }" O0 C8 l$ H( Z) n
/ t# _# a+ E; E/ {- ` P0=0xff;1 p. X& e1 u# ~* H3 n& u9 E+ |
wela=1;
' c; Y1 P4 t" r2 d1 t P0=address[4];8 s1 n% G# v! Z% d! t
wela=0;7 I: P* U3 h1 L: l) q: ]
. b* s! N9 B j& |5 D
5 r, C" U2 M0 [" e' k" k0 T J P0=0x00;
2 Y9 j$ O" A- I# L8 U+ E* D dula=1;/ \8 z4 K9 z- t$ W2 }
P0=table[displaynum%100/10];" @! e8 l0 ?% e, |& C, [2 G5 Q
dula=0;2 ^9 a2 k2 V1 K! A, `3 y7 x
delayms(1);2 k8 @: ?" ^% `: b8 L
' Q) O2 Y+ Y6 T* x! X
+ C! E( H/ o) M1 K! _7 Z' F P0=0xff;7 y1 T9 @) ^; Y9 Y3 X: z
wela=1;7 q( @4 ]" `) J# l/ T
P0=address[3];/ ` \% R0 _( K; @
wela=0;% H% M3 |! R# h3 m- I
4 @: @; `, P; H7 o6 U( c
2 d0 n3 m5 W6 o( ^# `0 F$ C7 k P0=0x00;: J0 N9 }. U) i" q+ J- w
dula=1;7 a) c- B! H$ R
P0=table[displaynum/100];& {/ U& `% N% |% h7 s8 w% a4 m
dula=0;8 ]6 }# F8 y' E/ o. h# o1 Z; R
5 e. C' i6 i" V! j$ D$ c
5 K# C( u- W) S9 f' u k wela=1;
% Z& o( e1 j( G* t7 n+ _' Y( L. k P0=address[3];
9 m, E: V+ a5 a( Y wela=0;
' P$ N) L' _; ]3 D0 O6 E1 k% `4 r! d3 }
5 m4 N9 z2 r* Z- H1 V; c
P0=0x00;
3 z, R3 N& P4 ] dula=1;% a; t L* D8 n8 [ o% N0 C
P0=0x40;# \$ v8 S. z" P2 F
dula=0;1 ]) t8 Z. M( `0 A
) s9 {! z. I4 M. j, A( ?* Z( h, F0 z4 G" K
delayms(1);
; C1 Z7 R. `+ L+ B/ }" F}
9 T* @7 C6 T# \- w8 \- d( h+ M0 Z! B}
4 k& y F. U% T5 p( t0 ~
z/ A- U& E. n6 `. ?% z% l6 Q9 s9 k3 u+ W/ F2 u. K
& k/ |: J% z0 b- i8 u* `
8 T( J+ `2 q9 B8 Y% G" G
6 x, a1 o. v' l6 {2 O* i* t" J) Y* f3 |4 M
3 Y- B; X2 _8 \; W' j# h: Z! V: |
3 f" ^: D; P6 K/ z- A7 N; H: Nvoid main()
& X+ l! l8 o6 r5 G{8 ~+ I- s! z1 p7 l1 z5 ?9 T
while(1)& N5 p" E( S4 i6 [9 b: e
{
0 r/ u8 l( x# r3 @keyscan();
" D0 T' v9 ~2 s y# iif(keynum<10)
- d. i0 }: v- M. ^- p/ a( s' Q2 g{
7 _; Z+ h" V, `7 d* xif(flag==0)
; x2 I7 k r* f C* |' r{
( r$ G" o& p0 z+ ]8 K9 q inputnum1=keynum;8 e1 Y' K" y6 x$ `" W+ c) E
displaynum=inputnum1;* U1 C- @5 ^) m/ @
}
& L( t: f5 M7 Q3 }% t if(flag==1)
$ U# c) J. L; ?8 _% }1 Z# i& B0 ~6 ?{2 j# N- z5 [* o% @' M2 g- l
inputnum2=keynum;
6 K! [7 r# V3 ^ displaynum=inputnum2;9 `" E# Y% W4 @! \: S
}
+ w, B/ {$ Q5 e( t, ~! l: P}
, e! s1 c; H: X8 z4 ]
: ^" O- Z- E, p( T3 V
6 m' O, X3 m# t# e9 r. z% H5 iif(keynum==10)
: R) e- j5 f( ]! V: ?+ |{( s" y8 ]0 U: d( s) \: z
switch(mathsign)* ~& B$ K( s( Y- J9 [2 r6 d
{ Z* [$ t/ H5 J& n: a$ ~
case 12: outputnum=inputnum1+inputnum2;break;
; B9 {% L! C: k3 C- U case 13: outputnum=inputnum1-inputnum2;break;
/ c1 L6 v- b" {) Z5 h! f A* y case 14: outputnum=inputnum1*inputnum2;break;$ A$ R0 B$ g7 B5 t
case 15: outputnum=inputnum1/inputnum2;break;, q; Y9 B/ `! ~, B5 X6 H/ ^& K
}
8 _" Q, W/ p& c' R' c6 d! }! V, adisplaynum=outputnum;& P" z7 t O9 ]( f6 g0 G
}
8 m6 G6 _$ `5 l* ?( M3 I. J3 M- P5 [1 d* }/ Y2 v6 X
9 N% |0 L1 R: ?9 M2 H
if(keynum==11)
" u( D" E% P6 V2 X6 A. j{
+ N7 S) g- a, D& e6 H5 _" o- u displaynum=0;2 q2 E/ D$ O: Z# F4 k; C" B
inputnum1=0;' o" ^7 n$ T! X6 {5 m L
inputnum2=0;
7 k- J0 @) V1 o' h" ?1 w; M outputnum=0;
, L/ e+ n: L+ L3 o0 l flag=0;% D- S' f% Y6 N) C: q# B
keynum=16;4 c5 r9 e- T' |8 o
mathsign=0;
" B7 B* C. Q' x& ~1 C; T}
3 ]/ J- @- H' w: Q! h# u
# I; T* N& V' {+ g+ f: F- W6 M4 m- o6 P3 b5 |
if((keynum>=12)&&(keynum<=15))
I) D6 p9 O7 L* b, M$ Y( F{/ a: f' G) f7 J% d1 y; \ J
flag=1;' I& S0 R; G w( W$ b4 v& E
mathsign=keynum;
& F" x3 ^' n% T, }, Z$ }* t displaynum=0; 2 G% K1 T: [; d0 `
}0 G' I* o: G1 q+ S
display();
0 l8 {+ z, z, S* w}
( `# ~4 i& {9 ~, i& |1 ?1 r}0 g/ V8 }4 E# {1 a. d) t& |! f
|
|