|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问大神这个程序我怎么改成可以进行有符号的计算啊 可以计算负值, _0 k6 d1 l; S4 m) s
/ K8 B( N0 |0 c
#include
; K4 P7 d' L2 L8 J#define uint unsigned int4 l6 U% r1 t0 \1 a% M0 @5 n
#define uchar unsigned char' C/ Q$ E; E3 `4 h9 V3 \- U b
***it dula=P2^6; //段选引脚/ D1 Y$ n3 i7 r5 Q$ k5 Y
***it wela=P2^7; //位选引脚8 x4 G% b4 O% H- e* i
uint flag,inputnum1,inputnum2,displaynum,mathsign,outputnum,keynum;
& I: e; P# w- y2 j% p" N0 A! \uchar address[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //6位数码管地址数组
* `" N1 S' s6 G+ f) K0 {# L* f& z" X2 t8 R- r
8 @- W9 _: E, `( E& D
uchar table[]={0x3f,0x06,0x5b,0x4f, //0-F共阴型数码管字形码
% B* G ~0 w( O+ V/ w" _, e- \ H0x66,0x6d,0x7d,0x07,* e8 j1 r$ |$ \ {. x) C
0x7f,0x6f,0x77,0x7c,
2 Y! g" A9 L$ _0x39,0x5e,0x79,0x71,0x40 };
, C& t6 Q" g& @8 c% M3 V
: I7 u& s" u# P7 L2 m+ a' R7 l& {; g1 G1 N' Q/ G3 r' `8 w
void delayms(uint xms) //延时函数' Q; A8 ]) H1 B) X6 ]" E
{/ L$ |1 _% q5 n
uint x,y;' }8 y: r! Y6 q( s
for(x=xms;x>0;x--)9 v9 Y3 H. F2 J% u
for(y=110;y>0;y--);
Z+ j( n* m' m/ i) o/ u}4 c2 v) |4 }% r
K3 t0 C3 |! Q7 Q' t$ z0 \8 f8 R9 y% o4 ~4 x
- y7 L1 D/ H8 `! k1 s: U: S7 ~) X! L
4 u5 ~2 l( v3 v9 a9 Z8 a6 W. C# A6 X
void keyscan(), @1 e* O$ z2 B! M4 e+ r7 Y( h
{+ n- F; Z" K: J, n) n
uchar temp,temph,templ,k;5 v! T- {, K) H5 V9 p
P3=0xf0;
s9 V- F6 F$ S! F0 P temp=P3;
9 S. Y$ l3 r' ~& u- J, y temph=temp&0xf0;
7 L7 L7 p: R2 U. R' [if(temph!=0xf0)
, L. Y6 j5 T7 l' A2 }{
9 g* @: A1 z* V9 ^$ J delayms(10);
. C0 V( O1 f- r temp=P3;/ A+ A. [! A9 x5 Z8 K
temph=temp&0xf0;
- X* a& e8 r. R$ pif(temph!=0xf0)
* q, A% m8 W' m8 i* I{( w6 U' M8 }4 D& _% a1 E
P3=0x0f;
- T. [. U6 y/ s% }+ ]7 Z6 G temp=P3;
0 Y$ q- O# Z% I- H4 `# d+ @# X templ=temp&0x0f;- w% Y. E- y3 O( J. i
k=temph^templ;
$ u8 W' G3 h8 b2 `. Wswitch(k)2 Q$ K* U! R; r) x8 _
{- \& Z" [9 e$ P" m9 v- t6 k; s6 v
case 0xee: keynum=0;break; //数字03 G9 ?, V1 ~1 B' b' R0 Z
case 0xde: keynum=1;break; //数字1
! m5 H) I2 s& F- f case 0xbe: keynum=2;break; //数字2
6 b% v$ [2 r/ \/ t7 u case 0x7e: keynum=3;break; //数字3
0 h# {1 P) ?7 I. s+ j! [# z7 i. G9 v
$ w8 Y7 m# J+ M; z
case 0xed: keynum=4;break; //数字4
$ F7 p% m7 O8 i5 A case 0xdd: keynum=5;break; //数字5" B( U/ q4 ~$ Y3 H
case 0xbd: keynum=6;break; //数字6) P2 f' b- E- j, T# p `: n
case 0x7d: keynum=7;break; //数字70 Y: k3 ?% b8 H9 e
; c2 M5 z: k3 f! a* i) N: Q, i5 O, s# }/ a- a
case 0xeb: keynum=8;break; //数字8) ?; j3 D- a9 k) ]6 P& K) p2 v# m
case 0xdb: keynum=9;break; //数字9
m$ c/ o; Y, N( K" N8 p case 0xbb: keynum=10;break; // =
5 N2 f! U( V$ } case 0x7b: keynum=11;break; // 清零$ s. L0 }% E$ h, T2 Y. I
+ N- S" @9 q8 n
& |- v1 `1 @/ t case 0xe7: keynum=12;break; // +
" u) j9 j0 u. x5 M0 {' ]( N case 0xd7: keynum=13;break; // - # z: `+ O3 ~2 w4 x6 }* F
case 0xb7: keynum=14;break; // *
& k6 C- @" ?& z case 0x77: keynum=15;break; // /
* b( ?: I7 {* T: c5 N7 L* O}
" C# {; V5 `( ?: j) @while(temph!=0xf0)7 |. b$ b H, t- [( ^! S8 h
{
! O8 \% b: J9 w( D7 u, t/ C P3=0xf0;) _+ D8 D z" e2 C
temp=P3;3 A, V, y' h. b2 A) p
temph=temp&0xf0;
2 f# k0 ?: o, u2 q} 1 m1 a/ Y$ `. v p- v
}
$ i/ w0 C9 f" l}
Y6 R) K6 ~" p}5 r0 J+ v/ }$ h( Z% T! S L
8 ^* L+ ?" H: r) C; m! }! s+ l$ H4 L
void display()
& v" ~/ t1 d5 _; f{ F( t/ J4 X: h% t& I
if(displaynum<10) //显示1位数,0~91 U% b8 g8 e2 N: |, z, Q' Q
{
3 R' F4 r5 o% T. p3 Z2 {% F P0=0xff;% C# y$ o' s) m3 i" ~$ l
wela=1;2 R& b ^% `1 h4 e1 m9 V" T) r4 i
P0=address[5];9 `% Y5 K M1 H' b
wela=0;9 k' b5 |- Q- X. O/ c5 o7 K
& P: }, e8 E5 W) Q ]5 Y: O) m
1 G I% a; p3 R5 {" U P0=0x00;9 }8 j; {3 |3 `+ {5 C
dula=1;
+ b* v9 D" t$ ^( N5 @ P0=table[displaynum];
( ^* e; _4 i; T, |1 y2 S! t dula=0;
' K% M% c) Z. R) m delayms(1);
6 Z5 A9 o( k1 V8 Y$ C4 Q. i" ?}: b' i, h; a8 m0 R$ ~& ]
else if
7 u; u, n* W$ I( g8 M0 f(displaynum<100) //显示2位数,10~99( K; T _; A. L5 i8 \! q8 Y
{
+ U* s/ D: t# \9 \0 { P0=0xff;9 M1 x, ?, l) K' ]
wela=1;! \) T6 \4 E; t7 V* b4 I
P0=address[5];
0 z6 R" I, P: h5 c7 [3 T wela=0;0 A2 \% n* r; r( E. m7 D
6 V' ~2 n. F& O# s
+ H- i2 I2 ]3 t3 \* O4 M P0=0x00;
$ ~: D, Q! G, V! I* u dula=1;
& ]8 i3 h4 A/ u+ R) f3 l P0=table[displaynum%10];
* n4 J9 L* Q* D0 ~ r, U$ a dula=0;
0 i7 w8 b$ F- A5 D delayms(1);
; C3 T. E9 G6 ?8 r, M
; L: }3 t/ }, G0 F8 i; P2 ^3 s
6 V" i6 f$ Y3 B1 ^ P0=0xff;$ X5 G f( \, x
wela=1;8 O. r$ |3 h0 M3 f
P0=address[4];
7 p, Z" d7 i# p5 k5 ` wela=0;4 _$ S, B! s h0 @! A4 i- d
3 @+ ^3 c1 V% V* Z
) W+ y6 Q: J/ H! v) l3 m P0=0x00;
& y( A( f* e; O0 H0 O dula=1;
, k5 w. S5 O; T0 a& q! V. { P0=table[displaynum/10];
5 ?" {2 c7 ]% @2 d4 Z& ~- Z dula=0;
# J2 O% g% E, K% L: m1 y; ?5 b delayms(1); ) Z% t6 E* z/ I2 W4 y
}
; J7 I& q C7 J U/ zelse //显示3位数,100~999; P$ k2 L8 {; i: t* k, g5 k! h
{! a% u. Z, B' `$ [& I# A
P0=0xff;
- l2 W4 R, ^/ F, M1 k# S7 A6 M wela=1;
& M0 ^' ?0 [( ] v P0=address[5];
3 d# ]8 G. ^, `/ h' V wela=0;' Q6 k1 D' l+ p/ v
) I& V1 h, G! N/ `8 q3 {
, _4 s R6 ^) N2 j P0=0x00;
5 A m; P% G8 `5 F dula=1;3 q( f' n; r+ P# t% ]
P0=table[displaynum%10];
: T3 o( L) ^" Q dula=0;3 A. h3 B: t/ m( ]: W9 i) V
delayms(1); ; K0 X, V; y9 b; B/ g8 O
! P0 q4 M) ?" r" f6 `% t# | E! ~9 V$ z* Z
P0=0xff;
8 U' i$ Z8 z4 M& c1 @ wela=1;6 h3 Y: T1 N8 E4 N; M" b" q% q9 m
P0=address[4];: r$ N7 P8 R3 G+ G v# \9 f
wela=0;
0 t6 ?. q0 V' [. t; C! e+ x2 ^9 ~, M, ^+ K% P
8 _0 _, K5 M* |2 A8 h
P0=0x00;% F' d- S3 {& B/ N: H& B7 S5 f
dula=1;
- Q8 u) w x7 n. ] P0=table[displaynum%100/10];
& h/ S# O# W/ k& d" m, G dula=0;1 J6 }6 w$ O u3 n7 c7 Z% y
delayms(1);4 c6 p( x: ?) @
+ F7 l" z# [) x9 Q& Y' z
6 f( p& N( e+ p* I+ s
P0=0xff;+ l' g; j' L1 O9 e4 O; @
wela=1;5 z8 c( F) v% ~1 g Z
P0=address[3];' V$ t2 q; T1 ^3 i
wela=0;& P3 e0 f+ x- J8 b1 d/ N
+ v0 G& f) F- c; D3 E( f/ d& A) W
+ H1 v: g- D8 L! e; v P0=0x00;# y2 {$ e' q% ^8 d" O( x. F" v' @
dula=1;6 c+ U+ |) E7 g& L4 u5 C
P0=table[displaynum/100];5 g4 @( {8 F- K, B, V$ [4 l/ ^
dula=0;8 f0 Z1 Y. W) D6 b# P1 H
, K1 e* r6 C5 U# q
: P% c5 Q! d& N5 ?/ S) d" U; p wela=1;& B7 S- A! u" M4 m+ h9 A+ y
P0=address[3];+ e- _- n8 L' Q' O B
wela=0;
7 i1 w' a3 E/ k3 D; C9 U; }/ Z& H% N% b2 |2 o3 D& U
4 f- _8 B% C6 I" ~9 d
P0=0x00;
. U8 }' D. |5 M$ }0 R8 E2 z7 w dula=1;. F) Y1 ?+ M5 E7 f+ c+ N( A
P0=0x40;
! I0 N* W& s* j( [3 H% C dula=0;
& Q7 X0 l' D! I7 V- a+ ]3 n( D _
3 s, e# c# U. G
delayms(1);
! Q1 l1 |" u p}
6 Y8 l1 r% K3 n* H8 P}
$ @( g4 X2 `! I( _1 Z+ C6 \# f
1 s4 Y4 U) l9 y/ k0 v b7 U9 P- J
0 R( i& j/ R& ]$ x3 ]0 {& @9 i
% N) } U# ^8 f8 I8 P
0 ]2 B. b' i! Z9 ^3 k" _3 C! R- Q, [9 m2 o) f9 e
% Q; f9 Q9 Y1 _* n, }% L3 I
2 v$ Z4 k+ S# K0 I t6 L: V$ I l6 F, N- L0 b5 V/ o# n' h2 I" k
void main()
* e$ P: K' q& K6 R{
" v% f: s: e) u( F0 {while(1)1 }% A) _/ u8 M( T! O; n/ r
{7 f0 j2 v+ {# E* R) e
keyscan();
8 w: C) V+ U4 D( p% Tif(keynum<10)6 t: @# I7 B' _9 B
{
6 ]+ W# k) A* i4 `+ gif(flag==0)
; P; \9 C: b# w8 v{! Z1 v" c+ J! b0 X' g
inputnum1=keynum;. O" ?- R* h6 Y5 l6 t8 O1 h
displaynum=inputnum1;. U% T# r% _+ {5 q+ z+ U$ Q
} c$ `( u% l% |8 t2 H6 G9 ^) G
if(flag==1)# r8 L9 v( {! U' F0 n( ]# y
{5 T+ U. F( N( ~1 ^4 \3 T7 N
inputnum2=keynum;+ m2 F7 W# v+ s1 e/ v& T# K
displaynum=inputnum2;
( d; C' f/ _, I5 l% j}
& l) t# y4 N. T$ s4 _# [8 w4 _2 i8 S}
6 V) l/ A- a- G$ |
- ~3 @+ `. B5 H4 K( J& \0 B, U- F& E, i6 G; M
if(keynum==10)
9 {/ R1 y9 c/ C8 u n6 q( w3 m9 K{
6 U' x T" V- `1 z' V0 nswitch(mathsign)1 {, F# G Y! ]0 k, F. t5 U
{
. Z5 o3 @: _! p8 g/ u case 12: outputnum=inputnum1+inputnum2;break;" R; Q+ ^: ^6 B" J7 B7 V& s* q
case 13: outputnum=inputnum1-inputnum2;break;- m2 `4 R6 Y2 J* G3 F( t
case 14: outputnum=inputnum1*inputnum2;break;
( O5 k s1 c* w; V4 ~/ x% ~ case 15: outputnum=inputnum1/inputnum2;break;
2 {+ i( |. R L1 Q% a, J* g}
9 q/ y8 N- h& e; o9 ~* _( U7 B- Odisplaynum=outputnum;. x& m; T/ Q1 b+ Y- D
}
# y R& j6 p; |
$ d; w: S1 Y8 Q$ c0 E" f5 p
9 b4 m& \4 r/ u3 E- W4 sif(keynum==11)
: I. y' a& U& B8 z7 j{
' o3 u7 s9 W+ Z0 Y displaynum=0;8 m6 s$ L, u$ B. @0 y4 ]
inputnum1=0;7 D: k7 p# b& D- s
inputnum2=0;
5 Q' W" r/ s4 l" ?+ l outputnum=0;( i% W0 Y# g/ s) t) L* A
flag=0;' H# V" |; L& g0 ^) L# c
keynum=16;
! |8 J2 h( Q8 i- b+ y mathsign=0;4 S4 E. y: w; f4 c5 N: [0 B6 h4 A- f
}2 k8 f% N7 Z3 E' X
% z- P* d4 ~# E3 a/ n/ t3 M
) B/ S5 A+ E, _8 J
if((keynum>=12)&&(keynum<=15))/ y0 \- M6 j& l5 z8 b
{+ r7 K2 P8 z y+ `
flag=1;6 W# g' A1 }. r# s4 ^/ O
mathsign=keynum;
; W& `6 @% P( Y! J/ L displaynum=0; ; S% q& t3 w" i% \* q, g3 ?- ~: L
}
( m! |( y: T# x. Wdisplay();3 o, d2 s( i+ `3 J
}3 y; z. J7 N3 u: O& l7 G2 d2 J
}7 {# G) a- _7 \- [9 k! z: o
|
|