单片机定时器中断倒计时c语言,我用定时器中断控制倒计时30秒。程序不报错,但是显示一直停在30..请问好友们,帮我看看问题出在哪里?...

意味着我的定时器中断,的变量 i 没有发生变化,为什么呢?

#include

#define uchar unsigned char

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

#define uint unsigned int

int i,count,ge,shi;

void init();

void display();

void delay(uchar z)

{

uint x,y;

for(x = z;x>0;x--)

for(y = 110;y>0;y--);

}

void main()

{

init();

while(1)

{

display();

}

}

void init( )  //初始化函数

{

TMOD = 0x01;

TH0 = (65536-18432)/256;

TL0 = (65536-18432)%256;

EA = 1;

ET0 = 1;

TR0 = 1;

}

void display(uint ge,uint shi)  //数码管显示30s倒计时

{

P1 =0xfe;

P0 = table[shi];

delay(5);

P0 = 0xff;

P1 = 0xfd;

P0 = table[ge];

delay(5);

P0 = 0xff;

}

void tinm_T0 () interrupt 1   //我的思路是用定时器产生一个变了一秒自减一的变量 i

{

TH0 = (65536-18432)/256; //20ms

TL0 = (65536-18432)%256;

count++;

if(count ==50)

{

count = 0;

i--;

ge = i%10;

shi = i/10;

if(i ==0) i = 30;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值