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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
亲们  我想用定时器中段实现两个数码管显示00--59;烧好程序后,数码管就一直显示00,好像不计时;不知道问题出在哪,* `3 q" v/ x2 |
程序如下:& O8 p4 G# ^1 U, C5 h" W
#include<reg52.h>* d, @4 l* v2 x$ }: i/ ^3 J/ z) a
#define uchar unsigned char         //定义uchar uint6 \/ ]) T# x# L
#define uint unsigned int
, Z+ J4 l+ j/ ?5 \$ t) V7 T: Qsbit dula=P2^2;                         //定义数码管段显示
6 i3 s. p/ V7 u" p  C1 [0 X5 `. |sbit weila=P2^3;                //定义数码管位显示
$ }" ]9 E$ [" {, e8 yuchar code table[]={                //定义数码管显示从0--9- p5 C! h& Q) W
0x3f,0x06,0x5b,/ D2 b% c; z; v& n2 A+ r2 ~
0x4f,0x66,0x6d,
' i) J  o2 @6 C0x7d,0x07,0x7f,0x6f};
. z* q$ b) l  i; E; W' Q0 y4 Y1 u$ i7 }! q
void display(uchar,uchar);        //声明数码管显示函数
8 d' w3 W+ i1 A# S( k" O( Fvoid delay(uint);                //申明延时函数
* b3 m: T$ S# H$ a" r+ v3 q# y/ Kuchar num,num1,shi,ge;0 \+ I( S, f7 q8 S$ w, ?5 X
void main()                        //主函数
2 A7 J5 N- Y+ U% S" d/ Y9 @  u{
, P, v# I; o5 E  TMOD=0X01;                        //定时方式选择
: z9 p. h( v* W  TH0=(65536-45872)/256;        //写定时初值4 H( W( G" ~6 ^
  TL0=(65536-45872)%256;
6 v0 g7 D& D2 i6 \  EA=1;        //开启总中断
* h3 K4 P" `0 i$ R  ET0=1;        //开定时器0中断2 P; G* e; @' m- j1 C
  TR0=1;        //启动定时器0
9 j, [  \+ L" L  while(1)
4 u# ^# t8 {; q5 Q! ?/ l8 f0 x+ S  {
( n1 P2 z- R, D: Y5 v- X    display(shi,ge);                //数码管显示函数
. X2 l+ _% A2 [7 ]- _1 Z" Y  }0 B) {9 f/ X. Q/ ~: I) X3 \7 X
}7 @" |) d4 ]! k2 d
- D% R5 @5 \* y
void display(uchar shi,uchar ge)        //显示函数
/ L" v* D* Q$ i, U{
0 L/ s0 i  y/ z0 j- y5 _   dula=1;                        //打开段选, V/ j1 m( }" ], }
   P0=table[shi];
, w- o  a8 U9 f3 J, v( f$ ^   dula=0;  }$ J7 o3 }% t3 Z8 k1 X* h
   P0=0xff;                        //重置P0 防止数码管乱码
' l0 S# S1 `* v$ D, a8 Q   weila=1;. U' F8 _* b; [: c
   P0=0xfe;& u7 @& ~/ p( P+ j/ [7 Q4 r% r: {
   weila=0;# p9 N  G6 b' q
   delay(5);* E  [0 o" T0 U6 k$ V% h$ g" G9 l
  : {4 W7 ~. D) P$ S/ d. w
   dula=1;9 C9 r# V, X, }
   P0=table[ge];/ u$ D7 ^) ]; [# ]
   dula=0;
8 V* l1 c# F3 |) o5 H   P0=0xff;
7 M5 h0 r& X/ n; L; P  \   weila=1;
# e' ]0 ?3 A, s( L" R+ p; r% {* O   P0=0xfd;$ G4 k5 {) y- y
   weila=0;2 V' c% _) x' @8 E
   delay(5);
3 ]3 y$ Y! A' f1 u0 t3 |}
5 i, D" r% l) \7 v- U) l9 Y0 N
+ o# I; Q0 }2 C8 ~2 Q& b$ ?void delay(uint xms)    //延时函数 延时xms ms
7 f) `% o" O' f- z{1 L- \( C5 N  b6 Y! d
   uint i,j;
0 ?- D8 \. f9 |   for(i=xms;i>0;i--)
' O8 P. S, B3 B# X% e3 f) j! ]  D" x    for(j=110;j>0;j--);
2 i1 Q0 K6 w/ |9 |$ w}
& r# Y! k' Z' {8 H" x1 ^) r) I; n% V
void T0_Time() interrupt 3   //定时器0中断 定时方式1  y5 q; V. U. ^6 x: d. o
{/ ], V. K7 s4 m* N$ ]* ~
TH0=(65536-45872)/256;4 \) o; }! w3 J$ |
TL0=(65536-45872)%256;% v$ D/ n3 v1 n2 c8 W& D
num1++;8 o* d2 e  g9 {
if(num1==20)      //检测到1s了没有
" I. i2 [, B/ X   {
; G1 i0 A3 @4 \: \0 }    num1=0;4 J) ^2 e# p, I
    num++;
8 J) Q# A  D' Y6 k$ T# q% k! i! K- B$ d    if(num==60)   //实现两个数码管从00--59/ R/ S! w, I. i
    num=0;% w. k  k. \+ a; D$ d% J
    shi=num/10;: o# {7 s. O* c5 }) L
    ge=num%10;
8 a% X( Y$ [8 D) q) d& o* ?. C    }7 B& t1 ]7 M6 h/ M. x* N
}

该用户从未签到

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

该用户从未签到

3#
 楼主| 发表于 2012-7-26 12:08 | 只看该作者
hi_yjs 发表于 2012-7-26 11:20
( Q% L7 O/ b% X: v  P" J改成“interrup 1”才是定时器0中断

, P  f: s) s# h0 [. y9 {. R呵呵 谢谢  刚才发现了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-10 10:20 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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