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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
亲们  我想用定时器中段实现两个数码管显示00--59;烧好程序后,数码管就一直显示00,好像不计时;不知道问题出在哪,
( R) A, k6 E. K7 o- j4 r程序如下:  c& D. L* l! A4 }
#include<reg52.h>* Q7 Z+ |9 h( V- T" `
#define uchar unsigned char         //定义uchar uint
; I( {. D  f* p#define uint unsigned int
4 K; e/ ]7 [6 Q6 G; H7 m8 E9 y3 b7 Ksbit dula=P2^2;                         //定义数码管段显示# Q$ N! u4 k( U) u
sbit weila=P2^3;                //定义数码管位显示' |0 M/ L. R  v6 G: J7 y, v% G+ }
uchar code table[]={                //定义数码管显示从0--9
/ H5 T1 F) [7 {/ }$ t: I0x3f,0x06,0x5b,' P/ F+ F) q; [, _
0x4f,0x66,0x6d,
/ M/ ^# B* V9 Q# g$ k# L0x7d,0x07,0x7f,0x6f};
$ x9 p2 m0 `7 \, i5 ~4 F) S* I  q$ }0 k% \2 n$ m2 c
void display(uchar,uchar);        //声明数码管显示函数6 [, s- \0 E2 V. n! W1 s) M, N
void delay(uint);                //申明延时函数
/ ]0 F8 ^) ]7 `' Nuchar num,num1,shi,ge;/ n4 f3 O# U8 k3 E
void main()                        //主函数7 M; E7 A: n5 T
{9 _& N& s9 S# ^
  TMOD=0X01;                        //定时方式选择
) }: q4 m- Q! Y* J* p, L  TH0=(65536-45872)/256;        //写定时初值& {3 @8 l" x' ]# ]/ N6 r$ N8 Q0 H
  TL0=(65536-45872)%256;
( w* I5 f/ q/ n  EA=1;        //开启总中断
: I% `' b# {. Y5 P  ET0=1;        //开定时器0中断
& P0 r* y; X" K& T  TR0=1;        //启动定时器0
# ^; S* m% X  n( _4 \" i7 T; g0 x  while(1)
! Q$ D" `4 B! K  {( w- w, B: {$ G: F6 y" q! o  d
    display(shi,ge);                //数码管显示函数
' [# p0 ?& E2 y3 u# n' @; ~  }0 n3 m+ ~" d  B$ `& A
}
* p1 W  F) M  z3 i* i  R
) O+ a, P* \$ _! {9 {void display(uchar shi,uchar ge)        //显示函数
$ T9 t' o3 p3 J( X6 _" g! G{
9 }: @8 T# A8 B; `   dula=1;                        //打开段选. Z& s- Q. v/ }( }: |" Z8 H" g
   P0=table[shi];. J" ~, k9 b( d
   dula=0;
2 N+ X& j# j; a$ A/ f/ w   P0=0xff;                        //重置P0 防止数码管乱码
, C8 C4 x/ I! F   weila=1;
) g/ e) M  W7 e   P0=0xfe;; V4 T7 |, g: ^! G
   weila=0;
; q4 b7 c2 D$ [   delay(5);" R6 \6 R. N6 T4 r) A) V6 ~: e
  
! |$ _! ?$ }# r1 ?   dula=1;6 p# j: U' F# c, @4 c
   P0=table[ge];
2 v' t4 ~0 k3 o1 O, {   dula=0;
& x) k4 S* A* x   P0=0xff;) d, m5 M6 I0 T' g0 k8 T# C2 U
   weila=1;1 d8 R4 s+ f* Z8 H2 \
   P0=0xfd;! G' P3 l/ y* @0 r2 H
   weila=0;# M8 z7 v: G1 b4 r4 X* k1 C) o4 U
   delay(5);
# j3 G0 \4 ~; R' ^- y  x}
2 f! _& M! p/ K! @( X1 k! {
$ G% U1 H  s3 t' [4 O: V2 Kvoid delay(uint xms)    //延时函数 延时xms ms; M2 @. j5 @1 W- N) f7 S0 t! p
{* D8 \$ c7 A* x& `
   uint i,j;# m" G. H8 o1 A! K. S
   for(i=xms;i>0;i--)
: L& G) T! S, W9 Y0 J9 i# r$ F    for(j=110;j>0;j--);
$ v7 a8 M) s' e5 T  \7 Y}; D* l, C0 I  }/ @5 ]/ j

' ]* B6 [: m' R* @' ivoid T0_Time() interrupt 3   //定时器0中断 定时方式1
8 t4 D- W/ V- t$ z5 m& i4 N{
5 f/ }( e3 C" {- j( r3 v9 ITH0=(65536-45872)/256;
; a5 I6 s7 }! n! _, u9 dTL0=(65536-45872)%256;
) W: \7 u/ ^- E$ ]- y8 Unum1++;* A# x( b6 e8 ?4 r" m  f+ ~
if(num1==20)      //检测到1s了没有 7 ~5 G( q  U* D1 Q& Q) ~; ~
   {' _1 K" N9 x8 v
    num1=0;/ g' l9 g% D( W
    num++;
5 n" B1 d, G+ s# ^/ z( Z2 U) p    if(num==60)   //实现两个数码管从00--599 z- G! o8 U/ b9 Q1 S
    num=0;$ d) K' T9 o" d1 M+ e4 F
    shi=num/10;/ ], Y& ^! ]- @% [/ b
    ge=num%10;' Y; p5 p: _- ~* `7 f
    }
9 I8 m1 _2 j  P4 I/ S$ C7 k}

该用户从未签到

3#
 楼主| 发表于 2012-7-26 12:08 | 只看该作者
hi_yjs 发表于 2012-7-26 11:20
6 Z0 x* ~6 \; C4 N  F3 c改成“interrup 1”才是定时器0中断

1 X( ^0 _7 }' \5 Q8 B2 b呵呵 谢谢  刚才发现了

该用户从未签到

2#
发表于 2012-7-26 11:20 | 只看该作者
改成“interrup 1”才是定时器0中断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 18:48 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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