|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问大神这个程序我怎么改成可以进行有符号的计算啊 可以计算负值
' d; Y, ]- l3 \. S: b4 Y7 k* p1 Z5 \4 ?0 b i/ h8 i
#include7 k' Z8 E/ ?0 }" g C) _
#define uint unsigned int. T- u/ i9 s! X( Z( L
#define uchar unsigned char c; C' g3 G+ J
***it dula=P2^6; //段选引脚2 e6 V6 T( a1 p$ h# M( O4 [5 B) F
***it wela=P2^7; //位选引脚) S2 h& x) P% s
uint flag,inputnum1,inputnum2,displaynum,mathsign,outputnum,keynum; 8 u. ?# g' W+ l1 N; u% Y( Y
uchar address[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //6位数码管地址数组$ {. ^0 b6 Q) k# ^
, D$ d4 U, |, X* I
& z0 {; z/ G. ?! b5 ^- b, Wuchar table[]={0x3f,0x06,0x5b,0x4f, //0-F共阴型数码管字形码
* X. t- d7 W4 h7 D* d# i0x66,0x6d,0x7d,0x07,; @3 B" x7 H2 f0 I
0x7f,0x6f,0x77,0x7c,8 b9 Z# W- F, U
0x39,0x5e,0x79,0x71,0x40 };
. q9 O2 b% x1 ?9 |) U6 Z- D; z- q! f& O! \8 E% W n4 e
+ e# M7 N: t n/ I' s2 z( D+ p
void delayms(uint xms) //延时函数
6 K5 Q! R6 N* K/ r- D( [{& n! S0 P Y a9 o c0 x1 ?8 c
uint x,y;
9 X6 K) g8 K' d$ k: l$ Cfor(x=xms;x>0;x--)1 }3 Y1 L: w5 k2 s) s/ g7 |
for(y=110;y>0;y--);' d$ W3 x0 h! | E
}
" ?! t* A% ~+ V# \5 z9 _5 ?" K6 Y2 U2 \1 R( b
& ~% [* f( }0 X7 B/ O
; _0 u7 c. n M' Y( h! E4 F
' ^3 O4 p) Y' E' H( S3 p
void keyscan()' H& i. B, j- Y( s7 L6 Q
{+ L8 P, P7 E* z7 P; V
uchar temp,temph,templ,k;4 y2 B' {6 y1 M2 o- @& b; v: c
P3=0xf0;* R7 L* z" U2 [5 t& e+ A
temp=P3;! s8 P9 J) S5 r, H
temph=temp&0xf0;
4 h6 T2 t ^0 g" h3 p: m' [if(temph!=0xf0)
0 o, d P. C" R1 \4 T n{
. a5 d r! r! _5 v: P delayms(10);
" i' O3 z- D7 X# ] temp=P3;2 n9 b. f; X0 N/ I g
temph=temp&0xf0;
8 c6 Q" N" ?% h; f( r3 S" _2 qif(temph!=0xf0): ~- h k( T/ p' r9 x9 u
{
# k: K8 y8 @: c% U8 O; W P3=0x0f;
4 \1 b) ?* O7 m temp=P3;
4 N; x; q0 P( j2 D, k4 Q) Z( {& o templ=temp&0x0f;) v# m/ W$ r8 L
k=temph^templ; ]/ \; E2 `' j- I; u8 U9 r
switch(k)% D8 ] Q, ]( J7 Y# d& o
{
6 t0 g3 F' M! Q* [' M! b case 0xee: keynum=0;break; //数字0; e: o$ ~! y2 b/ N" N
case 0xde: keynum=1;break; //数字1
) L4 d, d, N; J# |6 u, r: H case 0xbe: keynum=2;break; //数字2! B0 G# q' Q$ `5 R; ] k$ H
case 0x7e: keynum=3;break; //数字3+ B! N+ q! {- {; w7 ^
6 F/ {8 \3 N8 d% r3 @5 {) B" G8 O+ g8 p
case 0xed: keynum=4;break; //数字4
" J" k9 q) }9 a* N% v* W case 0xdd: keynum=5;break; //数字5- w, z6 V( B/ d7 }- g; Y9 o7 p, Y# y
case 0xbd: keynum=6;break; //数字6
$ X7 v) l" `& h/ F8 t5 S0 X5 S case 0x7d: keynum=7;break; //数字75 K. k0 M' p. j* V7 i
1 ~$ k( _9 h7 c0 H, n O" X$ @
/ P; G$ x2 a* P# L
case 0xeb: keynum=8;break; //数字8! c$ p/ |5 @& }+ M# k6 R
case 0xdb: keynum=9;break; //数字99 j) y7 y: B6 w; d
case 0xbb: keynum=10;break; // =. q* {# o) b& r' C1 S x; U* E7 p
case 0x7b: keynum=11;break; // 清零
3 d, s8 z# u" J. E8 B9 x/ V
) `' M' W( _6 s" |7 f* r: X* D6 v# l5 j& k% {3 Y
case 0xe7: keynum=12;break; // +
8 e: _6 S4 a5 H5 e2 c case 0xd7: keynum=13;break; // -
% m) ]' T% Y4 j" [! P# O case 0xb7: keynum=14;break; // *
" v4 A; q0 c% }' B case 0x77: keynum=15;break; // /
! y0 U- Q/ B- C4 L}/ b) Y. @/ F, x8 M0 \, d
while(temph!=0xf0)
: O5 E1 o: M- r; A{
. C% L4 d2 K2 `4 i5 Q, H: I P3=0xf0;
" `! s5 C5 P. z9 v temp=P3;9 P$ _/ g, M5 [, I8 A, N
temph=temp&0xf0;9 [) n0 v/ e, T* M8 g* Q
}
$ v1 M% h6 k) [; n}
; t- u5 r1 f, J7 V# V3 y/ l}
3 k* w) z4 k% M) R}0 C% ^) l3 Z5 U6 W2 O5 i" n, _
6 F+ I) G# ]% ?6 _
9 B, i q0 ?; W* Xvoid display()
, d/ L2 ~4 }& N4 ?. J{* H; _" X5 ]7 C5 J% T8 z# I
if(displaynum<10) //显示1位数,0~94 W+ S+ O3 K& o$ n2 {2 Q, e
{
2 z% z- Z' R, H1 B P0=0xff; \" W& ?( x; l% t) H
wela=1;
% z7 x5 Z9 d. t3 t. w6 C& Q P0=address[5];: Z* y' J' S) L% k+ O" s
wela=0;
7 B3 W4 Z) P( P, m' Y! o
/ v! f! \+ E5 \+ C( C* V# r5 E Y, z' C! T; F2 W" @% Z3 L% ]
P0=0x00;6 w: q B8 P6 k5 j# M7 q) x
dula=1;
& N, T* ]2 G z2 Q! J P0=table[displaynum];
" u6 E7 a1 t8 R# p6 X dula=0;" [8 j& o% v( k$ Q" A: z
delayms(1);+ M5 B; w) @+ H4 x
}
/ c+ l( y) H5 n4 a- Zelse if/ S' G* ^) y2 M1 V5 C3 z
(displaynum<100) //显示2位数,10~99
8 Q& p0 A5 X' q: D1 Z Z+ v& W{
# {* y, s3 f, i ` P0=0xff;
- y7 A" |1 P6 b! z wela=1;
% A4 E- h& ]' k; z9 @# a P0=address[5];
/ ^* r- p6 o# L$ U: K9 T$ G wela=0;
9 X# N6 r }( F: J
- {3 V+ T% s4 J8 Z9 k
1 Q5 F* X- |( ?/ ? P0=0x00;0 g9 S4 g6 x$ n5 c. d# r
dula=1; E5 ~5 o& A3 M" ]
P0=table[displaynum%10];
7 i! @# G( u. r' M# T dula=0;
. Q [ N" Z, \0 W delayms(1); 9 g% P8 x' o6 Y8 R5 \; {
/ A% j1 o/ A; B0 h
T; w+ Y' y5 `/ h4 C! z P0=0xff;
$ i5 ` P& O$ l8 ~6 j" Y wela=1;7 ?* z/ W8 P$ \, }; w
P0=address[4];
W+ E- W. s% u, f wela=0;/ n+ E# s# a& ]2 \. H. B
( j* q& } W% f. B2 ~: j
- U- V1 o1 I0 T
P0=0x00;5 r- @% H1 Y# d) }. ^
dula=1;6 S. J9 z! u/ { ], d+ [
P0=table[displaynum/10];
4 A9 ~: y; }: b+ Z* s4 ~$ { dula=0; [) K1 T; c2 u0 |) B9 M
delayms(1);
( t) l) N) ^ J6 T+ \% D}- J$ X* H9 z8 g
else //显示3位数,100~999
u$ ^2 i' G% M( H- l2 X7 n{' O* J& E% E3 Y) y1 e
P0=0xff;
' i# ` z2 t3 t- R1 {! R wela=1;
1 }+ S: G( T( D% v5 K8 d6 Y) ?# g P0=address[5];# _9 N) Y6 \' B+ E9 _
wela=0;
) D$ E/ }8 S3 }" Q, y O0 y) f- M, Q% t; I
# c# J& J4 E- M2 A+ S- n P0=0x00;2 x! I& d R8 ^
dula=1;% \3 i) }* Q- Y0 J8 t" X) o0 p- R5 O
P0=table[displaynum%10];
7 n* j' o1 o& \6 @- W, e# E dula=0;
: |$ M4 U' R% T2 m K delayms(1); , v/ S T- D' d2 T R# c
+ l. U! ?% D9 I/ k. |
( `2 v& }2 J$ z+ G1 R
P0=0xff;
T; l2 z# q ~$ h wela=1;
1 U& j% V$ i" ^. x3 d- o P0=address[4];
. H @5 g; A$ E9 `0 k/ b wela=0;
3 m* Y" I9 Z+ m5 _ B" r, E* Z6 m4 b. h
# u' \9 y# x+ O* Q# V
P0=0x00;/ ~- a% ~' V& W; f' ]5 ]- z
dula=1;" z* z. L+ D$ Z" G" |
P0=table[displaynum%100/10];3 ~+ ~6 D4 g( |
dula=0;
[+ o( T2 w1 a+ V4 \5 ~2 }: C delayms(1); @8 s" A' N Z5 o" i% M: B
$ h7 g+ W3 _* {: ^' l; q: M
5 j" \/ w5 ?: @# \6 X- _ P0=0xff;
" B- A% S# e$ M4 M1 D( c8 Q9 e3 b9 S& _ wela=1;
* c$ R/ L9 Z Q P0=address[3];8 C) s0 C' C: f( V4 k
wela=0;
# ^* Q9 M. \8 j: }' m1 C) \( W4 I8 Y$ m& w" O3 @
: g$ ~% a3 N% J; |
P0=0x00;
: k Q' q- p6 Z! R dula=1;0 l; O0 N0 Q& q2 U/ b
P0=table[displaynum/100]; ]' X' r9 A5 L$ Z
dula=0;. ]2 l+ N+ \0 ?/ ?! b) `
" e9 ]5 H* F# F: D- D8 c3 ]7 H+ g
& N' J2 e9 _1 k wela=1;& W8 L4 T4 f" C5 j: m3 c$ H
P0=address[3];0 a+ D' [: S7 m4 M1 D5 l
wela=0;2 ?. t) |( m [0 m: y
- V% V# g% l; Q1 b3 P6 s9 Q: C! S% e3 M8 G4 w% v( g, y. _- Y% h
P0=0x00;
; A% z0 T, t5 j9 J! @ dula=1;
& u2 u3 @( C0 I% b. l P0=0x40;& F7 b6 j: N/ L. P3 P
dula=0;
+ n; J- T5 u5 j; Q& V4 a' Z
+ _: y6 ]+ n5 q, ^
1 I' G) F0 e, P' q) @8 k, Y+ V delayms(1);
0 O# J8 P; w6 C) r$ R$ J; y}
9 n4 y1 U; ^" F+ W& L& B% h}! c0 D: T$ D+ s
& h0 Y% r+ G @- ^
c7 |3 `8 |- s: g% v6 w; v5 W
x6 {2 K# L5 F8 d1 W6 c( V6 i3 n0 ? A
( [' Z% D0 A* I: S4 S5 f5 m1 K& o! ` p! h6 e
+ P$ K# H- j5 }7 u& g& [4 i r0 N
void main()8 p# p" @" W+ _* a) j' U: I: n
{
# v8 d+ R* R5 G* Bwhile(1)
( G* Z7 _& o' M4 A6 D" y{
7 k* t* O, m: W( e, Q- u/ nkeyscan();
1 \/ Y/ t4 Q! cif(keynum<10)
& l V7 V$ S4 ~$ a{4 `9 ]$ G& J; j# _( [8 T
if(flag==0)
4 D* n0 s8 E. g D! [0 w0 o' `2 \# f{4 f/ [$ o8 V1 A- B: |
inputnum1=keynum;
+ B9 v9 d8 ~* m: C1 B$ d7 [ displaynum=inputnum1;" F _4 W0 A& |4 \2 H8 j
}
/ l7 d. Z( w& V W* @ if(flag==1)$ y }3 M: |3 [0 d
{
7 Q2 j7 |7 y; P+ I. }3 ?' n inputnum2=keynum;
2 C- W% V3 N+ @: I! P: A displaynum=inputnum2;( @1 N9 r: M* H% O$ J0 W. b; J
}6 c4 m* u7 D( s+ [$ M. T
}) v9 `+ D; \; p% H
; l" z+ W( a, d" Z
: k) a5 I& U+ Y& Y, f% R: uif(keynum==10)
. A9 u% ~4 B" t% M{
9 T" ]6 W6 _7 d4 H2 A8 }* kswitch(mathsign); X$ t9 H6 U5 U0 G+ J; x
{
3 X# e% E+ o- k& ]' \, o case 12: outputnum=inputnum1+inputnum2;break;
- j- S! [3 U% P case 13: outputnum=inputnum1-inputnum2;break;1 h) O0 p% S1 e
case 14: outputnum=inputnum1*inputnum2;break;
7 B" C0 K; m/ E H6 I+ ` case 15: outputnum=inputnum1/inputnum2;break;
, z# ^" d/ `0 J4 _- x1 m5 [}
1 F, M" o4 Q% A$ kdisplaynum=outputnum;
# b: B; g3 b ~! @3 R2 N}1 _6 P/ A5 d: j! X' O. V" D
7 |% P8 y; ~+ o) u, ?% V; K/ r
4 n) a! o3 ]2 m6 y% d7 }if(keynum==11)
6 e( G! n; j9 v{5 x) F& E2 |, h/ i- [% j& A2 H
displaynum=0;
$ Q5 Q, y( b! J' h9 c R5 A; U inputnum1=0;7 t! i5 @4 Q( G4 T' E$ D, D
inputnum2=0;
/ X1 }: g$ G5 u5 i, S% R' y% X outputnum=0;
5 u3 x6 _( s% d7 B5 z flag=0;
* O- ^. _. }# W5 ]0 }4 X keynum=16;' @. ~4 b2 u1 q) B
mathsign=0;9 p( h+ S% c: d1 _; O' d( q6 f s
}/ c4 j9 a# o" U7 L, a
( S* g3 I8 V* i5 W9 U, u1 N/ V
( r% X0 b) x/ [, U: Qif((keynum>=12)&&(keynum<=15))
- f/ ?. Q' T; Q" M+ p2 F! \! ?{
9 i# `/ b [7 { g1 d) N1 Q flag=1;6 D K, g; v% a3 k9 Y$ P
mathsign=keynum;. k* [$ o$ ^# l3 A
displaynum=0;
& a. }& `5 }& p2 N7 z1 I4 e) h}
5 j/ A- c, F6 K+ U- y8 xdisplay();; A% R- G% {4 ]# N4 ]3 u' N* W
}
$ V8 w) d0 a1 N( }- R}+ j2 X+ n9 d* Y# E9 o" I
|
|