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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
亲们  我想用定时器中段实现两个数码管显示00--59;烧好程序后,数码管就一直显示00,好像不计时;不知道问题出在哪,7 E7 R0 Q- |/ `- L
程序如下:. |) V! l3 {; O" m$ \5 @
#include<reg52.h>
4 y8 r( R) O$ Y7 _$ }, Y#define uchar unsigned char         //定义uchar uint
0 X9 u5 w' F. j6 k0 H#define uint unsigned int
* X+ N* ^& L3 Q6 X& V4 l4 {2 b" k4 v7 Lsbit dula=P2^2;                         //定义数码管段显示: Z& H8 L/ u- r# v
sbit weila=P2^3;                //定义数码管位显示  y7 b# g% m+ n! Z2 C: I3 w
uchar code table[]={                //定义数码管显示从0--9
  j9 T3 x. {" b( Q2 M4 _- Y0x3f,0x06,0x5b,* Q1 Q& N" ?' _7 S$ \
0x4f,0x66,0x6d,( {& J. T2 m- O+ F+ s% m; D
0x7d,0x07,0x7f,0x6f};
! h' [" K% ~  U! j1 [
6 q. G0 C# S0 I: bvoid display(uchar,uchar);        //声明数码管显示函数2 L) F# f8 j+ e8 S
void delay(uint);                //申明延时函数7 C% \& e* |; z8 a8 N
uchar num,num1,shi,ge;
# |+ g, p: D/ G: C  |& [void main()                        //主函数: z) D4 ]2 V' E
{, x7 L/ }% C, l' C9 `0 d
  TMOD=0X01;                        //定时方式选择8 N9 P) k+ P8 W2 }+ p4 X- w
  TH0=(65536-45872)/256;        //写定时初值- t& o9 e1 U: Z
  TL0=(65536-45872)%256;; N# W) ^( O3 n) G6 \3 \& W4 c! T
  EA=1;        //开启总中断
5 L: G# E9 l% \" _  ET0=1;        //开定时器0中断* A9 ?4 [! K3 w9 q
  TR0=1;        //启动定时器09 p. t0 b) T0 G( {
  while(1)
1 v' @% G# U' X" D  {3 M2 d3 |' F( c" w! _1 @
    display(shi,ge);                //数码管显示函数
9 {/ ]5 a; T5 A( O9 `2 D  }' S. R0 j; n9 J- j9 E4 I2 R7 a* n  g
}
1 I! w$ Y7 `% M, b. ?& g1 {4 i# i( d' r, u  R0 ?( y4 F1 A
void display(uchar shi,uchar ge)        //显示函数
) |3 b8 g3 ?/ N% N) r' t" U! M{
5 V* [0 D. n" g/ h) o7 N; l! W   dula=1;                        //打开段选
: B( p1 R) w4 Y   P0=table[shi];
9 H: |% ?4 e, y: C' `   dula=0;
3 T0 I3 s1 J! |# L" t' F, d   P0=0xff;                        //重置P0 防止数码管乱码9 m4 C; S+ K) d' u# X; x1 q5 ?
   weila=1;
& q' a+ d& P! r. F   P0=0xfe;
" z; s7 @# Q4 c  U7 E7 A1 }   weila=0;, [& Q, o; N; T6 h) l2 h
   delay(5);
, Z; P! I& _; Z# v/ I  " D8 ]" ]0 k# W+ e* ~( x
   dula=1;/ R6 n* w. x  j' ~" d$ i% w7 o
   P0=table[ge];
2 q2 c! z9 w  L! {0 N# ^% H   dula=0;- o- `2 w# ?/ \* X* ?1 z
   P0=0xff;  c! [5 p- l& w" n/ G, p- e, M9 H, C
   weila=1;3 B7 C4 d, ]8 X; `( n5 a
   P0=0xfd;' f3 `( W) K8 H% {  a' T, }9 C
   weila=0;- g) @$ F, s2 {  F1 _: z
   delay(5);
2 X& b- d& _# q( e. {}
+ e3 U: ], W: _4 h# e, K) T
- C) K2 K% O. m- E$ P, k/ l7 {void delay(uint xms)    //延时函数 延时xms ms
: h$ q. E2 \9 Z  ~{9 p4 e" x$ Q' z* v5 n
   uint i,j;
4 [' ]0 A' K  Z* T8 F) E/ U% s   for(i=xms;i>0;i--)
- q+ p! ?4 ?- \9 x2 a; s    for(j=110;j>0;j--);
1 @4 g  E$ U; {8 a}
' C! |0 G- F; j: `" @4 c6 T( `: l* D
void T0_Time() interrupt 3   //定时器0中断 定时方式13 h: `- W& e) o$ i" T' c$ h9 L, e
{
' Z! N, E. Z& `. }! ^2 G- I& kTH0=(65536-45872)/256;
* p# U; Y" E* j0 n: [- QTL0=(65536-45872)%256;
! G' E1 i2 v4 H( Z: G+ A" Unum1++;  c4 ], `+ L; v. M5 P# c7 H+ Z8 j
if(num1==20)      //检测到1s了没有
# Z. m* a5 |) r& x   {
: c, N3 F9 M& E# o" B: R. }    num1=0;
; ^* u& t6 N: J% e, ^8 M    num++;; `; h3 v  B# c4 y' d9 G3 A: F/ w
    if(num==60)   //实现两个数码管从00--59/ x4 m/ L0 i0 C7 [# j0 l# m* ~6 [. m. @
    num=0;7 j" `+ I& k6 R! u% b2 k
    shi=num/10;) f' _! Q: A7 `7 @' b
    ge=num%10;
1 N- {% Z5 H+ o0 d) v9 T, y    }- w+ s1 U% Q* ]% ~. {* P; Y
}

该用户从未签到

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

该用户从未签到

3#
 楼主| 发表于 2012-7-26 12:08 | 只看该作者
hi_yjs 发表于 2012-7-26 11:20 ! s; V9 e& E4 k) w7 n& p. X
改成“interrup 1”才是定时器0中断

3 i  q7 m1 ~# v$ f( l; i* |: w/ r" Z呵呵 谢谢  刚才发现了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-11 04:54 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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