|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问大神这个程序我怎么改成可以进行有符号的计算啊 可以计算负值
: b; t! x- s7 n# B# t; U' B& v2 L' {7 c# r
#include! D5 S8 z( [! Q
#define uint unsigned int9 h d( F6 r/ y! E8 w# C% B- c
#define uchar unsigned char6 K$ r7 e# q4 A. B& Q
***it dula=P2^6; //段选引脚 J2 d: ?7 O3 v9 x5 b7 S
***it wela=P2^7; //位选引脚2 ?, b3 X& M5 h/ {
uint flag,inputnum1,inputnum2,displaynum,mathsign,outputnum,keynum;
) _! L, A9 P' y+ u7 Guchar address[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //6位数码管地址数组
: W6 S3 y7 z$ R4 d9 h8 F# F2 A, L" N5 h% P z8 T/ W+ f/ j \
/ q" V+ l0 R- o- L
uchar table[]={0x3f,0x06,0x5b,0x4f, //0-F共阴型数码管字形码
: S4 l2 K% W9 @; k: V6 a( j0x66,0x6d,0x7d,0x07,$ ?, D9 W. t% a% i- p1 ^. S- i. M
0x7f,0x6f,0x77,0x7c,* p+ J5 X9 W$ h5 b! b
0x39,0x5e,0x79,0x71,0x40 };) b" S9 a8 V0 h6 e% |
8 _) l& b, i6 M X/ i) [
6 u- r+ F; Y+ L" X" z- Z; [
void delayms(uint xms) //延时函数
# d+ w( ?9 _( v4 M% [/ N' C0 v{% I# w3 I) {( l
uint x,y;0 Z! ^3 G6 }( H3 w- v& q) v3 ^$ i
for(x=xms;x>0;x--)
9 P; C6 P w5 J. [ for(y=110;y>0;y--);
. S# u+ K/ ?) j4 y}8 ]0 W1 l5 |3 R- q" l9 [7 g
& |; z% k* Z" t; K# N0 ~2 a# q! v2 Q: z( ^
! Q6 v* Z$ O2 D5 N @4 W8 i7 r
) b3 E" j8 N/ _, @9 V
void keyscan()
$ m% F; h- l3 w% a/ k. o- ^{; d. h" w+ _# K* H+ u: l
uchar temp,temph,templ,k;' }- Z" s" c9 |
P3=0xf0;
. S( Z5 C, p% q% P5 j/ @; H( E temp=P3;
1 ^& J# k6 [' `+ m8 n5 a( h temph=temp&0xf0;
a( J, a6 t q+ [( Q) U ?$ Dif(temph!=0xf0)! O0 e; l# `6 s; o+ l3 h% R
{
r8 D0 n1 z9 [9 h' B delayms(10);0 F: _3 h% Z, [6 \8 \
temp=P3;" c( `. O) r( `" V* ] j7 r/ B
temph=temp&0xf0;. l0 d6 K1 y9 P% f
if(temph!=0xf0)) d" [; }, o1 a4 {! M4 `4 C" ~- B
{! f9 E) c/ Q3 S5 ?
P3=0x0f;
2 t' Y2 H2 \) n3 ?2 } temp=P3;& E7 E# H7 [8 ]" T
templ=temp&0x0f;
0 h! D) f: u: J$ S k=temph^templ;5 x: p1 {8 C3 \- S: s- {( h
switch(k)% a* _1 Y" {2 @% j$ p
{
7 p5 L. M! O0 k0 o4 k case 0xee: keynum=0;break; //数字0
0 C3 n& R; }1 R0 }) p( i# J5 s case 0xde: keynum=1;break; //数字1
" R3 c( R4 A, G. \. q case 0xbe: keynum=2;break; //数字2
; k; t/ a2 |9 y1 y4 P case 0x7e: keynum=3;break; //数字3
7 e, F/ U" z5 q: @( I. E4 B# U" f# D" e+ T/ n. x' C5 f
. S) b, K* K, j9 O* O& W
case 0xed: keynum=4;break; //数字4
( r5 M) M8 M- c& V% q case 0xdd: keynum=5;break; //数字58 X8 W* ^0 a/ L5 A3 x
case 0xbd: keynum=6;break; //数字6
' J j" L: d# x6 m" F3 p% T# } case 0x7d: keynum=7;break; //数字7
3 {- ?) H. P* W, j1 e* Q8 H' D$ D* A* w, }
: s8 V" @% u, \) v6 V; x/ A case 0xeb: keynum=8;break; //数字8
" \5 j( j' O. U. J( s case 0xdb: keynum=9;break; //数字90 `* s _. r" k2 F' s
case 0xbb: keynum=10;break; // =
3 l9 o* W6 e) U case 0x7b: keynum=11;break; // 清零6 @' G) s( w% P6 y% e+ h
1 ~6 Z V- V3 ~0 W, y
" z7 {9 K" o# y- j! i case 0xe7: keynum=12;break; // +
9 N7 H. O) p! x# n- p case 0xd7: keynum=13;break; // -
( o; v; |: ?- d4 V+ T: C; E case 0xb7: keynum=14;break; // *
6 S) Z4 C8 w' g2 e case 0x77: keynum=15;break; // /
" k/ n' ~" J4 F/ L$ z}
9 K9 P3 w( u1 P: k6 Y, Q6 v2 Rwhile(temph!=0xf0). W: D$ b* a0 O$ B: a" G+ n) M B) `
{
3 G9 c) B) G( `! D! j P3=0xf0;& v$ F) |/ `6 I- G4 m$ `' c
temp=P3;
7 G6 \8 z$ N1 ^5 u3 F; ?4 _ temph=temp&0xf0;: \* e2 A! i2 u3 p7 z; C
}
6 e/ ~4 X5 f: k& {5 x1 s Y( g} " P" G" u8 X* ]8 C$ |& h
}
# u2 g; Z5 L# s! }2 E+ ]}6 E6 ?6 \2 Q0 O8 Q% P8 L& d
% q7 e h0 b+ c$ N, j; \" e$ J$ C: M6 L, z. y7 N) M1 r- |
void display() R& G& f0 G2 C t$ i' {7 E
{, E( |6 A5 }8 c/ j, x
if(displaynum<10) //显示1位数,0~9
& g! _: m3 B! U1 q. v{6 N t% ?" c- \; e- Z; l1 [5 t
P0=0xff;
0 V9 ?+ ]! I4 y: F( O, f; w0 X wela=1;
& W# p5 G% w7 H P0=address[5];! S0 y' X" u' a; J2 |8 x K6 ]
wela=0;
& P/ D F. J3 {: B8 u1 J1 ~! \8 A! ~% ^: q
9 Q: n4 o% ]" p+ j2 ]* c4 d P0=0x00;" _0 x4 N! B3 _4 }9 Z2 c
dula=1;0 ]3 ~" m3 L2 o+ x6 j5 h2 k
P0=table[displaynum];
7 ?2 J8 j: _ r% ?3 }9 l dula=0;
# q z* r1 q: o1 @ delayms(1);
0 G5 B( i# l8 \* ~+ _$ h" i! c}8 H0 Q6 L( R& y$ E
else if4 `2 ^' ?2 r& G c
(displaynum<100) //显示2位数,10~99; u0 [, Q2 L' p3 E5 X' |' ~1 c" E
{+ P% r2 V& [& p6 o" l# S
P0=0xff;
/ ^4 f4 L% U. F- i. E wela=1;
# k8 w7 D3 P, ^8 c- J- V8 d1 b P0=address[5];5 W( S1 I, |% z% A# [; k
wela=0;
: o8 ]2 A6 o" `: z- u" V- [0 |
1 v7 k9 F# H6 G
( _9 k6 `9 v9 s) _8 U P0=0x00;9 g5 _5 R; G- ] W" W
dula=1;' E: h! s9 \1 L7 C9 z- |
P0=table[displaynum%10];, r1 G5 V7 b, w
dula=0;
8 ~. f e- m% w& U# _4 z delayms(1);
+ f4 \! N a2 E* w/ t$ C/ o0 S: Q- ?/ J4 S T/ ~, D
8 O4 ?" L( a2 Y: e+ u" y4 X P0=0xff;
5 m9 V3 a2 X, P wela=1;0 d3 E& u b7 Y2 [8 I; ]
P0=address[4];" K5 o. Q6 Y& T" I" s: M3 D
wela=0;
' E- v6 h# ?8 a Q* g& n4 R2 _5 n
! B/ e z# k8 T& n0 c" M3 x
P0=0x00;# ]/ i& D) m# q- c" J3 w
dula=1;
9 h& T2 n7 y( x P0=table[displaynum/10];
0 g, H$ m7 ~. d1 P- ^5 y, K dula=0; R ]4 E. O) p" u( u
delayms(1); 9 T$ B2 b' B; I
}
8 b5 ^& b% w& J/ X- Yelse //显示3位数,100~999
# \: S+ C0 B3 P3 }* D{1 v6 q# q3 [7 g4 q2 J" r3 ~
P0=0xff;0 q/ B( G+ V+ z2 a2 Y8 w) V
wela=1;( O* W6 f/ ^2 f0 c* k0 l+ N
P0=address[5];: |% P, y- s' d6 J) `
wela=0;
8 z( w" D; F5 }5 z9 p7 g! e6 l$ s+ x5 M
$ h4 z# ?% v- n- p3 z. M( _ P0=0x00;
+ I4 b l& F' |7 |' p7 U dula=1;1 T# a4 b% v* }
P0=table[displaynum%10];' Z: k" ?- ^: Y; d) f L8 U
dula=0;
2 m- C. v' c) ~& f delayms(1); % e& _% i% ]6 Q, b1 O% U
, r. q. O1 K% K' k0 L5 N V6 @2 h5 |: E* q5 g
P0=0xff;! z% ~% L( e5 ~8 q! ?, U
wela=1;
; F: ], O7 L% {# U% h1 o P0=address[4];
' X1 d8 b2 v6 f# d# B, T4 g3 \8 \' x wela=0;$ s8 F# R( O1 b; W; H1 Z
- y6 s4 _( W4 w- c6 t' y0 v$ @( Y) s7 r
P0=0x00;
2 B+ k3 k* b3 p/ j% [% X( u dula=1;
& `8 b8 U7 y, Y t* z P0=table[displaynum%100/10];- U# H% Z9 ]7 Q, H( r' }
dula=0;
& a: r! r% o ^! W0 v+ } delayms(1);
9 @8 `% i( d5 ^" X2 l- N9 g
. G3 F5 [8 |' u! I4 K
. m# _. w6 i3 c0 X- g$ r( M5 ]: h& ` P0=0xff;
! \6 t3 f$ A/ z9 U wela=1;# {. l. k% t6 F( t t
P0=address[3];1 k; ] t7 i' z# [# o; t' m, f7 s
wela=0;7 ^1 F5 J# c# H* ~
9 e0 s6 m& E" Q4 l# b' C% E9 I1 b$ f: T5 E/ j2 ], p3 Y* R
P0=0x00;
% e/ F( z1 n" R% U0 ]; P3 y dula=1;
' {2 h6 K8 c3 @: l P0=table[displaynum/100];, I5 D8 C: t# q9 v* \- @, q
dula=0;
) Y) G9 O( D" g* _6 B9 s }- B
4 w/ k1 W! B' J: l* S: }: \& k+ k) c$ N) A$ P! G% {
wela=1;
. z- A4 L0 v. s P0=address[3];
5 m9 j$ r4 `6 Q/ G wela=0;
3 ?! w7 G5 X8 X+ K1 R1 G: \* h0 n
. j! c( h: P# I$ e/ C$ U P0=0x00;, R0 `/ L, X0 d i: ^
dula=1;: o d* Z7 p. F6 v
P0=0x40;
3 y1 L6 ~" @5 y+ g0 {+ ]. e3 r4 K1 B dula=0;
4 }: Y3 i {8 m- l5 O/ m5 e- `6 L7 }7 E1 R t9 I
/ s2 n$ u' G4 w2 q. g& _
delayms(1);
6 T5 j; N# c. P( _+ C} # P# I) c! A( `8 T) _! g
}
8 s2 f7 c6 ~9 ~: @9 X
6 _; t9 y# l& V3 ]1 V
9 m0 ^8 `3 O# o! \' G4 I* i0 l2 w$ r- _1 C! Q
) _* v, l) S# z
3 C- g+ e9 t' @, N8 r3 J/ ]: S8 Q- ^+ _. c
/ } R5 q1 X' Q1 B, E: c0 r
' e( M. a& E {4 M$ p r- q2 wvoid main()
' \! ~2 G% p3 x& j4 F1 l- K{" p" x% V c% ?
while(1)3 G( [; k/ b# O4 C( |' |0 N
{
* S1 u) a) L: v! f2 kkeyscan();
& T9 J* q) q& }7 x/ ~if(keynum<10)
+ E, a6 ^+ ^2 a% a{
6 A7 k8 Z; d8 gif(flag==0)8 e) U9 v& `7 x' b {1 K
{2 {/ j; H/ J2 D o4 V* \
inputnum1=keynum;! @$ i1 U1 a. I( ] e# B- w3 t
displaynum=inputnum1;
' s5 ?8 R* g+ |+ H" Q' @}
: ^' D! S* v' k if(flag==1)
* a1 h: s' V* L/ z# I; f1 c{+ P) h, c5 i" U2 ?0 V+ J4 H9 y
inputnum2=keynum;
+ N6 M/ u" S1 X& s1 w displaynum=inputnum2;
) B9 U/ J( T& j* E}
1 Y4 ^- j, ^* ?4 H+ R7 z% l}# x, j/ w( o {0 b0 q. k9 p c
1 r+ a* a( p. B p
4 C$ a/ n( p& Z+ z! ?/ p7 jif(keynum==10)# ^% g! x. F, {2 T- m0 z0 c$ G
{/ f# ~# l4 H/ Y# o4 L/ i
switch(mathsign)
( Y* t( ?8 |% ?$ l) N+ J8 T{
7 w3 u3 R: d# L8 c. i. _ case 12: outputnum=inputnum1+inputnum2;break;7 [" [ N0 w3 g
case 13: outputnum=inputnum1-inputnum2;break;
% R5 W9 c# m/ {* z6 \ case 14: outputnum=inputnum1*inputnum2;break;
1 z) E9 f* c2 U0 t% w! K4 O case 15: outputnum=inputnum1/inputnum2;break;& c8 o$ G7 h: E% P
}
9 J0 E7 x& _* e( u5 E9 W4 Edisplaynum=outputnum;
5 ^" U7 u, \; P6 O}5 _) k5 e @6 o9 s9 M
3 r, M2 k% X& @/ U( {# \. J
$ w0 E# W0 l6 q7 B5 ?% z4 O) jif(keynum==11)
) z" p) F, X9 t) d( k' g" `( E{
) ? F4 A% l+ w. @# N, H |/ P displaynum=0;' o; B: e' S; y8 G) J
inputnum1=0;
3 p+ R. y% G0 t3 I# b inputnum2=0;- Z2 D' |! Z: B) p: a$ l
outputnum=0;/ i; j4 e8 L1 s! T! d/ ^' N
flag=0;
@9 U' H9 E6 p& c: Y6 g keynum=16;7 G/ b; y' G3 M
mathsign=0;, e9 Q, w. P1 ^
}
. R7 \: S9 U* P( u2 i/ G5 \
{+ C) P5 j- R7 s1 t9 }: N; V$ x* b, `
if((keynum>=12)&&(keynum<=15))5 ?5 _2 o& g8 E( o- o( i1 ?9 H
{
- T% c0 e! I0 t- H9 v flag=1;
5 D y5 H; _ U. | o% m mathsign=keynum;8 ]8 _- D2 Y9 E+ K
displaynum=0; 3 H+ k1 b# M9 k* k2 j O) c
}( U5 H9 ~! T5 y, a" z# m5 Y- y7 b
display();
/ Z$ G j2 S4 y1 a+ _! N1 Y( ^0 j}
/ C# h' e1 b- q$ E# Z}
& ~5 N9 q# g j% W |
|