|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
请问大神这个程序我怎么改成可以进行有符号的计算啊 可以计算负值- B3 W3 N0 d) w& x* r+ ^3 J
1 t0 U0 r" g! G, D
#include
4 K. n% ?& \9 S- C- p4 L* @5 K#define uint unsigned int2 U9 n3 A' }* p! D( k
#define uchar unsigned char
' x* z. e" z9 k: r" ]+ |***it dula=P2^6; //段选引脚5 _# D+ z" W- ]4 Z9 F5 E' e P
***it wela=P2^7; //位选引脚8 s, `6 u5 a! L7 ?1 }
uint flag,inputnum1,inputnum2,displaynum,mathsign,outputnum,keynum; 1 i$ Q$ z( f) ^1 P# }3 X
uchar address[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //6位数码管地址数组+ C" E$ d* u. m3 Q' J7 ?+ U7 |) R
9 E C7 Q. j, v6 d& D5 |4 }5 F, L
y# C2 B4 Y) c* S: u' D0 Luchar table[]={0x3f,0x06,0x5b,0x4f, //0-F共阴型数码管字形码
% D/ Y8 ]/ e# P$ Q( q3 k) ?0x66,0x6d,0x7d,0x07,
6 f6 `1 J! ^$ G z8 ~0x7f,0x6f,0x77,0x7c,
4 S6 T. D( ?* i! C& K$ ^0x39,0x5e,0x79,0x71,0x40 };
+ b, X/ K$ l. x2 x4 _ z
! z. r! ^' I% N3 J& M5 ]
i5 C; M( `+ Gvoid delayms(uint xms) //延时函数5 d/ T: o/ e5 _8 Z9 E
{
% f! |9 \9 w$ g' [uint x,y;! J9 s0 i. _1 L- }& w2 [
for(x=xms;x>0;x--)
- C1 |# C) M5 o4 ~8 d& L for(y=110;y>0;y--);4 n. ~& Y% g) c) ?- Q; v
}
v5 S- l' `% T/ v) L
3 N( a6 |9 F" L: q' q& K
% v0 F# u: D' R$ C8 R
3 O8 C$ P3 g' d. l( [% F# q9 k" T) o# u
void keyscan()
8 p8 G8 `- ?: }+ M) P{- q7 j P0 x% F+ N) Z* \# z
uchar temp,temph,templ,k;
0 ~$ Z' r! A: p( A1 w9 n- | P3=0xf0;
/ D* b/ e7 r" { x. z" a$ Y4 \ temp=P3;
* |: k: {0 n- |( l0 j1 k temph=temp&0xf0;
- v2 H& f/ j# I6 K4 H4 x. sif(temph!=0xf0)
: b5 C3 Z$ A! _$ T' Y8 m: c5 d: t{
7 L* k1 v/ w4 j$ z( Y8 S" E% E, ` delayms(10);) z @/ L0 \- i; O. T
temp=P3;
( Q% I4 [' C& C$ L" d* F5 I temph=temp&0xf0;$ Z0 H: e' v: ~/ ?5 W
if(temph!=0xf0)
0 T1 W. w2 X. X w* b! _6 J( q{- j: m D9 k; f0 \; u
P3=0x0f;
. K, J+ B1 U; q0 A8 P" |% q temp=P3;0 ~9 c7 t6 W2 {4 U# v5 `
templ=temp&0x0f;6 C& g' V$ i& q0 q& W
k=temph^templ;5 B* Z' B8 H2 d% u' s" [$ G9 D: v
switch(k)- y8 `' C) R. D5 i2 m. I: d. k
{
( l* m+ |, S1 X2 ] case 0xee: keynum=0;break; //数字0
& _' X2 m& w& K$ m case 0xde: keynum=1;break; //数字17 \' M& _, q( x; Y# t
case 0xbe: keynum=2;break; //数字2: [$ k! o& E* Z( i$ H2 e. z) c
case 0x7e: keynum=3;break; //数字3! h" n5 ]; q) |! J( N. ^5 n2 f% x
, i" t1 N. b, G8 l2 `
. M% d3 T/ g. I* G+ }4 X' ? case 0xed: keynum=4;break; //数字4
( T9 n/ _. l4 Z* \- M case 0xdd: keynum=5;break; //数字5: t, s$ g: U( F3 l- y: `
case 0xbd: keynum=6;break; //数字6
' b. Y$ y O7 @ case 0x7d: keynum=7;break; //数字7
( R+ i6 B# I# V) W
6 z* \& _6 Z6 [
+ c) e* V" i/ b& k case 0xeb: keynum=8;break; //数字87 @7 G5 X8 I! I0 G
case 0xdb: keynum=9;break; //数字9
* m! d4 D& R) j6 F9 z4 O* G case 0xbb: keynum=10;break; // =
' t5 c$ y& H3 z) a( V- w case 0x7b: keynum=11;break; // 清零
* I) ^/ ]! |& P6 L+ U. Y7 q
/ q) `" q1 |& S3 J9 R5 s. c9 E: [7 I8 Y; Y8 X$ M8 y
case 0xe7: keynum=12;break; // +
4 P) Y4 {2 Y8 e: u case 0xd7: keynum=13;break; // -
0 }& H7 o J1 P3 w$ c% ` case 0xb7: keynum=14;break; // *. a0 b d! g6 _ m' C; l3 ~8 ~2 Z
case 0x77: keynum=15;break; // /0 V& J2 c" m: i7 ]( T
}% F) ^4 N/ ^% G! s7 [; Q u
while(temph!=0xf0)
! @$ l2 o t8 `) f) \+ v8 o{
X; R* o* w* h' w {& j P3=0xf0;; U* F2 E8 o l& H
temp=P3;
2 e0 ^. n$ a9 b. x1 X* W temph=temp&0xf0;
& j7 g. m3 b% }! J$ i}
8 K6 e# t9 V& y) i. Y+ o. z/ x}
$ V4 k- Z/ B4 r- e1 C: J5 e}
( C0 }7 |$ A" L2 j7 p/ z6 G}
3 r" @* k0 U7 X9 g8 t4 t* a8 B8 T/ h
! r' Q: }' ^+ |9 U2 b* Q7 e3 Q* S' Z" x& s$ b2 [
void display()
9 ]; N R+ I0 i- Y& H( N$ G{3 N9 Q% p) a9 `/ p9 p" H: M; R
if(displaynum<10) //显示1位数,0~9; }# N2 |- m8 g) u. A
{1 v. @1 q' @5 |! T3 ?9 c
P0=0xff;
3 g" Q2 q) c1 N6 x' v% M; m0 U wela=1;
2 k, }, O/ V* ?. a P0=address[5];* {0 I2 `! N8 U6 S% w' T1 }4 u' G
wela=0;" K$ s0 W( e: C) F- ]6 o
$ z3 c/ i3 U+ t5 K
- S$ F$ m# Q3 b e. o' ^ P0=0x00;
. J$ ]2 m3 _3 \; v6 m/ L' `. ?% { dula=1;% l, ]' f+ Y* w6 ^8 m
P0=table[displaynum];
* X$ A! e: \8 u @: Y* S dula=0;
3 }+ j5 ?1 z! d. C0 | delayms(1);
5 ?. O6 z! I0 s, y& I# f' I" }}
9 E" ?" X$ \6 telse if& o5 `4 W+ |, z& t* m
(displaynum<100) //显示2位数,10~99+ V6 a/ E- y* K
{/ c c) s0 Y- [! k) g" z
P0=0xff;
: c9 R4 K& l/ W2 z! D" T% R wela=1;6 m( w0 Q' k) ^8 e, Z# ?) P# Q) B
P0=address[5];; D) D b; Z5 w+ k6 y& ^& a
wela=0;, h1 A2 l* @4 a
/ w" m7 e1 C; W9 I: C& N& K' V, T$ d5 j# e b
P0=0x00;& B6 d1 Z& Q7 F- j6 D
dula=1;
8 w" }3 L- `; k' W; w; G4 L P0=table[displaynum%10];
7 g8 r4 P& Q' M' `: O dula=0;
, d$ T( L8 j. | delayms(1);
$ G7 T" U- W; t8 M) R# J9 B2 k/ V z: ~3 x
& w* y3 K$ `: C& h
P0=0xff;
0 z# E6 q7 T n+ U; f wela=1;
: S' J* P3 w. } P0=address[4];) Z7 R2 k# L! l2 V
wela=0;
' d U1 [- m0 s' n; b
% C! O# e. x: e9 i1 \7 T1 `) l5 a9 H5 g+ r; ~9 C) l3 t; u: j
P0=0x00;- f) A, w: p: a6 J6 {
dula=1;1 E3 d. y/ M7 t4 p6 I
P0=table[displaynum/10];
& i1 P/ ~" }. @. K' N6 H9 [ dula=0;
: t+ G# G0 V* H' o delayms(1);
( j3 \# n' q- X* b) U}
$ {; G( g; `. A; K% T5 {0 ~else //显示3位数,100~999
4 K$ t' K) b/ e; d3 a3 L, x, z$ U3 N7 i{% B# K# ?+ }4 D1 @
P0=0xff;4 l) y4 b$ M- [+ E t
wela=1;
% q4 \# { r% |9 N( {+ @ P0=address[5];: P0 g" V8 I# {# W" U4 }( @( K
wela=0;: z% z' m4 J, A# A
1 f* _0 k# O8 k/ Q+ M0 S
( ?4 P: w8 p" l: j6 C
P0=0x00;
u7 Q" l% t2 m. J U) r dula=1;
7 @# P4 W2 {! U' ~7 Y- \* R8 | P0=table[displaynum%10];0 H. z* K: A4 X4 e' _& d5 k
dula=0;1 C* O8 L8 ^% w" M2 Q
delayms(1);
& E- g5 L2 b$ l- m( V8 t
! C, |3 Y, x4 D& [% e$ o/ F9 Y
( t! I, ^& N$ e+ m+ N& t7 H% d6 L P0=0xff;( \) R4 L9 O7 ]" {2 |/ J
wela=1;
8 g Z+ s* @' V0 [0 H) t4 m$ p; U$ s P0=address[4]; N" K" m, w7 J- [9 f
wela=0;
; L& M" C# ]. q; f' m+ D# J+ ^2 |! a1 T$ l3 e' _% _9 Y* r
8 X2 `6 N, f2 Z. t, t6 ? P0=0x00;" t) l5 z! z$ W3 y
dula=1;
4 _3 {8 X4 ^8 B- g P0=table[displaynum%100/10];
3 {1 @4 o( m* } dula=0;
4 g1 P: {" R6 l( i delayms(1);
% y, l5 P; M, m1 ]1 V3 n1 L) @ b5 P8 t
7 S& i& P% r7 a q6 T& }5 M P0=0xff;0 J& f- J( S& `
wela=1;* f3 K( ], d- w1 |4 Z; J
P0=address[3]; }0 D, M; i, W: X& Z6 J# e
wela=0;
1 P; Y; Q4 J# s/ m Z- W9 o8 i8 y2 C
* y( d$ {) M: p
P0=0x00;0 y q7 F- Q& ~1 d( m
dula=1;
( r Q+ @4 L. b& y P0=table[displaynum/100];6 m# E' m" o8 q
dula=0;
* s/ N* _% E; t. P: Q# `
/ v( b+ _" T, h6 H; o( s
! e$ n6 N2 j( r( v* T wela=1;
: A+ b& k" k* D# B P0=address[3];: g" W; E% N( @, k1 I9 X
wela=0;* T% m* d! P' {% K5 S
4 r9 F; p4 {' W
d/ [9 _/ H" i9 R# D* g4 i P0=0x00;
4 c# x6 l4 ?2 G! h dula=1;. {8 S- Y/ h7 c2 y% S7 ?/ x8 ?
P0=0x40;" i; ~9 s4 Q1 L6 [
dula=0;
+ W; B- c5 M0 k# t: g$ L% o8 L
! O) N8 @" W2 D4 i4 Y2 \5 |* g, X3 P
3 z0 t! c8 ?; [% u+ E8 q8 {7 U4 w delayms(1); 7 U/ b/ p8 {1 n6 x. {
}
4 v4 @* r; E2 E1 k}
, l+ T- v2 t9 E5 m1 Z
/ m/ } j8 J1 C. A5 y# L
7 a# x. o2 n) Q( l+ p( ~
/ d" e; C+ S7 i8 B4 W$ f# O# C1 j3 F; `& U. F4 d
- o4 w7 n/ |; e j. f
! j( w7 j0 A) c. L
2 _' e+ P! y" F$ j8 {
& _% |. |" l1 t3 @void main()
, n: x/ T4 D# b- \# k{: u9 ~3 I' O4 l9 X) C5 {9 ^
while(1)
5 K/ G8 r, t- U5 k9 e* Z- ?2 Y& Q, _{" ]0 [. u- S# P
keyscan();9 ~' z+ d" \1 }: w& x% G1 ^
if(keynum<10)
0 J- v- M6 V! n( q- T{( h6 v9 L7 f2 y: Y2 J( k# q; F
if(flag==0)& m" j+ S/ V& ?
{" x- s! x' M( T7 _
inputnum1=keynum;' h9 r" D0 Y5 U5 y0 V
displaynum=inputnum1;
; s; g/ |- K- O& |& o0 K}
- @# T( }' u; R* {: z if(flag==1)' P+ n1 r1 E9 }! N9 @; \
{5 o! G. W5 [6 K7 ~/ U, R, k
inputnum2=keynum;
& {% U/ `0 C" `( l/ Z displaynum=inputnum2;7 R0 }" q# ]* A- E
}: P. j+ e' S, n! p
}7 L8 A! w9 K; w- i- W, q
, h& a; V8 B4 t1 o3 {2 R; T: g1 D3 M" q
if(keynum==10)
9 v: W; Q( @; G* p{
# w# a# b* L2 e% ^. u% g2 r/ fswitch(mathsign)
* b7 I& d! ~& h7 c{ P3 b6 b( f. ~( a3 s2 V4 S" h7 t
case 12: outputnum=inputnum1+inputnum2;break;) ]7 U1 |3 r* g
case 13: outputnum=inputnum1-inputnum2;break;
@1 T, H" K- n; c" I" n* q case 14: outputnum=inputnum1*inputnum2;break;7 ?; O& A- Q4 f& Z2 A; ^* Z
case 15: outputnum=inputnum1/inputnum2;break;
: ^1 M7 q2 f* c& D+ }7 N5 c2 s}
2 S6 c/ b, t1 F4 C" _5 P6 pdisplaynum=outputnum;
3 Z/ u* x' i" g4 R}
; X; _' _% r4 _$ e/ R' u, E/ r: o& ?4 ` M1 h) r
$ n6 k0 ~; { @% R
if(keynum==11)5 ^/ Z; G) d& Q, N; H
{3 K2 L/ x/ e+ k& O
displaynum=0;4 n- H$ r" Q8 Z
inputnum1=0;
' k2 T! G* P% w! H' { inputnum2=0;
6 p& b2 d0 S, _ outputnum=0;& w* W! R1 D h, s
flag=0;
$ e {5 G: T4 ~4 v4 A! K5 T keynum=16;
9 R- X& W1 b- g mathsign=0;
8 K' d/ }- a- ^}
8 F/ Q+ t, y( d! Y' d1 Q. x/ e: t; L8 C9 a6 J- Q
% P+ R; Z7 t; f4 w$ K' p' x. x. Gif((keynum>=12)&&(keynum<=15))& R9 v7 X& D# Z# n
{
8 |/ ~4 |9 P+ `8 q7 O. B' ] flag=1;+ e2 f& }& J, I+ e" K
mathsign=keynum;
, @5 \) n8 c! Y displaynum=0; % K! U+ m/ Z4 a1 Y/ q$ J+ k, {" v# }
}6 P/ ~3 x, q! H% t2 r5 F
display();2 ~5 S* A# K( z& j- Y$ \" o
}
9 _3 t0 _! N, M( C}
& y! H, `3 s* R. u6 N1 I |
|