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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
亲们  我想用定时器中段实现两个数码管显示00--59;烧好程序后,数码管就一直显示00,好像不计时;不知道问题出在哪,4 ~! Y  E3 u; w5 Z7 Z! a
程序如下:+ t5 c7 f3 Q7 {2 X$ k) E7 u& _2 X
#include<reg52.h># h! r  c8 G% E* k! h5 K# b( M
#define uchar unsigned char         //定义uchar uint4 L0 m1 ?. h: m7 \6 n5 S
#define uint unsigned int
( l, X7 D8 E, L  [3 W5 }sbit dula=P2^2;                         //定义数码管段显示" _* a2 x$ e* a* Q/ |% F& b, s
sbit weila=P2^3;                //定义数码管位显示
0 J9 E+ L; X5 P6 s5 ]- nuchar code table[]={                //定义数码管显示从0--9/ t5 N0 ?4 u) j; S' a% r
0x3f,0x06,0x5b,
: V6 o9 C0 V4 K3 O, y4 L0x4f,0x66,0x6d,$ R7 d; B1 m! ?, N" A( E3 S
0x7d,0x07,0x7f,0x6f};+ h3 n3 [- w4 G! E
$ y! c8 l+ ]. L- S. M
void display(uchar,uchar);        //声明数码管显示函数4 u/ b  @  c/ |5 A) R
void delay(uint);                //申明延时函数
. V' [7 N" \  ~" }uchar num,num1,shi,ge;+ \$ ^) f4 b2 s9 O
void main()                        //主函数9 e$ t& P# I  B$ D# a
{
  l" ]! G' o( M2 Z  TMOD=0X01;                        //定时方式选择, L) \; {" L# ^2 E) a1 {
  TH0=(65536-45872)/256;        //写定时初值
+ f% n# N! r# y7 t3 D2 j  TL0=(65536-45872)%256;
* i8 Z/ d. O* ?  EA=1;        //开启总中断9 y. a& Y* l: d1 ^2 N
  ET0=1;        //开定时器0中断* d! ~# L2 R- Z) v
  TR0=1;        //启动定时器0
8 c8 Z9 Q: D* H+ K  w' R  while(1)* p5 B3 {, g3 S% U
  {
* @; n3 R1 A. _: m  F% c. T    display(shi,ge);                //数码管显示函数
( Z" e8 \+ t( i% Z  }
8 D  q9 |- d& H2 N& |  u}
4 j- G1 L6 d% t8 {* M& H' V
7 K! L# @3 c8 N. hvoid display(uchar shi,uchar ge)        //显示函数
& w+ Z. g# F! _{4 z2 }+ q0 Q. |$ o8 T
   dula=1;                        //打开段选' ^7 t; K# K9 @8 v) n6 B9 Q# B# I. O
   P0=table[shi];
$ p+ t9 H! C8 o2 O# u, m% ^   dula=0;
  V' j. w9 I' Y4 g1 x   P0=0xff;                        //重置P0 防止数码管乱码2 d% c3 j$ O5 e; Z$ w
   weila=1;
0 s( A6 p2 N$ ?. w: T   P0=0xfe;" ^% C5 A! K, l
   weila=0;
9 j% O% e9 ]4 c; A+ A   delay(5);- F$ v& m/ m9 \: p$ V
  $ D. X7 X/ g2 x: ]$ G. Q& B2 i. e) {
   dula=1;
2 ]6 r% S0 u3 l4 d6 R   P0=table[ge];
4 G) R6 {- s: S0 a( I2 Y1 N   dula=0;
2 Z5 O$ c4 `- z" n   P0=0xff;
5 m- V3 N' [/ h  ]- Q, V/ X. E   weila=1;4 Q9 ~3 k  R% a! @9 }
   P0=0xfd;
# n, a- a" F1 Z& O" O( J9 B7 v   weila=0;
" ]* ?! U8 y1 V   delay(5);
& |0 q2 v8 X" i0 ^. g}5 |3 \% @: l, R% G- g5 a

9 i8 R6 B/ [7 U: h! r4 _void delay(uint xms)    //延时函数 延时xms ms
9 d! I6 Y- o5 T1 s( b" r- F  G{
1 m) B% k0 D" i5 n# u9 [- i4 w   uint i,j;7 F' W4 T  X- h; b( [, C) V3 F
   for(i=xms;i>0;i--)
9 O# r* S- c9 x9 u0 o1 U    for(j=110;j>0;j--);0 `; e+ V' N  m! q+ V8 s
}# Q1 Y2 G/ ]; A* s" [6 p
' Z) A5 \( {" f4 Z3 }# Q* g: C
void T0_Time() interrupt 3   //定时器0中断 定时方式1
+ s7 |1 V' R1 o) O$ p+ z, O{
7 d* {; N" j$ B; s* {TH0=(65536-45872)/256;
. x! y$ V! U3 w$ d, m. \TL0=(65536-45872)%256;( w0 w- Z+ c7 h9 Q7 M+ ~
num1++;
/ v5 L5 m5 N( V" l7 f$ Cif(num1==20)      //检测到1s了没有 5 a& e. u9 s4 B7 y8 `, ]
   {
& V, i& h$ @: s1 f; c2 u. A  u    num1=0;
1 E+ O. o+ }( Z3 h    num++;& ]) p$ R; O6 M2 w6 }2 }4 E+ x7 D
    if(num==60)   //实现两个数码管从00--59
7 f% r  n( l+ ~7 E! V    num=0;1 ?& z+ f8 N! ]& t4 ~: y
    shi=num/10;
' h9 U3 o' G* s/ b8 {+ ?5 T    ge=num%10;% h; [, G( A8 f' b' \
    }3 t, b' }6 E. w# H3 {
}

该用户从未签到

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

该用户从未签到

3#
 楼主| 发表于 2012-7-26 12:08 | 只看该作者
hi_yjs 发表于 2012-7-26 11:20
) c8 h9 @, J1 d- x9 c改成“interrup 1”才是定时器0中断

3 c4 {, @6 S7 Q. m# i# l呵呵 谢谢  刚才发现了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 16:43 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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