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函数注释掉后试验箱数码管不显示
为何会影响,不明白? 使用的是stc9.62试验箱 这个是因为你其他c文件有printf了,这边屏蔽掉会使得另一边调用堵塞。
你找找看其他c文件里面的printf一起屏蔽掉就好了。
你这个问题其实不仅是不显示,其实是整个程序卡死了 谢谢 王昱顺 发表于 2024-3-5 22:54
这个是因为你其他c文件有printf了,这边屏蔽掉会使得另一边调用堵塞。
你找找看其他c文件里面的printf一起 ...
{:4_250:}正解
页:
[1]