|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问大神这个程序我怎么改成可以进行有符号的计算啊 可以计算负值
3 e( |% ]/ i2 `4 T3 ^
/ o: A- l: V# H9 R" { #include
8 U; {* h- ^, M4 y#define uint unsigned int: y( W- p# X# @ `) z; R/ m
#define uchar unsigned char
/ B, P! ~' M! D. O***it dula=P2^6; //段选引脚
6 b* g6 T9 f! C/ O***it wela=P2^7; //位选引脚 ]' ~8 e4 J+ W, A7 m1 o: F7 \
uint flag,inputnum1,inputnum2,displaynum,mathsign,outputnum,keynum; - A% f% N" v8 Q7 h
uchar address[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //6位数码管地址数组8 C+ G/ a3 D3 U# f6 E" }
3 i* }3 U2 r5 U& ]
8 j b! S. [' P5 f0 m# {: E
uchar table[]={0x3f,0x06,0x5b,0x4f, //0-F共阴型数码管字形码5 S) v `% }* H' k5 V' j
0x66,0x6d,0x7d,0x07,' W" `' K* B) `" y
0x7f,0x6f,0x77,0x7c,
: _8 K: o: X% D* B0x39,0x5e,0x79,0x71,0x40 };; m$ l: Z4 t1 ~- B* T
0 ~2 r0 u) G$ m# h; K, u
% |6 U" K ?" h- \! J
void delayms(uint xms) //延时函数0 ^8 @) k1 o, G) ~2 V
{
. p6 |5 M. Z+ u1 D3 buint x,y;
9 v# r% _# r F, s; zfor(x=xms;x>0;x--)- M' T5 J+ L$ d# @4 b
for(y=110;y>0;y--);
/ S4 `% `' R* R- m9 b}, p; B) n* F8 E$ l
( N* o# v# `" K
2 B% b9 Q+ F9 [) H! t6 _
6 ^: p) B7 ^! c; ]- k8 E; K
2 s) B& o# X& N& l, n+ M) Z( ?
void keyscan()
2 L( J( V& |% v/ V9 f. i' q' p{7 ^7 L9 d7 G+ F F% @0 l
uchar temp,temph,templ,k;
* v+ \ P- @/ R! f/ l7 \ P3=0xf0;
' y7 [9 g3 |) A0 g6 L7 {# H temp=P3;/ x: H: L/ g, Y* Y$ O, X Y9 f
temph=temp&0xf0;: O! h- X7 p8 j+ B5 W
if(temph!=0xf0)
6 G: Q e# F. m5 a- m6 b{
7 U! D, @% [ u+ Y: [% Y& a delayms(10);
# P) @. n3 B; ?% b temp=P3; n# ]5 O* `5 ]8 H8 a
temph=temp&0xf0;: W4 N. q! v1 ~9 |6 P
if(temph!=0xf0)
( o% e6 d) C+ G! ]{
9 U9 Y6 K! g1 n P3=0x0f;
8 }( o" }( X( A' ^ temp=P3;' d' l) X) U3 U/ i2 v& h) n& @! i
templ=temp&0x0f;; l/ y! W9 g B$ u! G& E7 {- f
k=temph^templ;
c: {. d+ z2 g6 P0 aswitch(k)2 p$ T( D# _5 e R2 C6 w
{$ ~# u# H9 i! C2 J1 h9 ^% y1 w
case 0xee: keynum=0;break; //数字0) c" v% e) @3 C" ^
case 0xde: keynum=1;break; //数字1! A+ ]; m5 i: }( Q% _
case 0xbe: keynum=2;break; //数字2
% \+ [- ^# i8 ?- u, Q case 0x7e: keynum=3;break; //数字3
7 O) u1 r! j+ j5 r$ }0 @6 D' e9 X+ g. s
: Z0 a. |. C3 K0 X
case 0xed: keynum=4;break; //数字4 E. x" N6 O8 Q) W
case 0xdd: keynum=5;break; //数字5% n8 n2 V8 P* _- L7 t7 g x* }
case 0xbd: keynum=6;break; //数字6
% v* m- Y8 j4 t% c$ i case 0x7d: keynum=7;break; //数字7- m5 `) c. ^+ V, c# t0 c" o1 k
4 V9 T. Q x+ c& y9 X# g7 X
7 o9 U4 M* i [8 y: ~& r case 0xeb: keynum=8;break; //数字82 X! u# ?6 k7 J8 n6 A5 Q9 a6 n/ \
case 0xdb: keynum=9;break; //数字9! q6 ~9 x* I8 Z8 W& V8 D' l
case 0xbb: keynum=10;break; // =
( S# P8 J0 i# y; n3 S3 {- T case 0x7b: keynum=11;break; // 清零
8 O1 s( x! ^7 Q# S5 w
9 F" ?* C" H, J; J' q
: A, s8 T4 D3 [) T. ~6 a5 Z5 \ case 0xe7: keynum=12;break; // +; y5 ~! Z5 ~) ~$ _6 F
case 0xd7: keynum=13;break; // - 4 Q" F' y8 }' ~' Y" K2 Y0 b
case 0xb7: keynum=14;break; // *3 Y6 B% m: o! f- p. o5 Y
case 0x77: keynum=15;break; // /
$ r3 ~* i5 z, X/ ^) E9 V}
2 r: }9 g, k- ]) X# s1 {( b# P- [while(temph!=0xf0)
- ^6 q( ?5 _+ K3 `+ b7 K3 `{5 ?% F/ Z3 i+ s* O0 n* S
P3=0xf0;
) t+ [+ O( h& P$ c! ? temp=P3;/ M, `2 O3 x* P) j% o. L5 X
temph=temp&0xf0;3 E7 T: I+ x' w
}
2 Z3 T1 |, I4 c: V}
' B7 A3 M5 u4 p, [6 o/ s}* t# k2 S4 c( v5 ?3 N! T
}
" S% U1 T7 W% _9 t2 N+ ~& o1 b8 E8 l, q; H: D* W
5 R0 E5 w1 c l+ bvoid display()9 y8 I9 A7 T" T5 p: l/ v* \' L
{( t5 {2 Y3 S8 A( M$ _
if(displaynum<10) //显示1位数,0~9. z2 `, I% R. z7 ^# x
{6 |% r* y' n9 T0 ~
P0=0xff;# M. N0 R3 e. h% S$ U+ c
wela=1;
* A& V6 m& C c( I9 ^# E8 Z& r( _ P0=address[5];
! o0 h9 f# x% v& ^! `: }/ m0 _ wela=0;" [6 S% L( S9 k: {8 u6 H- C
( S5 v; e! a; I: K8 W
% p2 L9 k( O; s P0=0x00;, u: {' V8 r, {/ d F
dula=1;
& d9 F4 Y1 b9 t1 d T; R P0=table[displaynum];
( y; F0 o; ~6 r5 s; ~ N/ r dula=0;0 e: v2 B9 b `$ X) f
delayms(1);
% Z+ G' u' ] o1 a}
3 } G/ a" W7 d! f0 i( `3 j3 j9 Zelse if6 e' D/ Y3 v, s- N7 m
(displaynum<100) //显示2位数,10~99+ C- p1 A" w+ u' w6 o. m1 o0 b) \& z' M
{5 X1 L4 `! _3 e0 t
P0=0xff;" _3 N8 Y) A& ] \
wela=1;
8 e, q d( p1 e* } P0=address[5];& a0 W0 K6 h* x" k
wela=0;
: T$ E0 V3 E, s. c
2 ~9 G7 F+ m2 x" T1 _5 e
9 I! D$ D" n1 A; T/ s P0=0x00;
T2 a$ t1 ~' V5 w7 I dula=1;4 C: q' X4 Z7 D5 v/ x ^+ ]5 `
P0=table[displaynum%10];& L+ j. k$ U% j
dula=0;
$ u2 p+ y( v! `; m. [6 e delayms(1);
/ x& e* m4 n5 _* Z
! V) e/ D u( Q y) Q
4 S9 D0 @) O% | P0=0xff;
Q5 o, U8 E. L wela=1;
. [" h" Y+ d7 O+ X w. p3 Y$ n P0=address[4];0 g6 [, L% S7 F
wela=0;+ r' [: J2 \ K/ n% X
5 R3 r( @* A9 i2 l
5 |5 T+ @% x, d( X" [8 ? P0=0x00;
: q; z+ a W1 e1 B dula=1;
7 I! d3 q+ G* ?6 y3 ~, ] P0=table[displaynum/10];
/ Y+ {) y% [& ]7 f8 E( g% Q. z dula=0;
- F" [2 V* h- v3 L6 C) A6 S delayms(1);
+ X h. x- S v) W}
, q4 `0 a3 Y9 D X, E+ t/ kelse //显示3位数,100~999$ {' v( G' U4 d1 X* ~
{
' {" j" f( d1 m, ?$ p P0=0xff;- G# S- ~* {8 j7 n
wela=1;% @! X5 F/ \( p: J3 @& ^ l: w. Y
P0=address[5]; N- e& z7 [ @5 }$ N4 ] J
wela=0;
+ y2 O/ a) k6 I, y
4 h6 y! _3 c+ V# w" U% O& T. b- U1 C1 V6 A
P0=0x00;3 x: C$ O h- g
dula=1;6 X5 K3 c3 V4 |
P0=table[displaynum%10];/ \: ^& T+ V5 y& @ c! L6 Y/ K) R5 O
dula=0; ^2 ?8 U, U* h7 H" _& I, j
delayms(1); 7 |, Q7 F6 l, @; v0 g( w [
" G/ d% {- [: G! ~3 L) J
% _, j& I$ X3 }- M
P0=0xff;+ K% o2 s: A2 _8 q% \
wela=1;$ u7 J- o9 N2 s8 ?5 M/ }% o
P0=address[4];
! T+ K5 | O# O3 q wela=0;
+ q% n7 P/ X( S5 b7 n6 F, [, y* @% D
7 j8 d8 v* D. Y/ V/ t5 M$ ^6 ]1 w P0=0x00;
7 v3 a+ Y8 {1 V dula=1;0 |% \) |3 J, _/ n. K6 X% k+ L) c
P0=table[displaynum%100/10];
% W. T% [; h% K5 L! ]3 S dula=0;
- m1 E: V2 ^! ?& N* W delayms(1);
! @5 Y- {$ B8 {8 I
3 u8 M* o6 W: C- c( D9 B& n' o' L& |( r9 [
P0=0xff;
7 w+ o: R* p) B# b wela=1;% T B( ]- N, X0 F
P0=address[3];. \, J- ]1 Z' U- X
wela=0; q( ~# ~- f* y: ]) d( T# | \
9 z2 x% q7 u3 {4 ?
6 E6 T* A: z3 D4 W- {: ?( d4 \: d. E
P0=0x00;/ I0 O# c& @/ S! K8 h8 l9 w' l! J
dula=1;
; T0 ^* L( r+ r ^) y9 H: N7 X P0=table[displaynum/100];1 L0 U$ z- {: u" O" C) I
dula=0;- I. X& X# o: y2 z3 J9 ?( x
- l/ `* r- c6 v
! z2 Q5 l7 ^( g6 |
wela=1;8 v* i# O/ p' p& h
P0=address[3];
2 {7 G: v8 h( ] D wela=0;
5 P& B x- z I' q4 g' A7 Y, r0 D. k i# S( b% R
N2 f# T- z( n; `+ c0 X- r P0=0x00;. s1 c. P+ a# Z# l* o- U. Y: A
dula=1;
7 h+ M2 k2 U$ L! X" a1 t$ P P0=0x40;
1 Y; X7 x" ]8 B+ H; O1 G0 A dula=0;
: l6 h' ?! [4 o: C6 u
; ^+ k& `, S1 d" P! f6 N9 {& @* m) q: s
delayms(1); 5 A* U3 W [9 w5 V, U0 z3 X7 P3 o9 V+ i
}
! k! ?0 v4 h. M3 [7 T}
. B( v) l% e( @
, X% u& @; P" _* P; Z% t$ f, Z! w1 w# X
% G/ I0 V Z; K
) z. F$ E5 t! L9 J% f: j6 F4 B3 Y$ F
* { D0 X8 b# x: e( }1 M2 U
0 ~6 R+ g/ e: `0 d/ O5 _7 M0 u/ R" C) X
void main() a1 a5 d/ f1 x5 I+ L
{) X1 j% I9 Z$ W& v5 S5 r- x) D
while(1)
, [, `, O, m1 \( r1 v$ M! x{ V& q$ a8 V, } o6 _
keyscan();4 U) C/ a: g$ Z7 k2 n9 ]% }
if(keynum<10)
/ @, q7 R, O$ E' V; Q{; s2 x6 G6 j( q' D- {( E
if(flag==0)- M2 i* m1 D( C4 t7 A; h, Z4 I7 S
{! L3 @9 a0 n" ]0 w% T3 f6 H
inputnum1=keynum;) O: y- H3 V! G7 G
displaynum=inputnum1;+ e* |0 H# R4 L- l6 p5 L
}
1 }7 E" M5 P) N/ k$ ~ if(flag==1)+ {7 a. ]$ W$ S- H3 {# D1 W! o
{: {! O" z3 h" G8 \3 Y
inputnum2=keynum;6 w; \% \, V; ^3 s( X3 I' M! o
displaynum=inputnum2;9 i3 T2 H& _8 o' J/ b* q
}
) V# J9 G+ [& R b}
' \0 r0 @1 X- _' ~5 |6 o& D* \) O2 s1 I
7 Y+ C9 D) J, u# E5 b. P
if(keynum==10)& d8 C, v* Y! Q' f3 A
{2 r+ H. G/ C$ T3 P* N& v
switch(mathsign)4 v8 L% X. J) e9 v& v
{
' Z' b& C0 W# n- K$ ^ case 12: outputnum=inputnum1+inputnum2;break;2 q; t5 O& E0 Q% m4 k/ e
case 13: outputnum=inputnum1-inputnum2;break;3 a8 W. P/ S2 O- ^5 K# z) t0 W
case 14: outputnum=inputnum1*inputnum2;break;! l, e L" k5 q4 y
case 15: outputnum=inputnum1/inputnum2;break;
) x" ?' w+ |. K) Q}
+ [: [) x/ [" m! z2 A* ?: ndisplaynum=outputnum;0 w9 s t3 Y6 j
}
5 L% _5 b/ G* ]" J( E i) r! T- u! r5 o' `
- y+ u& ?- e8 f8 ?$ P
if(keynum==11), K! Q% W% A' {* T" e
{
, x( v7 X8 l- _$ _ displaynum=0;
! ]! ]2 t' g5 l/ @% ] inputnum1=0;
3 j1 Y+ w4 `! b$ G3 G/ s+ T inputnum2=0;& k- J& Q; f$ |. w/ X: L. W
outputnum=0;
3 h/ I" H# c0 n flag=0;" j2 q% h( q( F1 v+ _0 N
keynum=16;
) T6 j! a* X2 b8 [8 j r& M9 h* ` mathsign=0;
6 m& p, f/ X9 d: n7 [% L8 h% N}# G1 D! D2 q; @' T6 R8 }
1 h2 d5 z2 q' l1 g" ^( z% W
0 J$ Z9 _; g2 ^
if((keynum>=12)&&(keynum<=15))
2 b6 q9 k! k3 N: w X* I7 y{/ F2 C4 _) _6 ^5 l2 T
flag=1;: k4 [& ~8 `" U M+ F' x
mathsign=keynum;
9 ^1 Z( `" ]1 ~7 B, R0 b3 b displaynum=0;
+ E, O2 F. `4 w) _3 J2 R& {}
$ p, w, S1 A c5 ]0 ]+ ldisplay();7 M- r# c; ^6 i3 Y8 j9 E
}
. n, t6 @; g/ x, u}5 T( Q1 T* G1 m7 ^5 m
|
|