c语言关于字母加减问题,谁帮我看这个C语言程序为什么不能实现正常的加减

#include

#define dataport P0

sbit key_add=P3^3;

sbit key_dec=P3^4;

sbit duan_latch=P2^2;//段锁存

sbit wei_latch=P2^3;//位锁存

unsigned char code duan_ma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9显示

unsigned char code wei_ma[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选择

unsigned char temp[8];//临时变量

//函数声明

void delayUs2x(unsigned char t);

void delayMs(unsigned char t);

void display(unsigned char firstbit,unsigned char number);

void Init_timer0(void);

main()

{unsigned int num=0;

key_add=1; //按键输入端口电平置高

key_dec=1;

Init_timer0();

while(1)

{

if(!key_add)

{

delayMs(10);

if(!key_add)

{

while(!key_add)

{if(num<99)

num++;}

}

}

if(!key_dec)

{

delayMs(10);

if(!key_dec)

{

while(!key_dec)

{if(num>0)

num--;}

}

}

temp[0]=duan_ma[num/10];

temp[1]=duan_ma[num%10];

}

}

void delayUs2x(unsigned char t)

{

while(--t);

}

void delayMs(unsigned char t)

{

while(t--)

{

delayUs2x(245);

delayUs2x(245);

}

}

void display(unsigned char firstbit, unsigned char number)

{

static unsigned int i=0;

dataport=0;

duan_latch=1;

duan_latch=0;

dataport=wei_ma[i+firstbit];

wei_latch=1;

wei_latch=0;

dataport=temp[i];

duan_latch=1;

duan_latch=0;

i++;

if(i==number)

i=0;

}

void Init_timer0(void)

{

TMOD|=0x01;

EA=1;

ET0=1;

TR0=1;

}

void timer0_isr(void) interrupt 1

{

TH0=(65536-2000)/256;

TL0=(65536-2000)%256;

display(0,8);

}

连到51开发板上,最后的结果是按一下加号键直接跳到99,然后不变。按减号键就从99跳到00,然后不变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值