哈里 发表于 2024-10-6 21:48:36

printf打印输出的读数不对帮忙指点


中断部分代码这样,用串口助手调试,输入十六位数30,接收的数值怎么多了一个0,怎么不是这个数值   “ n.val=0 ” ,大家帮忙指点下




神农鼎 发表于 2024-10-6 21:56:27



【新提醒】printf函数 的 格式参数; USB接口 使用 printf 打印数据 - 串行口,DMA支持的4组串口,RS232,RS485,Modbus, CRC16 国芯技术交流网站 - AI32位8051交流社区 (stcaimcu.com)

哈里 发表于 2024-10-6 22:05:10

void uart() interrupt 4 //串口通信中断函数
{
        u8 rec_data;
//unsigned char ch;
        RI = 0;                        //清除接收中断标志位
        rec_data=SBUF;        //存储接收到的数据


       
//        P0=SBUF;
       
ch=SBUF;
       
                TI=1;        //使用printf必须要标志位为1
//        printf("A");


//        if(P0_0==0)       
//                        { LED1=1;printf("n0.val=0\XFF\XFF\XFF\XFF"); TI=0; }       

           switch(ch)

   {

               case 0x30:LED3=0; printf("n0.val=0\XFF\XFF\XFF\XFF"); TI=0;break;
你好,发送的值30,怎么也被打印输出,这个值没有在输出范围里面

哈里 发表于 2024-10-6 22:09:19


soma 发表于 2024-10-6 22:10:20

SBUF=rec_data;这段造成的?

晓飛飛 发表于 2024-10-6 22:11:13

哈里 发表于 2024-10-6 22:05
你好,发送的值30,怎么也被打印输出,这个值没有在输出范围里面

使用stdio的printf就不要用uart的中断了,不然处理起来很麻烦

Lkck8210 发表于 2024-10-6 22:53:32


表现符合代码



谁教你在中断里用printf?

llyymm 发表于 2024-10-7 12:50:37

使用不熟练,和我开始一样的{:5_310:}
页: [1]
查看完整版本: printf打印输出的读数不对帮忙指点