大佬们,怎么用printf(“打印一句话啊”),通过串口调试助手显示出来 |
感谢大佬们,我把函数放在判断里面,或者在加一个判断就可以了 |
主程序一直在执行fasong(num)函数,肯定是一直在发送数据了,fasong(num)要有条件(就是你的按键)的执行、结束 |
当程序运行到fasong(num);串口就发送数据到上位机了,此时num= 0;如果要按键发送的话,就要在fasong()这个子函数加个判断比如定义一个变量Switch=flag.if(Switch_flag){Switch_flag = 0;fasong();}按键将Switch置1,然后if里面清零 |
发送函数要放到按键函数的判断成功里面 |
小白学51i 发表于 2020-11-3 11:27 while(1) { keypros(); //按键函数 fasong(num); //发送函数 } 你看看你写的这个循环,执行按键处理之后就是发送,而不是判断按下什么键去处理发送,所以就会一直发送 |
lovezjf234 发表于 2020-11-3 11:18 没太懂,我得理解是这样得:初始化以后不是进入while(1);循环了嘛?他不是要一直扫描我的按键函数嘛?我的按键按下以后才能发送num得值,不按下不就发送不了嘛?那么第一次不就是不能发送数据嘛?必须等我按下以后才能发送第一次得值? |
心有浮生 发表于 2020-11-3 11:20 不是有一个函数是 void fasong(u16 dat) { SBUF = dat; while(!TI); TI = 0; } num值给dat了 |
你这串口发的dat是在哪赋值的, |
fasong(num); //发送函数 你本来就一直在发送,没有中断过,最好用flag进行标记发送,或者用中断进行发送更好 |