main.c

来自「该程序是CC2430芯片的串口收发程序」· C语言 代码 · 共 87 行

C
87
字号
/*
引脚说明:
P1_6----/RE、DE  功能控制位
P1_5----DI       TXD Input
P1_4----RO       RXD Output
*/
#include"ioCC2430.h"

#define led P1_7   //led控制端口

unsigned char temp;
//函数申明
void delay1ms(int time);
void initUART(void);  //串口初始化
void ledONOFF(int times, int time); //LED显示,参数分别为闪烁次数和闪烁时间

void main( void )
{
  P1DIR |= 0xff;   //设置P1.7和P1.6为引脚输出状态
  initUART();
 // 发送数据
  P1_7 = 0;  //触发发送
  temp = 0x00;
  while(1)
  {
     U0DBUF = temp;
     while(!UTX0IF);
     UTX0IF = 0;
     temp ++;
//     P1_6 = 1; //关闭发送,使之处于接收
 //    ledONOFF(10,100);
//     while(1);
     delay1ms(30);

//     P1 = ~P1;
  }
}

void initUART(void)
{
    CLKCON &= ~0x40;         //晶振
    while(!(SLEEP & 0x40));  //等待晶振稳定
    CLKCON &= ~0x7F;         //TICHSPD128分频,CLKSPD不分频
    asm("NOP");
    SLEEP |= 0x04;           //关闭不用的RC振荡器

    PERCFG &= 0xfe;          //串口0,位置2,即P1.5--TX P1.4--RX
    P0SEL  |= 0x0c;          //P1.5----P1.2分别为TX,RX,CT,RT
    IEN0  |= 0x80;          //开总中断和串口接收使能
    U0CSR |= 0xc0;          //uart模式并且允许接收中断
    U0GCR |= 10;             //设置波特率 38400
    U0BAUD |= 59;
    UTX0IF = 0;
    URX0IF = 0;
}

void delay1ms(int times)
{
  do
  {
    for(int i = 0;i < 1000;i ++);
  }while(times --);
}

void ledONOFF(int times,int time)    //灯闪烁程序
{
    for(int i = 0;i < times;i ++)
    {
        led = ~led;
        delay1ms(time);
    }
}

#pragma vector = URX0_VECTOR
__interrupt void URX0_IRQ(void)
{
//    P1_7 = ~P1_7;
  temp = U0DBUF;
  ledONOFF(temp,50);
  temp ++;
  P1_6 = 0;     //触发发送状态
  U0DBUF = temp;
  while(!UTX0IF);
  UTX0IF = 0;
  P1_6 = 1;     //关闭发送,状态转换为接收*/
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?