找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 729|回复: 2
打印 上一主题 下一主题

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

[复制链接]

31

主题

113

帖子

-1万

积分

未知游客(0)

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

EDA365欢迎您!

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

x
亲们  我想用定时器中段实现两个数码管显示00--59;烧好程序后,数码管就一直显示00,好像不计时;不知道问题出在哪,# f3 ^  b: e" B5 u% a2 n; h
程序如下:" W' i8 h: B! j0 a# A
#include<reg52.h>8 K* u( T0 j9 Y; Q4 c2 o+ k+ T
#define uchar unsigned char         //定义uchar uint, {6 }* M9 x7 G* w% @4 U: Y' \
#define uint unsigned int
$ X. v! M* s1 j2 l  Vsbit dula=P2^2;                         //定义数码管段显示
6 ]2 h5 S" S2 tsbit weila=P2^3;                //定义数码管位显示
7 }$ n+ R6 `+ G# t6 _uchar code table[]={                //定义数码管显示从0--9/ V5 h# J) m6 R: x* w+ ~
0x3f,0x06,0x5b,7 J; Q6 h* N7 s0 c0 U1 K' c
0x4f,0x66,0x6d,; b; t, x- p, P# P% ~9 [0 E, X8 |
0x7d,0x07,0x7f,0x6f};
$ b5 B# w$ ^9 D6 n! z! X) O. j5 Q2 u1 A: ]. Y
void display(uchar,uchar);        //声明数码管显示函数
5 b7 d0 @5 t( c* svoid delay(uint);                //申明延时函数
( ]2 i1 @* n7 x; n8 u& S1 Quchar num,num1,shi,ge;7 y# ~( w! \$ J" G
void main()                        //主函数
: T  t8 v& H( T1 f5 }; I0 u{/ V, O& J: [0 e$ J" o8 \# l4 |5 @6 z* n
  TMOD=0X01;                        //定时方式选择, H4 K7 y9 w( p. x
  TH0=(65536-45872)/256;        //写定时初值) y7 h2 R+ O+ p4 R: _
  TL0=(65536-45872)%256;
5 u- ^7 K8 l0 L  EA=1;        //开启总中断/ w* s: {) A! L' e. p; T
  ET0=1;        //开定时器0中断
  W2 ~2 \* P6 h8 Y: s0 B. ~  TR0=1;        //启动定时器0$ z: X" H, R1 O* d
  while(1)9 @5 d" {$ w8 D# B
  {
1 @2 @( r. a7 W    display(shi,ge);                //数码管显示函数: Y& I" m8 p5 H0 D/ w
  }
) E& `- \$ \) ?; v}7 Z- m2 j: U9 U+ h- ]

/ p, w. ?6 h% L0 p& p- Uvoid display(uchar shi,uchar ge)        //显示函数" j, f( {* |0 L5 t8 E
{
- \' s: ~+ [9 w2 p% r# j   dula=1;                        //打开段选
$ T& Z, L0 s/ \) }! D   P0=table[shi];
* w. U2 k0 b- l8 V/ g8 Z   dula=0;
1 r1 i1 r/ |7 {. G$ a) @   P0=0xff;                        //重置P0 防止数码管乱码4 S5 f) Q- Q; q/ o. }0 Z
   weila=1;
  r8 k% r( Z5 Z/ a$ P/ r- v- o   P0=0xfe;
' x+ r3 P, a' }: R& ]  v   weila=0;: \1 S) ~: p# T: c1 ~
   delay(5);& v: n: W9 t6 L8 m2 [9 G
  , C: D0 g  Q: U( e
   dula=1;1 r  @, X2 T8 P& I& H
   P0=table[ge];8 H: c9 F+ s  M$ |% w0 m6 r
   dula=0;! O6 a( K+ _! X( D8 m
   P0=0xff;' m& j3 x5 P0 U8 R2 R% v
   weila=1;
! X8 f9 x5 r# {; F/ L   P0=0xfd;2 W$ ~8 \1 J3 G% S4 s
   weila=0;
: ?! ?: h- O' W! L3 G" @  a6 _% k$ @3 O   delay(5);
3 z) Y7 j* W; ^# |$ ~- ]}+ W6 Y6 o% L; _3 w) p8 b* C
; h7 }4 i. T: w! D3 I; X9 S
void delay(uint xms)    //延时函数 延时xms ms
$ B0 r2 ?2 j, e1 p{. n4 ?6 r5 a4 j- Z( J* |3 ~5 c# F
   uint i,j;
7 [6 Q! n+ j; w. x* q   for(i=xms;i>0;i--)3 h1 F0 C( p" s! n1 \! |
    for(j=110;j>0;j--);) b! d2 A9 P( t" j; t8 ], W
}. h- l: A  k- [/ v
7 ?: r1 w9 @/ A, J1 u) L
void T0_Time() interrupt 3   //定时器0中断 定时方式1! D2 F, [7 e7 \& S& s
{6 ]% q$ z9 F* X/ s
TH0=(65536-45872)/256;' E3 l* @+ O" ~4 |4 |  n- |- u+ A
TL0=(65536-45872)%256;& p9 y% p5 F* g$ x, X5 t
num1++;
; |# t* m- H  k' A: q" U2 m0 }if(num1==20)      //检测到1s了没有 / a# @0 h- [3 k
   {
& ?5 I- j7 j$ i+ A    num1=0;- |) l" h7 @7 A* `( h
    num++;
7 Q) R( V+ M( }6 i    if(num==60)   //实现两个数码管从00--59
; Z+ {( b3 g) x    num=0;4 y. H  [+ W3 o* e# h6 {4 v5 k9 u
    shi=num/10;! w% v  {! t; e% A7 D( F! N
    ge=num%10;
* m( `9 Z% q% r9 I    }5 S7 x- Y0 I4 J/ F. Z, A
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

13

主题

120

帖子

1219

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

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

31

主题

113

帖子

-1万

积分

未知游客(0)

积分
-11465
3#
 楼主| 发表于 2012-7-26 12:08 | 只看该作者
hi_yjs 发表于 2012-7-26 11:20 1 B; Q0 \% D$ ~6 Z* r
改成“interrup 1”才是定时器0中断
. d2 x# _  f' s, W+ X: t9 |
呵呵 谢谢  刚才发现了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-8 23:21 , Processed in 0.089117 second(s), 32 queries , Gzip On.

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

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

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