打印
[51单片机]

程序问题

[复制链接]
1099|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xinruzhishui|  楼主 | 2014-11-28 21:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <ioCC2530.h>
//#include "OnBoard.h"
#include <string.h>
//#include "mt_uart.h"

#define  uint  unsigned int
#define  uchar unsigned char

//定义LED的端口
#define LED1 P1_0
#define K11 P0_5

//函数声明
void Delay_ms(uint);
void initUART(void);
void UartSend_String(char *Data,int len);
//void zdsensor(void);

char Txdata[14]; //存放"HELLO WEBEE   "共14个字符串

/****************************************************************
    延时函数                                                                                       
****************************************************************/
void Delay_ms(uint n)
{
     uint i,j;
     for(i=0;i<n;i++)
     {
     for(j=0;j<1774;j++);
     }
}

void IO_Init()
{
   //  P0DIR = 0x20;      //P1_0,P1_1 IO方向输出
  //  P1INP |= 0X03;     //打开下拉
  K11 = 1;
  //  LED2 = 0;
}

/****************************************************************
   串口初始化函数                               
****************************************************************/
void InitUART(void)
{
    PERCFG = 0x00;                      //位置1 P0口
    P0SEL = 0x0c;                      //P0_2,P0_3用作串口(外部设备功能)
    P2DIR &= ~0XC0;                   //P0优先作为UART0

    U0CSR |= 0x80;                      //设置为UART方式
    U0GCR |= 11;                                       
    U0BAUD |= 216;                      //波特率设为115200
    UTX0IF = 0;                       //UART0 TX中断标志初始置位0
}
/****************************************************************
串口发送字符串函数                       
****************************************************************/
void UartSend_String(char *Data,int len)
{
  int j;
  for(j=0;j<len;j++)
  {
    U0DBUF = *Data++;
    while(UTX0IF == 0);
    UTX0IF = 0;
  }
}
/****************************************************************
主函数                                               
****************************************************************/
void main(void)
{       
  UartSend_String("get data",9);  
    CLKCONCMD &= ~0x40;               //设置系统时钟源为32MHZ晶振
    while(CLKCONSTA & 0x40);          //等待晶振稳定为32M
    CLKCONCMD &= ~0x47;               //设置系统主时钟频率为32MHZ   
     IO_Init();
    InitUART();
    while(1)
      {
           P0DIR  = 0x00;  
         if(K11==0)
         {
            Delay_ms(2);
             if(K11 == 0)
             {
              // HalUARTWrite(0,"01",2);
                 UartSend_String("01",2);   
                   P0DIR  = 0x20;
                    K11 = 1;
                    Delay_ms(50);
             }
         }
     }
}


主程序去掉while(1),串口为什么没有输出了?
要想仍然有输出应该怎么做,但是不要while(1)语句

相关帖子

沙发
mazhao141| | 2014-11-28 21:41 | 只看该作者
去掉while(1)???呃~~程序不会自己循环的,没while(1)只会执行一遍这事你知道么?

使用特权

评论回复
板凳
cauhorse| | 2014-11-28 22:25 | 只看该作者
把while(1)换成for(;;)一样。

使用特权

评论回复
地板
ningling_21| | 2014-11-29 09:26 | 只看该作者
没有while(1)

就不断从上到下的执行,一次又一次的,不能实时检测按键

使用特权

评论回复
5
diweo| | 2014-11-29 16:03 | 只看该作者
大多数情况下,确实要避免死循环。
但是有时候,没有死循环是不行滴。
别说嵌入式就几K的程序了,Windows那么大的东西,它的消息机制也是一个while(1)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

103

帖子

0

粉丝