找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

[复制链接]

31

主题

113

帖子

-1万

积分

未知游客(0)

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

EDA365欢迎您!

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

x
亲们  我想用定时器中段实现两个数码管显示00--59;烧好程序后,数码管就一直显示00,好像不计时;不知道问题出在哪,' {. P7 m4 O# B: Q+ F" D
程序如下:0 d# R$ f# u7 c' U( E) o9 U
#include<reg52.h>
# [" h0 o/ U& d* b  i+ h#define uchar unsigned char         //定义uchar uint2 p2 X1 N6 D" L! g
#define uint unsigned int% X8 i& ], g9 K7 b. K
sbit dula=P2^2;                         //定义数码管段显示; ?# ~1 {" y6 k* n! o0 y. u% t
sbit weila=P2^3;                //定义数码管位显示, p5 f- X+ P! Z# y9 C  C& z
uchar code table[]={                //定义数码管显示从0--93 i: T; |) P' k' @
0x3f,0x06,0x5b,3 [4 ?/ C0 N# b1 r3 e; C
0x4f,0x66,0x6d,
. ?( @8 S( W" t2 ^1 U0x7d,0x07,0x7f,0x6f};' O' l2 J- B( b2 L

' j2 n9 l/ X& Z+ P( D, Ivoid display(uchar,uchar);        //声明数码管显示函数
3 {1 `" v1 ^  ^3 I0 Hvoid delay(uint);                //申明延时函数! c$ X  }( i0 H
uchar num,num1,shi,ge;
- {& Z/ a4 ~. ^7 b* Wvoid main()                        //主函数
8 h6 N2 b9 g2 D{3 r! V% \" F" E
  TMOD=0X01;                        //定时方式选择
' V9 V3 Q' y* ^/ D( W8 f  TH0=(65536-45872)/256;        //写定时初值
( {+ R! Z! h/ h  TL0=(65536-45872)%256;/ W" j5 N: r& i0 V8 i
  EA=1;        //开启总中断
+ i* i; C! k" D3 f! V  ET0=1;        //开定时器0中断
6 H0 _- |8 Q4 W) P  TR0=1;        //启动定时器0
6 `, H$ F) q/ }, V1 `/ \) k- Q  while(1)
4 _! }+ O, E  D; L6 h; U  {
! z, m/ s) ~8 c3 I4 g9 m    display(shi,ge);                //数码管显示函数
0 a+ g1 R: z5 D5 h  }' ?! D3 }2 _1 K- z- t5 |5 }
}
2 L5 |5 V' D4 O% Y* E7 K0 ?+ b0 d
7 G& n" p$ x- t5 l& G& nvoid display(uchar shi,uchar ge)        //显示函数5 \9 [, h) c7 P2 B3 b4 q
{
* V- r. _$ w, V# \) ~/ f9 F! ]4 Z   dula=1;                        //打开段选
9 a+ r/ O; T% Z4 T6 h5 S4 M   P0=table[shi];( ^- a) I, Q: F( C
   dula=0;/ @1 k5 Q# O4 P2 U& m2 {
   P0=0xff;                        //重置P0 防止数码管乱码1 W& `7 Q. P, B; A/ x
   weila=1;- V. o. S3 c/ B" k
   P0=0xfe;( q7 O4 T$ [& `, r
   weila=0;1 K  b. h8 t3 j+ q7 O1 d8 u# p
   delay(5);
! k# m( m& W9 Y) R8 G: f  , x0 P5 s: b9 M, L; Q
   dula=1;2 o9 N* ^  e) n  w& M
   P0=table[ge];
1 w6 L' ?: ]. M5 ]   dula=0;: E5 `1 S. N9 [% J
   P0=0xff;
5 m3 l8 L7 W, P& C; Z0 A3 \$ i3 g   weila=1;
# c9 z$ V. L- i  s' j   P0=0xfd;
/ W3 l5 v9 K7 J3 V+ y# m   weila=0;% |! {& m! ?" Y* x: G5 V
   delay(5);
9 B  Q2 ^' W9 X+ c6 W  ~  x  ^}
! ]2 {) F! ~. i$ N2 t: \4 M9 N; R. g9 J
void delay(uint xms)    //延时函数 延时xms ms  R% W+ x3 J! ]- n4 i. k7 H% T% N
{
! l0 c$ Z  p: H; p6 e   uint i,j;
. L- ]; F* H  [, n" j6 F   for(i=xms;i>0;i--)8 p  e+ b; J/ K* ^# ]
    for(j=110;j>0;j--);
$ N! X  M( w% W+ F! ?}
2 ~# k  |+ A  E8 v: @: V
  b% J6 W) ]! Xvoid T0_Time() interrupt 3   //定时器0中断 定时方式1  o; s) V6 L, _
{! C. v) }) e* p" s* h
TH0=(65536-45872)/256;
% E( l2 w* s" F! L" o4 hTL0=(65536-45872)%256;
# d) W, {! Y/ y3 [. U: bnum1++;# [& J5 ?, L" f6 n' p3 S
if(num1==20)      //检测到1s了没有
  @7 y$ G. F( E, R   {
, |6 C2 |% E9 M) a4 a    num1=0;
" [/ `' v" Y8 n# W* f. l    num++;
9 d' p& }. ^! H* h4 m: j    if(num==60)   //实现两个数码管从00--592 x$ W2 p- w. `# S5 `
    num=0;
2 n! J7 W4 {, @7 K2 d+ P2 }. e    shi=num/10;" Y- j" A3 `8 i5 o* Q) f' |: g. G* k
    ge=num%10;
  n( P- l" v) N$ g$ c' o    }
3 w+ Q) }5 g$ S2 C}
分享到:  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 ! i5 U* X. f5 r9 k
改成“interrup 1”才是定时器0中断

! u# h2 J& ]* k3 x, K3 e呵呵 谢谢  刚才发现了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-22 02:07 , Processed in 0.061831 second(s), 31 queries , Gzip On.

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

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

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