佛大深夜学习 2023-01-31 16:14 采纳率: 60%
浏览 62
已结题

sprintf函数的使用

疑问代码:(k为unsigned char型)

img


处理结果:

img


提出疑问:为什么sprintf函数无法正常执行(没有任何报错)

所有代码:


```c++
#include "reg52.h"
#include "stdio.h"
#include "onewire.h"
#define u8 unsigned char
#define u16 unsigned int

code unsigned char shownum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};

u8 COD[8],PSI,COT[10];
u16 seg_delay;

void Timer0_Init(void);
void SEG_Proc();    
void main()
{
    Timer0_Init();
    while(1)
    {
        SEG_Proc();    
    }
}

/*********数码管*************/
/*
    将字符串转化成数码管代码
*/
void SEG_TSL(u8 *input,u8 *output)
{
    u8 i=0,j=0,k=0;
    u8 *s_temp=0;
    for(i=0;i<8;i++,j++)
    {
        for(k=0;k<9;k++)                                           //问题所在处
        {
            sprintf(s_temp,"%u",(unsigned int)k);
            if(input[j] == *s_temp) 
            {
                output[i] =  shownum[k];
                break;
            }
        }
        if(input[j+1] == '.')
        {
            output[i] |= 0x80;
            j++;
        }
    }
}

/*
    数码管显示函数
    P22,P23,P24协助译码器控制位选,其中P22为最低位
*/
void SEG_Show(u8 COD,u8 PSI)
{
    //消影
    P0 = 0x00;
    //位选
    P2 = P2 & 0xe3 | (PSI<<2);
    //段选
    P0 = COD;
    
}

/***************定时器***************************/
void Timer0_Init(void)        //1毫秒@12MHz
{
    TMOD &= 0xF0;            //设置定时器模式
    TMOD |= 0x01;            //设置定时器模式
    TL0 = 0x18;                //设置定时初始值
    TH0 = 0xFC;                //设置定时初始值
    TF0 = 0;                //清除TF0标志
    TR0 = 1;                //定时器0开始计时
    //开启中断
    EA = 1;
    ET0 = 1;
}

void Timer0_IT() interrupt 1
{
    TL0 = 0x18;                //设置定时初始值
    TH0 = 0xFC;                //设置定时初始值
    
    if(seg_delay++ == 300)seg_delay = 0;
    
    SEG_Show(COD[PSI],PSI);
    if(PSI++ == 8)PSI = 0;
}


/************************************************/
void SEG_Proc()
{
    float seg_temp;
    if(seg_delay)return;
    seg_delay = 1;
    
    Convert_T();
    seg_temp = rd_temperature()*0.0625;
    sprintf(COT,"  %2.4f",seg_temp);
    SEG_TSL(COT,COD);
}


  • 写回答

4条回答 默认 最新

  • 快乐鹦鹉 2023-01-31 16:24
    关注

    怎么个无法正常运行啊?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月8日
  • 已采纳回答 1月31日
  • 修改了问题 1月31日
  • 创建了问题 1月31日

悬赏问题

  • ¥15 yolov5中的val测试集训练时数量变小问题
  • ¥15 MPLS/VPN实验中MPLS的配置问题
  • ¥15 materialstudio氢键计算问题
  • ¥15 已知隐函数其中一个变量的,求另外一个变量
  • ¥15 echarts图表制作
  • ¥15 halcon根据玻璃面板纹路取区域
  • ¥15 HFSS设计小型化180度耦合器
  • ¥15 使用CInternetSession,CHttpFile读取网页文件时有些电脑上会卡住怎么办?
  • ¥15 水下机器人的半物理仿真研究
  • ¥15 微服务假死,一段时间后自动恢复,如何排查处理