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 + -
显示快捷键?