找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

电巢直播8月计划
查看: 735|回复: 2
打印 上一主题 下一主题

亲们,新手请教程序;使用中断实现00--59显示

[复制链接]

31

主题

113

帖子

-1万

积分

未知游客(0)

积分
-11465
跳转到指定楼层
1#
发表于 2012-7-26 10:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

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

x
亲们  我想用定时器中段实现两个数码管显示00--59;烧好程序后,数码管就一直显示00,好像不计时;不知道问题出在哪,, ]. H+ k, P9 ?7 C2 j
程序如下:8 T" j5 i+ z4 u& o' j7 R
#include<reg52.h>$ Q+ ~# z! Z" ]$ }; h* v' r% ^' l+ B
#define uchar unsigned char         //定义uchar uint! V8 b- [' n* O8 [2 `1 A+ y
#define uint unsigned int
: X2 O+ a9 h1 D& w5 @1 V& Esbit dula=P2^2;                         //定义数码管段显示7 T  w( }) R; Q; s% W
sbit weila=P2^3;                //定义数码管位显示
% @% z7 l) M! v: huchar code table[]={                //定义数码管显示从0--98 S" g5 }( ]+ @# @8 g* @  Q  g
0x3f,0x06,0x5b,
9 V  ?% @) |* t& [2 R5 t6 d6 y0x4f,0x66,0x6d,- i- d# ]4 W  B( u+ ]3 N. q
0x7d,0x07,0x7f,0x6f};
7 v: s, ^1 K( T* z& t  ^: d9 L* F% ^4 n! v
void display(uchar,uchar);        //声明数码管显示函数9 m/ Y. i  h0 j' n7 v7 E
void delay(uint);                //申明延时函数, R" j: p4 [' v6 v& G, j
uchar num,num1,shi,ge;' d8 a3 b4 [, A  X0 s
void main()                        //主函数, G% s3 K& g" [
{9 j5 t6 E+ B3 b. d; @! M2 b$ ]
  TMOD=0X01;                        //定时方式选择
1 B3 g" f! N8 ?% |8 ^  TH0=(65536-45872)/256;        //写定时初值
4 z' U2 L2 c: [  TL0=(65536-45872)%256;
, [3 z5 G3 a' e: A/ U6 G  EA=1;        //开启总中断; C5 N/ A, z4 j* u7 Y
  ET0=1;        //开定时器0中断, x6 \: K. e* X( u6 K* T% e2 ?
  TR0=1;        //启动定时器0
! _* k. B% X$ ^5 C" ?6 Y  while(1)
! {! S, T. U5 k  {
6 g8 D& X* k! g4 E6 _9 c5 D    display(shi,ge);                //数码管显示函数
4 Z( P1 G. D$ s. E* _5 H6 |: ^  }
9 T& o! X5 _0 ~4 y! S0 j' p) {}7 _2 `# n2 F) q" y- L' K
  ~6 ~* Y- M4 `" @8 _
void display(uchar shi,uchar ge)        //显示函数4 b# |/ b3 p' n. W
{
# D- O) C, l! }- [' W3 ~0 F   dula=1;                        //打开段选
, h7 I2 K: c3 M+ r, a   P0=table[shi];
0 ]! v& ^' o4 [   dula=0;
0 l2 ]( F3 r6 W$ ^% D: w& J- B9 ]7 O   P0=0xff;                        //重置P0 防止数码管乱码
7 ]5 X0 k+ P' k0 O  I5 G   weila=1;
. A& l& A' m# c- @, S   P0=0xfe;
6 Z6 V" w$ d5 X! O. K   weila=0;6 o$ j2 r; F  S' v* u+ e
   delay(5);0 @3 ^4 T6 ?1 q; j7 j+ M
  . Y9 u, o* k5 Q0 D+ V
   dula=1;
! c2 b$ c: C8 A8 A+ ], |: U- R  C   P0=table[ge];& W0 M4 j2 y/ a% n
   dula=0;
7 ~5 _, J! K1 l* V   P0=0xff;
4 k; }8 E9 P- I   weila=1;( R0 u6 G: ?7 U9 y  g; T% P
   P0=0xfd;
( q& D3 D  D3 m: g1 X   weila=0;8 r: O7 d0 T9 w6 ?" v/ |* f3 f/ D
   delay(5);: Y7 w# W+ E9 ?3 h9 |0 S
}& {( l2 B2 n* [1 _# N* B* V, ^# v

2 R2 u; T- J5 w: Evoid delay(uint xms)    //延时函数 延时xms ms$ C( J, l/ t5 J4 o
{
/ n7 |# F) z/ X   uint i,j;
  z& ^$ P0 u3 F1 v   for(i=xms;i>0;i--)
' o, v9 c7 [9 @5 R    for(j=110;j>0;j--);) B9 L9 }2 l: C
}
* q$ T( ?6 L6 b( U: ^, _" ?) D0 y) [2 T6 @+ g% C) A; Z! W- W
void T0_Time() interrupt 3   //定时器0中断 定时方式1
  Y& ?0 H$ \" x9 v; X{
" O6 f  ~5 \2 d- M/ B4 Y/ l6 ]TH0=(65536-45872)/256;
% u' H( b  Q' U! V0 q6 GTL0=(65536-45872)%256;
* {7 [/ q( d3 k7 l  K9 O2 jnum1++;% [& Z- v. V# k; G( s* P
if(num1==20)      //检测到1s了没有
# T: N( d8 @; W$ K( O5 n   {2 n/ i; _" R4 ~1 N! L
    num1=0;
+ N- x( u3 g8 s+ d) M2 [7 C) D4 k: U    num++;2 U7 c- X( c" W$ ?# z& f) j" \
    if(num==60)   //实现两个数码管从00--59
! I# {5 l( m5 V  [  ^    num=0;
# M+ Z0 H1 F8 u    shi=num/10;. e& r& b1 ?$ E+ ?2 s, U
    ge=num%10;
: f& G+ Y$ e- O0 j    }
' z3 _6 R) Y$ B) N  ^}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

13

主题

120

帖子

1219

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1219
2#
发表于 2012-7-26 11:20 | 只看该作者
改成“interrup 1”才是定时器0中断

31

主题

113

帖子

-1万

积分

未知游客(0)

积分
-11465
3#
 楼主| 发表于 2012-7-26 12:08 | 只看该作者
hi_yjs 发表于 2012-7-26 11:20
, |5 u& L( q  b. P# D改成“interrup 1”才是定时器0中断

) A; P2 V4 K( T* Q8 n/ h呵呵 谢谢  刚才发现了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-7-1 04:16 , Processed in 0.055322 second(s), 29 queries , Gzip On.

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

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

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