标题: 求助大佬,为啥单片机程序只执行上电之后发送一次啊 [打印本页]

作者: 溜溜小白    时间: 2023-8-15 17:25
标题: 求助大佬,为啥单片机程序只执行上电之后发送一次啊
我的这个函数为啥上电之后只执行一次啊,但是加上一个点亮led等就可以循环执行了,不明白为啥,请大佬指教啊

7D54C7~1.PNG (17.34 KB, 下载次数: 74)

7D54C7~1.PNG

作者: wulin    时间: 2023-8-15 22:13
你说的情况不存在


  1. #include <reg51.H>
  2. #include <intrins.H>

  3. void Delay100ms()                //@11.0592MHz
  4. {
  5.         unsigned char data i, j;

  6.         i = 180;
  7.         j = 73;
  8.         do
  9.         {
  10.                 while (--j);
  11.         } while (--i);
  12. }

  13. void UartInit(void)                //9600bps@11.0592MHz
  14. {
  15.         PCON &= 0x7F;                //波特率不倍速
  16.         SCON = 0x50;                //8位数据,可变波特率
  17.         TMOD = 0x20;                //设置定时器模式
  18.         TL1 = 0xFD;                        //设置定时初始值
  19.         TH1 = 0xFD;                        //设置定时重载值
  20.         ET1 = 0;                        //禁止定时器中断
  21.         TR1 = 1;                        //定时器1开始计时
  22. }

  23. void sendbyte(unsigned char number)
  24. {
  25.         SBUF=number;
  26.         while(!TI);
  27.         TI=0;
  28. }

  29. void main(void)
  30. {
  31.         UartInit();   
  32.         while(1)
  33.         {
  34.                 Delay100ms();
  35.                 sendbyte(0x66);
  36.         }
  37. }
复制代码




作者: changhz    时间: 2023-8-16 00:04
不是只发送一次,是一直要while里以1秒循环发送
作者: 大漠落日    时间: 2023-8-16 08:55
你的延时太短了吧,
作者: a825563619    时间: 2023-8-16 09:10
可能哪里有误了,就你展示的代码确实是循环的
作者: 溜溜小白    时间: 2023-8-16 10:02
wulin 发表于 2023-8-15 22:13
你说的情况不存在

我的uart里把中断打开了这个有影响么?EA=1 ES=1,现在我这个程序只要是不加那个led的那个亮灯程序上电就只执行一次,加上led亮灯就可以1s循环发送
作者: 溜溜小白    时间: 2023-8-16 10:03
大漠落日 发表于 2023-8-16 08:55
你的延时太短了吧,

延时1s这个应该不短吧,我加长了延时时间还是不行,我只不过是把中断打开了
作者: Chasermoon    时间: 2023-8-30 14:55
你可以试试再延时下面再加一次发送然后再加一次延时试试





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1