单片机C语言函数外跳转,跳到另个函数进入了死循环

声明: 程序很乱 高人有什么看法尽情的泼洒

#include"reg51.h"

#include"8563.h"

#include"24c01.h"

#include"malfunction.h"

#include"display.h"

#include"key.h"

uchar keyb;

uchar gu_xian=0;

uchar gu_cha[6];

void init()

{

TMOD=0x11;

TR0=1;

ET0=1;

TR1=1;

ET1=1;

TH1=53266/256;

TL1=53266%256;

TH0=63266/256;

TL0=63266%256;

EA=1;

EX0=1;

IT0=1;

dula=0;

wela=0;

}

void dis_control()//显示模式的选择

{

switch(disnum)

{

case 0:{shuxian[0]=time.s;shuxian[1]=time.m;shuxian[2]=time.h;};break;

case 1:{shuxian[0]=time.d;shuxian[1]=time.mouth;shuxian[2]=time.y;};break;

case 2:

{

if(key_num==1){shuxian[0]=0xaa;shuxian[1]=0xff;shuxian[2]=tobcd(a_num);};

if(key_num==2){shuxian[0]=0xbb;shuxian[1]=0xff;shuxian[2]=tobcd(b_num);};

if(key_num==3){shuxian[0]=0xcc;shuxian[1]=0xff;shuxian[2]=tobcd(c_num);};

if(key_num==4){shuxian[0]=0xab;shuxian[1]=0xff;shuxian[2]=tobcd(ab_num);};

if(key_num==5){shuxian[0]=0xbc;shuxian[1]=0xff;shuxian[2]=tobcd(bc_num);};

if(key_num==6){shuxian[0]=0xac;shuxian[1]=0xff;shuxian[2]=tobcd(ac_num);};

/*if(key_num>6)

{

if(key_num==36)key_num=1;

r_24c01(0x04+3*key_num,3,shuxian);};*/

};

break;

case 3:{shuxian[0]=0xff;shuxian[1]=time.m;shuxian[2]=0xff;};break;

case 4:{shuxian[0]=0xff;shuxian[1]=0xff;shuxian[2]=time.h;};break;

case 5:{shuxian[0]=time.d;shuxian[1]=0xff;shuxian[2]=0xff;};break;

case 6:{shuxian[0]=0xff;shuxian[1]=time.mouth;shuxian[2]=0xff;};break;

case 7:{shuxian[0]=0xff;shuxian[1]=0xff;shuxian[2]=time.y;};break;

case 8:;break;

}

}

void r_24c01(uchar address,uchar z,uchar *databuf)

{

uchar i;

Start();

writebyte(0xa0);

writebyte(address);

Start();

writebyte(0xa1);

for(i=0;i

{

databuf[i]=Readbyte();

if(i

}

WriteACK(1);

Stop();

}

void main()

{

r_24c01(0x01,6,gu_cha);

init();

//

a_num=gu_cha[0];

b_num=gu_cha[1];

c_num=gu_cha[2];

ab_num=gu_cha[3];

bc_num=gu_cha[4];

ac_num=gu_cha[5];

for(;;)

{

dis_control();

key();

}

}

void timesr_1() interrupt 1

{

display();

if(gu_xian)

{

gu_xian++;

if(gu_xian>220)

{

gu_xian=0;

EX0=1;

}

}

}

void time1() interrupt 3

{

if(disnum<2)

{

R_8563();

}

}

void int_0() interrupt 0

{

uchar gu;

EX0=0;

disnum=8;

gu_xian=1;

gu=key1|0xf8;

switch(gu)

{

case 0xfe:A();break;

case 0xfd:B1();break;

case 0xfb:C();break;

case 0xfc:AB();break;

case 0xfa:AC1();break;

case 0xf9:BC();break;

default: break;

}

就在FOR循环前 初始化读取r_24c01()的时候就跳到dis_control()//显示模式的选择里 之后就跳到TH1=53266/256;

TL1=53266%256;

TH0=63266/256;

TL0=63266%256;

EA=1;

EX0=1;

IT0=1;

dula=0;

wela=0;

就一直死下去了  就怎么安静的死去了

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值