服务器主板数码管显示ff,数码管显示的问题 - TI微控制器&处理器论坛 - 德州仪器TI单片机DSP官方技术论坛 - 21ic电子技术开发论坛...

该篇博客求助者遇到使用按键控制数码管显示的问题,试图通过P1中断实现逐位计数显示,但无法正确显示999。寻求专家协助修复代码,优化中断处理以确保正确显示数字0-999。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面的函数是一个用按键来控制数码管显示,我通过P1的中断来实现不断地计数加一显示,最大的显示数字是999,但是现在我的程序老是不能得到我想要的结果,那位大神能够帮我解决这个问题。

#include

typedef unsigned char  uchar;

typedef unsigned int uint;

uchar Table[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//所需的段的位码

#define wei_h P5OUT|= BIT5

#define wei_l P5OUT&= ~BIT5

#define duan_l   P6OUT &= ~BIT6

#define duan_h  P6OUT |= BIT6

uint x,y,z,v, date=0;//定义数据类型

void DelayMS(uint i)

{

uint j;

for(;i!=0;i--)

{

for(j=200;j!=0;j--);

}

}

void Pre_Display()

{

x=date/1000;    //求千位

y=date%1000/100;//求百位

z=date%100/10;  //求十位

v=date%10;      //求个位

P4OUT=Table[z];      //显示千位

duan_h;

duan_l;

P4OUT = 0XEF;

wei_h;

wei_l;

DelayMS(5);          //延时

P4OUT=Table[x];      //显示百位

duan_h;

duan_l;

P4OUT = 0XDF;

wei_h;

wei_l;

DelayMS(5);   //延时

P4OUT=Table[z];      //显示十位

duan_h;

duan_l;

P4OUT = 0XBF;

wei_h;

wei_l;

DelayMS(5);   //延时

P4OUT=Table[v];      //显示个位

duan_h;

duan_l;

P4OUT = 0X7F;

wei_h;

wei_l;

DelayMS(5);   //延时

}

void main(void)//主函数

{

P2DIR = 0xFF;

P2OUT = 0xFF;

P4DIR = 0XFF;    //设置P4口为输出

P5DIR = 0XFF;    //设置P5口为输出

P6DIR = 0xFF;

P1DIR = 0x00;

P1IE  = 0xff;

P1IES = 0xff;

P1IFG=0;

WDTCTL=WDTPW+WDTHOLD;//关闭看门狗

_BIS_SR(LPM3_bits + GIE);     //CPU进入LPM3低功耗模式,同时打开全局中断

}

#pragma vector=PORT1_VECTOR

__interrupt void P1VECTOR(void)

{

if(P1IFG&0x08!=0)

{

Pre_Display();

date++;

if(date>=999)

date=0;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值