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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
亲们  我想用定时器中段实现两个数码管显示00--59;烧好程序后,数码管就一直显示00,好像不计时;不知道问题出在哪,
: k6 q; J* f& ?( ]% R程序如下:8 Y" e7 e( U0 ]
#include<reg52.h>. c& c' M6 w# ~9 a' }) B9 @
#define uchar unsigned char         //定义uchar uint: G* C8 p! h( r
#define uint unsigned int
' {1 |7 j+ D7 ]6 h" k9 a5 usbit dula=P2^2;                         //定义数码管段显示
  S/ ]4 p) n$ _+ X" [sbit weila=P2^3;                //定义数码管位显示
0 D% z" \1 q( q# duchar code table[]={                //定义数码管显示从0--9
1 p8 Y" s% D) }# ~0x3f,0x06,0x5b,
0 [- N1 o. ~  q# P% k% K( D/ F$ r6 d0x4f,0x66,0x6d,
- S- p; w4 @! s& Q2 _1 u! X; L% [5 Q0x7d,0x07,0x7f,0x6f};$ Y5 f" u( I/ E/ C# ?1 }' X/ z

3 k* U; [8 b9 D* z" B) kvoid display(uchar,uchar);        //声明数码管显示函数
1 z2 F/ j* ?/ A% F6 Z8 Evoid delay(uint);                //申明延时函数5 O4 p( b. Q* O2 i# e* k
uchar num,num1,shi,ge;
0 d! z0 k8 [" V/ ^6 }) y! cvoid main()                        //主函数9 @/ d- }3 M0 r5 P
{
. x" J+ u/ r: M5 p. u* t6 A8 y& I5 ]  TMOD=0X01;                        //定时方式选择
. W$ d- A$ {; c* C" ]  TH0=(65536-45872)/256;        //写定时初值7 T$ G. r4 K& _& N! A
  TL0=(65536-45872)%256;
% _- G; V- e; R# L1 B5 m  EA=1;        //开启总中断7 n* K6 L- |$ j$ C" x5 ]
  ET0=1;        //开定时器0中断
: @' S& g* k% T, X  TR0=1;        //启动定时器0
) y! _- C) a2 K- R  while(1)/ W9 N9 S3 s  w' M
  {% Q1 r2 x1 r1 i
    display(shi,ge);                //数码管显示函数
2 m# v5 s, F( U! l. {" g% H! v  }, M( ?: }" E9 _& c- u/ G. p# u
}
8 T$ Y# p1 \3 }( ~+ H1 a2 K: E$ o4 j& H
void display(uchar shi,uchar ge)        //显示函数
8 a! O# P1 T. H2 W) t{8 J% x- w7 c" I, s; [' A5 ?1 U- x
   dula=1;                        //打开段选1 M6 e2 Q  h1 X" O9 @
   P0=table[shi];* Q" A# u$ f+ s: A& J: Z
   dula=0;
4 H6 N/ U' o& K0 n0 P! g8 J   P0=0xff;                        //重置P0 防止数码管乱码
$ h) C' N0 `: }. v+ B   weila=1;
# o" g1 v+ r! x& ?+ y4 y   P0=0xfe;
# v2 N1 `5 \8 j0 \2 x* |# H   weila=0;& P, t4 w1 G: s/ T
   delay(5);( s' Y1 U! U7 V
  
$ H* [0 p9 y0 Y; a7 N/ V1 V/ @   dula=1;3 Q) H6 I2 x7 V) I, `2 j& P
   P0=table[ge];
; w" @  O' l8 q5 i   dula=0;
) k% @! ]( A7 ~1 c% m   P0=0xff;3 D* ^9 X& d& z, p& g0 V3 t0 y
   weila=1;
1 i9 O' H& x2 y, D/ K; ~   P0=0xfd;$ {, K% ], P' z- D! ?
   weila=0;
. c  y9 H8 k. G$ a   delay(5);) h: b9 z' _5 I: M/ e* F1 i
}+ @# O  [3 M* ]( B
' N3 Y# A: G/ w+ x" ]
void delay(uint xms)    //延时函数 延时xms ms
$ J/ u- W  ~9 ^{
2 p& T# k* A# [; Z   uint i,j;
; h* d' |" g% s" E% L  t" g   for(i=xms;i>0;i--)0 \2 r& s' |; p
    for(j=110;j>0;j--);% K! V# k/ w8 t( K  c
}
0 k) ~% n5 I1 @% q8 E8 q/ ^! }" l* b; `
void T0_Time() interrupt 3   //定时器0中断 定时方式1  W: s) b" _7 \1 @- n4 V1 w' H
{8 ^5 X: t; y% f- S/ K& }& X
TH0=(65536-45872)/256;
# y' t/ y+ @3 Y0 `' Q4 u9 KTL0=(65536-45872)%256;
/ D2 B* c- D. [6 V, ?" o2 x+ Z3 inum1++;
0 e9 a" p2 W+ S+ P/ ]5 f- D7 M9 Iif(num1==20)      //检测到1s了没有 ' w. x4 Z6 \% R6 i7 U# t
   {
7 x* \6 f: b) D) b0 r" T    num1=0;
6 t5 ~: B+ o7 h/ @4 A    num++;
# \. ]& E8 y% y. T8 E    if(num==60)   //实现两个数码管从00--59
. C  _$ t. e6 t2 _    num=0;
' Y  r" z1 p0 @+ A( j' t    shi=num/10;
' o4 y; N% G; i: v& O    ge=num%10;9 G- @* n2 s' t2 Y" h3 S2 k% }
    }" e% E8 }: u! f# Q) i3 W
}

该用户从未签到

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

该用户从未签到

3#
 楼主| 发表于 2012-7-26 12:08 | 只看该作者
hi_yjs 发表于 2012-7-26 11:20 . f0 q/ K3 r) j, G( {/ H
改成“interrup 1”才是定时器0中断
0 K7 S8 r& z  L1 h1 E3 O
呵呵 谢谢  刚才发现了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-4 10:10 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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