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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
亲们  我想用定时器中段实现两个数码管显示00--59;烧好程序后,数码管就一直显示00,好像不计时;不知道问题出在哪,
' S( a# m8 y! y程序如下:
) Q. w* V! k1 Z: E3 [5 P6 ~#include<reg52.h>9 r; L: n4 b6 k0 ]; i1 z
#define uchar unsigned char         //定义uchar uint+ J0 h7 u. y: ?1 W5 `
#define uint unsigned int
+ ?- j4 p1 h7 hsbit dula=P2^2;                         //定义数码管段显示' L  m: O# i3 g: ]8 m* j1 U; U9 g3 r8 E
sbit weila=P2^3;                //定义数码管位显示% P4 ^8 m# x  E% d( K1 }' O
uchar code table[]={                //定义数码管显示从0--9( o' }' @0 M6 Z0 a7 @: m
0x3f,0x06,0x5b,  M* a" X1 x/ f
0x4f,0x66,0x6d,
- N1 `, s/ R( v; ?  J/ H1 a0x7d,0x07,0x7f,0x6f};
2 N9 j6 L+ U1 o1 o3 A" C8 B
: X; C- [1 N4 I9 s2 evoid display(uchar,uchar);        //声明数码管显示函数$ s' e8 ~, Q/ _& H7 Q% P4 V
void delay(uint);                //申明延时函数
; j0 z; O' F- `+ K' Quchar num,num1,shi,ge;% a$ @) }+ P9 Z1 ]8 Q8 C
void main()                        //主函数8 w& [; A3 Q+ P0 s
{
' ?, I% c# D3 t& g5 F8 z$ B3 L# j  TMOD=0X01;                        //定时方式选择) U) x. R9 B$ m
  TH0=(65536-45872)/256;        //写定时初值& b! ], d4 f7 Y" h# `6 `, b
  TL0=(65536-45872)%256;" }% G; q* N, x, U
  EA=1;        //开启总中断
; Z# N+ [0 C' R( W. c9 [9 n8 \  ET0=1;        //开定时器0中断* e$ O: k) ^9 L! b( W
  TR0=1;        //启动定时器0
/ x5 b, m/ g" C7 C" v  while(1)
1 Z* G8 h4 Q' X  i' T  {; [" h: ]% E  R) ^% L
    display(shi,ge);                //数码管显示函数
' ~. t. C- |. G& `, v$ G; X- {  }
. U7 \0 t. u7 U/ u$ O9 i}. u- z( _5 q6 r6 R" \5 Y

5 a- C& ~- U" u6 Bvoid display(uchar shi,uchar ge)        //显示函数
! G% q% E6 T7 y0 s& T; v{7 y) f8 m9 l! e1 ^9 K
   dula=1;                        //打开段选
7 Y( F# f# {! L) D   P0=table[shi];
( {6 W9 |$ [/ ?2 s; G   dula=0;9 t' [  v( C# e/ x, d1 j
   P0=0xff;                        //重置P0 防止数码管乱码
% q0 _* J  P( ?   weila=1;
0 I1 K8 {3 C) x. A; a* \   P0=0xfe;- V! |: ~5 S8 K) y
   weila=0;
+ B3 a; Q* A, M) s0 E   delay(5);7 r3 z9 k; |# j. S: W  R
  ( v  Y, F6 D5 |- n; z
   dula=1;) U* f; H% T( \8 r& A+ p
   P0=table[ge];5 d- \5 u5 b6 l4 u9 [/ y
   dula=0;
. Y* }" g% @' [: ^& n   P0=0xff;* z1 G; t( w: [: E
   weila=1;0 r, L8 e4 W- _& u
   P0=0xfd;
4 t: L- M/ z9 ]   weila=0;
5 f- }  F9 Y* J# Q   delay(5);
" v* z2 H4 [; R7 D- t}! Q- m: w4 @& ?2 F' L1 I0 Z' U

) n1 y1 Q4 I* ~5 g7 S) m! \' ]1 p( Jvoid delay(uint xms)    //延时函数 延时xms ms0 T! q' s4 g+ I
{
: ~! V" ]& ?( F   uint i,j;
: ?" t" W7 ~  ~3 `% j- y* x   for(i=xms;i>0;i--)7 U" z5 k/ ]3 {) U" k
    for(j=110;j>0;j--);9 G! }/ \1 r; D0 I! ?
}
. F$ b& s! Q, [, b' G6 l  m3 D) O# m
void T0_Time() interrupt 3   //定时器0中断 定时方式19 L! Y- n5 D) w1 P" Z
{
7 s, s1 |' K, YTH0=(65536-45872)/256;( d0 C, R. x* p& h- u+ c$ _
TL0=(65536-45872)%256;0 r6 T  E1 o, ~8 f
num1++;
, y+ K/ B0 j2 e' j  }/ c3 tif(num1==20)      //检测到1s了没有 - [5 Y( J6 X' N4 b! L. q
   {) L  e; ^& e3 j) y5 Y" y
    num1=0;1 q" L" ~3 \1 h# [5 h1 Q1 k
    num++;
& _! h( z6 e5 o" L6 B$ w9 ?    if(num==60)   //实现两个数码管从00--59
9 x& I+ W2 z1 ^1 `    num=0;; u9 S' \5 g- F, q7 B
    shi=num/10;) C) @# c0 N" O: n
    ge=num%10;
, b, |; _4 c1 Z) A' Q) F    }) }$ x0 R. d% e0 a1 V
}

该用户从未签到

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

该用户从未签到

3#
 楼主| 发表于 2012-7-26 12:08 | 只看该作者
hi_yjs 发表于 2012-7-26 11:20 ( G' X, H1 b4 q5 {
改成“interrup 1”才是定时器0中断
7 u$ J9 b0 X( Z; {* D
呵呵 谢谢  刚才发现了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-20 08:58 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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