南北西_1 发表于 2024-3-5 22:05:11

printf函数影响数码管显示

#include "public.h"
#include "digital.h"


char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";

#define KEY2 P32
#define KEY3 P33

inttemp_value=0;
u8 temp_buf;

void Smg_dispaly(void);

void main()
{
       
bit run_flay=0;

        sys_init();
usb_init();
EA = 1;
       
               
       
       
        while(1)
        {
               
               
          if(DeviceState!=DEVSTATE_CONFIGURED)
                continue;
               
          if(bUsbOutReady)
                {
                                usb_OUT_done();
                  
                }
               
   Smg_dispaly();
               
   if(run_flay==1)
       {
          
                delay_ms(1);
                temp_value++;
       }
                  
               
                if(KEY2==0)
               {
                   delay_ms(10);
                       if(KEY2==0)
                       {
                                while(KEY2==0)
                                {
                                  Smg_dispaly();
                                }
                                delay_ms(10);
                                if(run_flay==0)temp_value=0;
                                run_flay=!run_flay;
//      if(run_flay==1)temp_value=0;
                          
                       }                               
               }
       
}
}


void Smg_dispaly(void)
{
                temp_buf=gsmg_code;
          temp_buf=gsmg_code&0x7f;
          temp_buf=gsmg_code;
                temp_buf=gsmg_code;   
           temp_buf=gsmg_code;//百位
                temp_buf=gsmg_code&0x7f;//十位
                temp_buf=gsmg_code;//个位+小数点
                temp_buf=gsmg_code;//小数点后一位
    digital_tube(temp_buf,1);
}




#include "digital.h"
#include "public.h"
u8 gsmg_code={0xc0,0xf9,0xa4,0xb0,0x99,
                  0x92,0x82,0xf8,0x80,0x90,
               };
u8 Pos_display={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 num=0;
                                                               
/*******************************************************************************
* 函 数 名       : digital_tube
* 函数功能               : 动态数码管显示
* 输    入       : dat:要显示的数据
                                   pos:从左开始第几个位置开始显示,范围1-8
* 输    出           : 无
*******************************************************************************/       

#ifndef _DIGITAL_H_
#define _DIGITAL_H_

#include "public.h"

#define SMG_A_DP_PORT        P6
#define KEY2        P32

extern u8 gsmg_code;
extern u8 Pos_display;

void digital_tube(u8 dat[],u8 pos);

#endif


                                                       
void digital_tube(u8 dat[],u8 pos)
{
u8 i=0;
        u8 pos_temp=pos-1;
       

        for(i=pos_temp;i<8;i++)
        {

               
                P7=Pos_display;
                SMG_A_DP_PORT=dat;//传送段选数据
                printf("dat[%u]=%x\n",i-pos_temp,dat);
                delay_ms(1);;//延时一段时间,等待显示稳定
                SMG_A_DP_PORT=0xff;//消音
        }
       
       
       
       
}


printf函数注释掉后试验箱数码管不显示

南北西_1 发表于 2024-3-5 22:15:18

为何会影响,不明白?

南北西_1 发表于 2024-3-5 22:17:15

使用的是stc9.62试验箱

王昱顺 发表于 2024-3-5 22:54:09

这个是因为你其他c文件有printf了,这边屏蔽掉会使得另一边调用堵塞。
你找找看其他c文件里面的printf一起屏蔽掉就好了。
你这个问题其实不仅是不显示,其实是整个程序卡死了

南北西_1 发表于 2024-3-6 11:06:22

谢谢

zhudean11 发表于 2024-3-6 17:49:55

王昱顺 发表于 2024-3-5 22:54
这个是因为你其他c文件有printf了,这边屏蔽掉会使得另一边调用堵塞。
你找找看其他c文件里面的printf一起 ...

{:4_250:}正解
页: [1]
查看完整版本: printf函数影响数码管显示