找回密码
 注册
关于网站域名变更的通知
查看: 339|回复: 1
打印 上一主题 下一主题

10秒秒表 精确到0.1 proteus仿真

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-18 13:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
10秒秒表 精确到0.1 proteus仿真! \8 U0 f( T/ E+ b  C# i
" g- {" n- V) M8 U2 f3 ?

! {+ r, s) l! S. j. m, U10秒秒表  精确到0.1  : |. F8 Q' z5 h; @- L
用proteus仿真' H' s( ~) A) a3 |7 {. `; [- u: x
带源文件
* y1 ^/ X# R1 F. B" c0 F' E# R仿真工程文件下载:

1 L( l3 ?; `% \! ~+ E
游客,如果您要查看本帖隐藏内容请回复

6 ?8 ~+ j* {4 c3 x2 D0 a9 w
/ |8 K- W, R6 w+ ^( j
. ]* Z1 }4 [6 r& x0 |) k8 A

1 Z$ n& F9 G7 v, X) v1 d/ @

! t% m/ C7 P) t% T! m3 q源程序:
7 L7 s* V# Z! v! m- p$ T/*     名称:10s 的秒表' U% O2 F2 x8 ]# c5 w% Y, R
       说明:首次按键计时开始,再次按键暂停,第三次按键清零。
% @0 Z! i2 O( d0 v*/
8 ~6 j8 D- h: W+ N( P5 h5 I           #include<reg51.h>
9 x+ A4 t" }/ h% C$ y#define uchar unsigned char
) U; n9 Q# D" K, S! j, _#define uint unsigned int: F- B' ^4 W) J( J+ [
sbit K1=P3^7;
2 S. g! `8 @2 t6 L% o2 \uchar
0 I: k  h9 A: J3 z6 F' T: x0 ]4 ?i,Second_Counts,Key_Flag_Idx;+ w# V. U4 [5 s0 o
bit Key_State;
0 j/ O6 w/ ^! C  \4 a" xuchar' S) e! Z) J+ E  O$ I# K$ {
DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};' U! H! X' C0 I3 ^' V1 Q
//延时5 U0 t2 C; C* u1 A9 [1 ]
void DelayMS(uint ms)
! P% f* l% W- W% V: S{2 K' Y, Q: ^! U9 w; t6 v/ ^
uchar t;" t2 H9 K( i. N! V, q% K$ Z
while(ms--) for(t=0;t<120;t++);
. G3 I+ Z  W7 x}
& _. |8 N; o" T* Z2 r- w5 N//处理按键事件
; Q# Z6 C$ E% Zvoid Key_Event_Handle()
2 M: r+ G5 e  u2 \, e+ c- R{
. |3 s! h' F! ^. m% a6 W$ L if(Key_State==0)  S3 h3 T7 Z) c0 N" S+ Q- K4 B
{
, r+ y, y, u5 w1 T" U. U9 G' S+ q Key_Flag_Idx=(Key_Flag_Idx+1)%3;9 t  u! [, z/ e. @2 T
switch(Key_Flag_Idx). V4 \) v) D" h% F. L% u2 G7 f
{
1 u, e; j7 M+ w" r! m1 N4 S case 1: EA=1;ET0=1;TR0=1;break;2 ^  s* X* x1 e! W1 \; A
case 2: EA=0;ET0=0;TR0=0;break;4 N. m7 c, H& e
case 0: P0=0x3f2=0x3f;i=0;Second_Counts=0;
& f+ M- }4 y0 @" N( N" f }
2 D0 o$ [1 Y" r- @}5 I/ X4 `! N: z5 B3 ^
}
) @4 @' T2 v6 Q7 P8 M! ?//主程序  A3 A- O' s2 Z! n. A5 n2 I
void main()
" c: q* t1 j$ P2 e{% V7 Z7 i% |1 X6 D
P0=0x3f; //显示 00
# x- w- O( V1 Z. q( i P2=0x3f;, z/ V7 [: B5 u
i=0;
5 j. C2 t8 A% j- D, w$ j6 u% J( j Second_Counts=0;
# w+ p8 @+ F, D3 V; Q/ V: I' L Key_Flag_Idx=0; //按键次数(取值 0,1,2,3)
5 f6 e: n7 K" w. `2 { Key_State=1; //按键状态
; X- Z; \5 a5 P$ a' @ TMOD=0x01; //定时器 0 方式 1: l& `0 _* Z) T# M; P6 L, O7 s
TH0=(65536-50000)/256; //定时器 0:15ms* C% @( M* V% t+ ?) ^! G
TL0=(65536-50000)%256;
( H0 H) F. G! i) {! { while(1). X& e& K  e3 U
{
/ Z( F7 {, I" O; T( m* D) i if(Key_State!=K1)  ^8 h2 W9 V5 Y6 |  Y, \
{3 K) R2 R2 W5 B! z+ O$ V
DelayMS(10);
8 o* e6 C; E( K8 Q# z. B Key_State=K1;
$ d& C6 o  U7 K- u! a Key_Event_Handle();" s# H( e) \2 Y8 ?3 F! W
}- l$ b( g! O; ?! L
}# I7 F5 Y+ g; I5 R5 ]! ]0 s$ ]
}
, Y* K' [  ?0 q: Q( E" l7 ~- K8 F4 y//T0 中断函数
: |. p! Z: A2 ]1 Uvoid DSY_Refresh() interrupt 1
4 ~$ p! K" S' o4 l# n% z{
, x& z! G2 h+ X/ g7 r TH0=(65536-50000)/256; //恢复定时器 0 初值4 c* r: y/ x- T9 y, r
TL0=(65536-50000)%256;
# y7 c2 p! T; T' n* w' o; ?  P if(++i==2) //50ms*2=0.1s 转换状态
- l% t. c& |; H" P {  q3 h2 e6 H5 y
i=0;
7 M3 U& r6 @+ @# ]& `& ~8 { Second_Counts++;- P4 W- P* r% v8 S
P0=DSY_CODE[Second_Counts/10];
: o2 z  f  v& e/ T! x P2=DSY_CODE[Second_Counts%10];, e  i$ P+ U: J4 D9 H0 Z. K
if(Second_Counts==100) Second_Counts=0; //满 100(10s)后显示 00
& }' B+ m) I  ~3 D }; B# _) s* b6 _6 p- i, V8 a
}
6 X; c* ^# e; \% w1 u" K1 H6 [

: d) g- e& b' p' h4 X0 s' W* j
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-7 01:42 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表