还是闪,是不是这种程序里不适合if语句呀,我用除余数的方法如下程序就好了。
. S- L9 p1 ~' t: M2 V7 Z8 h#include <AT89X51.H>/ H7 t& b! r8 F/ P* i( T
unsigned char code led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
J, U% C+ U+ K2 N2 A! Gint i=0,j=0,k=1,a=0,js;+ s& e: [8 o& e: Z, J
sbit beep=P2^1;4 w# M, ^: \; i/ _5 E6 z0 W" q
sbit P35=P3^5;" k7 K6 x2 R( q
sbit P36=P3^6;" v( N! H5 {+ D2 g2 L% G( `/ }
sbit P37=P3^7;8 n0 i. X* d$ n
void delay(int aa)
% M( M- C. S. o; W* J: r+ n{int y,z; H; \- t" ]8 n; P% p
for(y=0;y<aa;y++)
( G3 H" K+ Z4 i Jfor(z=0;z<60;z++);2 d5 I- b! c7 Z8 P: |/ d) I/ O
}- i' |5 l' I) f1 v% u
9 E! w7 F6 F+ }
void main(void)* W0 l9 D; q; G' G
{
6 e! d7 ~9 M' IEA=1;
( a( ]) B9 C3 t1 v5 o" o, V# @- `ET0=1;
) t# ?5 ~% r& L# sTMOD=0x01;
4 P! `$ K% o+ h! oTH0=0xff;
9 f) m/ {: T) C5 vTL0=0xff;( _4 h; S) r1 q f% Q5 i0 D3 {0 M
TR0=1;
. I( S D5 I* Z% X( h* p, ?while(1)
% q* L8 j5 h; R4 ~0 C& ?# V; k{$ b) c" _/ S M8 l% W
for(i=100;i>=0;i--)
: k* N1 K3 r4 X{
# g0 k' x) A% B- X) Ijs=i;
, {7 e3 e1 t8 G2 P delay(500); }
: q" K6 `) {/ d$ o5 i } }
& Y, x' W- s1 {( F
) ^5 Y( `9 t+ d5 i( I- U4 U. s) D2 h5 t) O2 v
void timer0() interrupt 11 X+ d$ M# x T e* X0 {# `
{. D* }0 T, z$ D5 [; q/ O& v) {# N; [: X& }
P0=led[js/100];3 u, J5 a! y* G6 X- I
P35=0;
$ Q; F3 D5 D- K6 @) y delay(5);
/ E" X. C# b( o2 @2 h P35=1;
5 V3 i/ E5 @) I, z+ o2 H P0=led[(js-(js/100)*100)/10];
6 i' N" ]7 g9 R- @$ c) cP36=0;
* Z* f! P; {, R) q/ z, h3 h delay(5);
% I( a: G- {+ L P36=1;
' `2 L# n, B0 `: z; V! P P0=led[(js-(js/100)*100)-((js-(js/100)*100)/10)*10];
' ~+ O; l v( T2 J, D3 c4 l; F) cP37=0;
& s" Z6 b& L* g" D$ o% N6 R8 Y delay(5);, f2 e; X( S+ k6 e1 ?; w0 Z4 T
P37=1;
4 x/ ]; F+ R% [4 X) ]; `0 S
; I. f9 P0 h+ ETH0=0xB1;
0 j! t. M, o# ^5 V7 sTL0=0xE0;' k1 s; J. }) M+ x
; b% K0 r6 p6 I t0 H} |