|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问大神这个程序我怎么改成可以进行有符号的计算啊 可以计算负值
) a2 O1 V% w0 A" C, `
* q) S+ ~# [" J" {3 }- r #include
# O# @. |1 M- e! d#define uint unsigned int9 e6 F# d6 k& y
#define uchar unsigned char
* C7 r6 U% L4 `8 _' l***it dula=P2^6; //段选引脚
3 {! u4 N+ {8 i***it wela=P2^7; //位选引脚
. v# b0 |# ?8 q' }! ^: }, nuint flag,inputnum1,inputnum2,displaynum,mathsign,outputnum,keynum;
; P6 `9 y+ r; x* U a- suchar address[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //6位数码管地址数组
" |( Z% y* H3 Q: B+ l e( Y7 I4 a$ ]
/ ^( a# ?! E9 p' r' G' muchar table[]={0x3f,0x06,0x5b,0x4f, //0-F共阴型数码管字形码
, h. S9 q: f( m( K% \( |0x66,0x6d,0x7d,0x07,& Z0 X& n; z' g
0x7f,0x6f,0x77,0x7c,3 `' F! M4 T. R, Y% {- i+ F
0x39,0x5e,0x79,0x71,0x40 };/ _- w& q$ k/ s7 J5 d6 `! J# k
( x! I7 l0 @3 G0 H7 f) C' b3 L# a5 k
void delayms(uint xms) //延时函数# o+ a: z/ E- j) x+ `
{2 i3 O* [) q; U @. Z
uint x,y;
8 O/ Y; s" k: [/ Y) ]for(x=xms;x>0;x--)% X4 q3 ^; |1 H9 ]1 W1 W. s
for(y=110;y>0;y--);3 D; W( W5 `! D1 ^" v/ ~
}/ F2 Q! P8 }; p+ g
9 C# v- f! }5 p1 L" w, P
+ V4 i9 A- n# M- h7 D( q1 t
8 X a( q" a* s6 O3 }
9 ?! T( u: Y1 x; h, e- rvoid keyscan()
1 i% W) I; w" ]. N+ E& U' w{
+ G) X+ E ?4 k! V, y uchar temp,temph,templ,k;: T8 S' e" g+ s0 b
P3=0xf0;
! q) h: D, q+ ?8 n' r7 o temp=P3;
. S& J4 M: z& r# a temph=temp&0xf0;2 U7 ?3 T: O/ `/ v
if(temph!=0xf0)+ X4 Q5 g& j4 r6 A
{
9 P; l& ?4 [, G+ z/ F' H& @ delayms(10);
) H8 e7 `/ _2 W U9 s2 |) R temp=P3;0 N' I7 q& j1 ]7 v/ ^ n( d
temph=temp&0xf0;
( |2 l' Y. b) B5 gif(temph!=0xf0)
) p/ F( \1 B; f{
# E! u7 A% q2 { P3=0x0f;
1 B' z5 c; A% n2 j temp=P3;
! u. m' v* Z" l4 ] templ=temp&0x0f;4 `- _; e6 a+ ^0 @/ p; i2 _- L: k
k=temph^templ;
( V8 Z8 }' w) M7 xswitch(k). H& Q- Y N8 N. t% o; p- c
{
- L" J" Q) z3 b* G: o case 0xee: keynum=0;break; //数字0
; J2 q" d4 D6 w7 L# }6 F4 @ case 0xde: keynum=1;break; //数字1& O3 Q, X' I9 V
case 0xbe: keynum=2;break; //数字2
" z: U9 ?8 p5 ` case 0x7e: keynum=3;break; //数字3- C( H! G3 b9 @4 S
5 f5 f, ]% u+ v( l7 m1 ?9 l) ^! c' ]
# L1 D- D" L8 a7 i1 }1 _0 W1 a) [ case 0xed: keynum=4;break; //数字4
) w% C. x$ s- T/ ^4 U- R& y case 0xdd: keynum=5;break; //数字59 W/ _7 z8 `* j' w1 |7 T9 X) w
case 0xbd: keynum=6;break; //数字6
G) f5 g0 Q9 I1 o1 ]* _1 y case 0x7d: keynum=7;break; //数字7* }7 f1 g5 D) A7 W0 j5 Z
! m. Y# R1 R% |" @$ o
# C- z) Q5 e" ^ case 0xeb: keynum=8;break; //数字8
$ c# L3 o5 x7 o( W$ w. @" S case 0xdb: keynum=9;break; //数字9
3 u% F+ o: v" l# j5 E case 0xbb: keynum=10;break; // =) A( R% s' P Z' W: O6 z" x
case 0x7b: keynum=11;break; // 清零% T/ _% u- N. F0 {
( k! F8 U4 O) ^+ t: x4 t6 @ z1 l: v/ `6 C" `) R* V3 n/ V* r, k
case 0xe7: keynum=12;break; // +
9 I: u+ r2 W( q; z4 b; }& t* K case 0xd7: keynum=13;break; // - . G- ?- o( w$ g' d4 I8 P$ B J9 _
case 0xb7: keynum=14;break; // *
8 O. f' {( F$ c" R& |& E) A+ M case 0x77: keynum=15;break; // /; v; a2 N- O5 c# U4 @
}
5 F# o! H X. e# hwhile(temph!=0xf0)/ T' O Z7 F) I4 [5 O( L
{
& L& m( Y! a2 G" ~* H P3=0xf0;- e+ a7 m: U7 r. \: L
temp=P3;8 X7 f& H! E( L$ j3 B
temph=temp&0xf0;
7 h/ V1 s! y" l$ Q/ f! B, }}
; ^1 s+ z% U9 y5 v" ^3 M}
; \0 ]# J, [4 Z' o; ^! p. q9 }$ b$ W}" n/ ~0 }/ u' h, b( Z
}5 M* D5 H. b9 H
+ z3 b' O+ @% h( }' u1 c% \8 J5 u5 W- T4 }* t! n7 H
void display()8 k8 }7 U3 w+ X5 Z+ Q, c
{
$ o# I8 ^# N7 S7 kif(displaynum<10) //显示1位数,0~9: ?4 f, E1 ^( {! |
{
* q9 H. _% Y/ E, g* v3 ]# r P0=0xff;8 |6 |/ i- b4 C$ }8 N/ W
wela=1;8 P+ \7 k8 f4 h% x+ P+ v
P0=address[5];
. Z; A* A7 C3 {+ Y' |" K" g& _ wela=0;
; F: |7 k) z- {+ p: B% D8 _
9 v$ b6 Q4 F' q- E# z, d- F$ y" V2 y& g2 E, t L4 M( }
P0=0x00;
# x' [2 V( _0 r* \) e2 x dula=1;0 V, T6 [- {0 H, u
P0=table[displaynum];3 P$ J$ Z v3 @+ n4 X5 B/ w) I# o
dula=0;, ]8 v& q$ B3 `1 c' k3 I
delayms(1);
7 \% P# L" h( M- m! ]' ~}
9 l" C! C, T2 b6 ?1 \else if
: ^! V$ V- z) ^(displaynum<100) //显示2位数,10~99
! H, f& F6 R& p: J% o, |0 _{; ]5 s* \; e. Q5 ]
P0=0xff;9 b9 ^% O+ f+ J/ k0 R5 T1 y
wela=1;5 w- W' U0 k7 t3 N
P0=address[5];
4 d8 G0 K' Q4 K wela=0;8 s% G3 W5 p5 v6 e# S" s
) s* P5 I/ R8 [; Y: F
8 i+ s( L+ v, U( X4 R7 m
P0=0x00;: b# n4 w/ g( k4 ~* Y. p
dula=1;7 F$ e0 v8 H+ q
P0=table[displaynum%10];
8 m" G8 C* U5 u) n dula=0;
+ a+ N! B3 [) D) `/ I3 [ delayms(1); / u) f$ \) q) H1 Q
* i1 m% A) P& x, K. v0 P) Y7 O1 J* G6 @4 f$ H" J6 }
P0=0xff;
( q' n' Y$ s! G& k+ A wela=1;
9 K% J! s! Z7 f- W/ [* E5 j5 h2 R4 U P0=address[4];
0 i: M# r1 T) c, F9 ~0 C0 f wela=0;/ G/ ] a2 T# p' q0 R& y* d8 t
r7 W2 f2 p0 z! q4 [' Z
$ v: ?, K9 j! O' \ P0=0x00;. u8 i7 s2 b5 z0 r3 Z# T
dula=1;
8 i. u: Y p0 e, d$ ~& F P0=table[displaynum/10];
6 m5 G' s+ b5 X T3 ]( | dula=0;
! o7 g6 ~3 X3 N* f% i delayms(1);
( T) m+ K a/ K& p6 [}1 e% y: `2 t1 N2 {8 \/ I6 Q
else //显示3位数,100~999% l% k( Q( N/ t% U, V$ Q
{, [, l& M) L/ j" y$ V3 f
P0=0xff;
) w+ C% K3 K8 ~% _7 q" h' X wela=1;( `& w$ l6 p6 ^- Q Y, \
P0=address[5];% [" U2 C4 a2 Y c: ?! D0 Q2 a
wela=0;4 l5 {/ o+ @+ L' U) Z# ]: a
, {# m% |+ V$ |6 `% V8 c: S
" ]- `% {: V2 ~' G8 B
P0=0x00;
+ G! a) G& t+ L& N' X3 H! \ B dula=1;
1 A9 ]8 m1 ~3 F P0=table[displaynum%10];9 S1 l) `3 p: c& s: l+ o% Q8 C q
dula=0;
% y$ C2 M6 N+ b) l! M$ ?/ Q8 w delayms(1); ; B2 r8 `, @& \; H
3 X0 @/ d# q& M/ b6 F& _4 D1 {& b9 P1 Z; Y; h9 k6 v
P0=0xff;0 Z% K5 @4 S/ U1 b# i6 p* h+ D
wela=1;
: }: J+ w y/ u: F- ^) c P0=address[4];6 Y ]; Y" @, u1 q; E; H1 s
wela=0;! _6 P3 \6 V2 ?9 X: }
" u( j3 I4 [2 H, y; l. T4 W' L2 i2 a+ S! t& i# ]
P0=0x00;; U- A9 p E+ o i0 \" |
dula=1;
. m8 D, d9 J3 l- J P0=table[displaynum%100/10]; o8 L" h8 u% L* D4 e4 a7 }
dula=0;
% \7 @. V) M4 o delayms(1);
9 M; P* x! Y# K" y( K. |
/ m5 ?* u+ W0 |/ F( S7 F8 z+ u
- i5 T4 N* v m |7 T6 X P0=0xff;
9 H4 I3 x3 [6 M- F wela=1;2 ]8 ~2 w, l" I/ L
P0=address[3];
/ b, H- v8 Q: l wela=0;* k: u* S5 Q0 r) J/ ]6 k
! f. L, z5 T6 j& d! k
; r/ V8 T! H8 s* \9 t! O, h6 ] P0=0x00;8 s) U, o: x) f4 c1 q
dula=1;
) Y% y9 g) R0 v- V- F P0=table[displaynum/100];
0 ^3 p4 m+ U: b! M5 k4 I2 E dula=0;- f1 L+ ~# s* s2 d. z# y! Y
4 O; W5 f: X- C$ D1 Q8 A9 j8 t6 d5 Y8 H/ T) a" F' K
wela=1;
: w5 a: M# J3 K% b- h4 f! h5 |% |3 M P0=address[3];
! T# g9 L( c; n; R7 Y wela=0;
; P. Y9 D# x) s8 ]' P! j7 h& q2 q7 B& @
, q+ o5 a3 v9 R
P0=0x00;. Y" N" v$ V3 ^3 J
dula=1;' b, Q5 S0 c4 z3 e! b0 n8 n
P0=0x40;
4 }( N+ u; {- G# g7 m dula=0;
. G" a& O& u$ T( L9 b3 V) ?2 w3 A' B+ \) J% \
1 j) ^# I; {# y9 g# E* C delayms(1);
3 ]8 L! z' U$ \3 i0 N}
) i* v4 c8 b j* t}. W/ W( J0 ~4 s. |: `3 M$ M
, w S3 x- Y4 O0 L8 K6 t; p3 e V1 U+ P0 B
- E4 T6 p6 X' g6 F! _$ @
; ^8 O2 d3 d* t S- N9 B. p8 V8 i3 ]& q/ o
6 J) k6 f% y6 q& K
" C ^8 L$ F/ D$ i
! ]8 x+ {7 `- `5 a/ L7 ]1 Avoid main()
$ ?+ J5 Z/ v' B& ?0 Q& i8 }1 |{
6 m5 s% L% c5 K. i D3 Jwhile(1)
+ @2 P& i3 g7 R0 E8 [8 l/ Q2 F{1 S% R. H& s' I
keyscan();
' g& L! R! z6 E. @/ d7 z3 Xif(keynum<10)( v) i- r+ Y# U o
{* {: e: ]4 c T8 F6 q
if(flag==0), W8 T- |" R: J m4 W$ o
{9 q ]4 J; f" `
inputnum1=keynum;8 }2 s. F! p8 d
displaynum=inputnum1;7 a) t+ _% @* H+ h4 ?% z0 d
}" q/ |- d2 z. L' y! K
if(flag==1)
9 I- E) Q% Q0 F+ k, ^& Y{- D |, w+ [ v. `5 w' D
inputnum2=keynum;% r3 Q( S2 V8 i5 Q
displaynum=inputnum2;* L8 W. N6 \% f& V+ {$ r/ k
}
' T" b# P3 {1 E3 O}
% S5 I: \, ]9 o* S; p6 N3 n' X9 K" y" K5 R
' z* {$ k4 o6 p' s: l5 `# wif(keynum==10)4 g6 u7 C" P% v5 d" J$ m4 Z
{
1 d, g1 Q& ?, @- lswitch(mathsign)8 D% s: A8 E, b( W- l+ I
{
0 H4 s6 }" Y2 b8 H2 }" N0 X case 12: outputnum=inputnum1+inputnum2;break;+ r0 q0 w' F+ i" l1 H* N' V3 a
case 13: outputnum=inputnum1-inputnum2;break;
8 P$ ]# h% h7 O7 _+ S: i case 14: outputnum=inputnum1*inputnum2;break;4 `6 }( z( U! d- @3 w; d
case 15: outputnum=inputnum1/inputnum2;break;. M: a8 D; F8 j& s+ h" K
}8 U% B3 s& a5 T- N) j; x
displaynum=outputnum;
M+ {2 O- s: J2 T; ]0 v, _) K z}) I4 O' V6 V. e' p N( B
/ g0 d7 f4 M( Z2 s+ t O
* A K& F6 Y( q1 Q2 c* Q# Pif(keynum==11)
% v% A2 S* h/ R: e{
9 r4 v; a( d) m8 n4 Q- J/ A displaynum=0;& N1 P$ v4 f( _ k- p: N* y! r. m& o
inputnum1=0;/ p1 v3 S! t$ d7 }
inputnum2=0;" j! M+ n7 F& @- H/ Y
outputnum=0;1 } F, W( l- `0 c
flag=0;
6 `4 a" A7 m0 M; Q keynum=16;
: J' D) u' U9 `7 M# a) _8 q mathsign=0;
# Z$ _* H6 P6 Y ]' o}& N! ^9 `$ i+ d# i* y
& z# S) m* i/ D$ y% k+ L) B
& Y$ S) e* b' X9 {) M* w* w9 c
if((keynum>=12)&&(keynum<=15)). Z' {" Z. N7 B8 ?* y% `
{# m! M: L H3 S5 C8 _8 o( X
flag=1;
- Y1 X8 x `, ^6 u6 p2 j6 e1 ?. F mathsign=keynum;- H$ z3 I8 o" P) @* `
displaynum=0;
+ f# ]* I% F; M- U* j @}
% s2 T, G; X8 ?3 [, R9 b$ Zdisplay();
: ~1 z+ ]$ z) w2 I' K a$ S}% E" m* M4 T$ g: ]/ ]( H7 o6 b
}8 B9 A1 Q) {* f* _7 s6 S* a |
|
|