找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

[复制链接]

31

主题

113

帖子

-1万

积分

未知游客(0)

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

EDA365欢迎您!

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

x
亲们  我想用定时器中段实现两个数码管显示00--59;烧好程序后,数码管就一直显示00,好像不计时;不知道问题出在哪,
0 q- B2 G9 q; X; M! E8 y% N- K# s( b程序如下:$ ^5 t/ J" q  M, Z, B
#include<reg52.h>1 x1 U4 n5 c+ C7 i
#define uchar unsigned char         //定义uchar uint
8 T: s) X! J1 z; i0 b' y" S6 Z' p) P#define uint unsigned int
" ?% a, J, d, b6 csbit dula=P2^2;                         //定义数码管段显示
3 [8 i6 x6 a* f7 Usbit weila=P2^3;                //定义数码管位显示6 }1 S0 Y  r/ Y' a' ^6 U7 Z. f2 U
uchar code table[]={                //定义数码管显示从0--9
' {. f6 ?4 |7 t! F0x3f,0x06,0x5b,
& Q  {6 }- n: O1 d" B0x4f,0x66,0x6d,$ }6 D6 z! Q3 s# M: [: n: `; u
0x7d,0x07,0x7f,0x6f};
2 ]6 T! }: B0 ?3 F4 y6 [$ b( p0 ?8 z& t$ k% Q3 V3 b4 h, p
void display(uchar,uchar);        //声明数码管显示函数% e% ?6 x+ f2 X7 R# u8 X# k: d. S
void delay(uint);                //申明延时函数* ~/ Z% j; j- B1 @
uchar num,num1,shi,ge;
- ~4 P& \$ w9 [2 mvoid main()                        //主函数" ], w7 V7 }1 [* Y& }+ Y
{) |! E9 _. j9 a1 T% \, X
  TMOD=0X01;                        //定时方式选择1 N1 c; D% W/ B0 N" i  e. i
  TH0=(65536-45872)/256;        //写定时初值* y2 E9 i2 k: X* w8 _
  TL0=(65536-45872)%256;& e, [* i$ S4 w/ m
  EA=1;        //开启总中断* S1 `+ c, Z! Z$ g! i/ ]
  ET0=1;        //开定时器0中断
* O% |2 F$ i5 `' K, h- X  TR0=1;        //启动定时器0$ O1 M; w) K. X
  while(1)4 u# c7 q% w3 _% |7 j
  {
9 p! v' l2 |( l( b; w% q# N: S- w' H    display(shi,ge);                //数码管显示函数( k& v8 L9 o% x. l6 _
  }
$ a% a9 k$ U/ x. }! l}  g0 p3 ^  \! Q( L8 P; O( h

0 Q* r0 R' `$ ]- S! F* x4 I! ~5 Uvoid display(uchar shi,uchar ge)        //显示函数3 t- c# U1 u: G1 c$ h# w' C$ Y
{
3 l) v+ ~! _& s2 J# s" f6 B9 G* _; f   dula=1;                        //打开段选
2 s4 j0 o+ J1 `7 d   P0=table[shi];9 B6 \  c! _2 l5 p, j
   dula=0;
; B6 Y& r( Z, d9 |* c$ `   P0=0xff;                        //重置P0 防止数码管乱码
2 Z4 m9 M1 Q5 n1 O8 }) l: {3 M   weila=1;
- X5 ^1 g8 u$ E& W0 \   P0=0xfe;
: E: T% S1 X4 L0 S   weila=0;, d5 R$ A! ~( f" Y+ W% p* S
   delay(5);. h# c  Y+ q: p1 F3 \! R# I
  " J( o5 a" V( w! x5 w4 J- N$ u
   dula=1;
0 f1 Y0 Q) P  k' \   P0=table[ge];
! Z; j" ?3 Z, N" y  k. H  B: m2 d   dula=0;
3 P4 v) s! U5 F+ @% q" j. C   P0=0xff;
, _- k. P8 _% K( r   weila=1;
/ D. N2 Q4 S- U2 \$ @" v6 [/ ?! z. ~   P0=0xfd;
1 n. w6 s, |' a1 n   weila=0;) m# g4 e/ q  m. V8 X1 W
   delay(5);
; G# y% }$ L) A}2 O7 ]' W$ ^; b0 f; `: E& d5 h
7 o2 Q1 c$ l$ x9 ^2 u5 A* u
void delay(uint xms)    //延时函数 延时xms ms) I4 x& _$ ]4 X6 ?+ e3 r; N
{
% W! N, q* ^6 }& H( T7 P8 K   uint i,j;
/ [% f# s+ @$ \% z   for(i=xms;i>0;i--)
, z/ N* f  s0 A: u" R, a- \3 X4 j    for(j=110;j>0;j--);
9 ?) `6 j- r2 n7 t2 D: m}
3 E* E4 Z: A9 w( q$ x5 c
' y  n4 e4 Z" g+ Wvoid T0_Time() interrupt 3   //定时器0中断 定时方式1% H4 q5 s3 O- S, }
{
  c8 Y. x& F) ?- w# [: uTH0=(65536-45872)/256;) s& Q; A( |. I( f2 k1 G
TL0=(65536-45872)%256;
& e' a* ?+ U# V0 Cnum1++;
( P8 J1 d* ]. O( Y* a5 W8 nif(num1==20)      //检测到1s了没有 6 c$ g( |2 C' G& _9 B/ _) d* M
   {: C5 E  [; h: h
    num1=0;# I* ^/ s, F$ [1 v  d5 a( F8 @: p
    num++;, G. i" v5 r+ _9 n) A' `" G! I0 I
    if(num==60)   //实现两个数码管从00--594 @6 J9 |& y9 q" o1 f# r) i
    num=0;! L6 i. n  i. b, X+ x- B3 m
    shi=num/10;
  v" J6 ?* l8 j% j# R    ge=num%10;* F8 T- P* n; v1 X8 [, F
    }* r5 E( B1 q0 O- E# |
}
分享到:  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
9 \+ M5 [+ H" b& W改成“interrup 1”才是定时器0中断

  j9 `* z' O6 l) I/ F呵呵 谢谢  刚才发现了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-19 06:06 , Processed in 0.065518 second(s), 31 queries , Gzip On.

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

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

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