#include #include "derivative.h" /* include peripheral declarations */ //整个功能:PC-单片机-PC,PC串口发数据-单片机串口接收数据-单片机将接收到的数据发送回给PC #define LED_D1 PTDD_PTDD0 #define LED_D1_DIR PTDDD_PTDDD0 #define LED_ON 0 #define LED_OFF 1 unsigned char SCANF_SEND_STRINGS[] = "HELLO MCU WORLD"; unsigned char *pSendString = SCANF_SEND_STRINGS; unsigned char ReceiveString; /*************************************************************/ /* 初始化总线时钟PEE模式 */ /* 外部晶振频率为4MHz,总线频率16MHz */ /*************************************************************/ void INIT_MCG(void) { MCGC2=0x36; while(!MCGSC_OSCINIT); MCGC1=0xb8; while(MCGSC_IREFST); while(MCGSC_CLKST!=0b10); MCGC2_LP = 1; MCGC1 = 0x90; MCGC3 = 0x48; MCGC2_LP = 0; while(!MCGSC_PLLST); while(!MCGSC_LOCK); MCGC1 = 0x10; while(MCGSC_CLKST!=0b11); } //延时函数 void delay(void) { unsigned int i; unsigned int j; for(i = 0; i < 100; i++) for(j = 0; j < 4000; j++); } void main(void) { DisableInterrupts; SOPT1 = 0; INIT_MCG(); EnableInterrupts; /* enable interrupts */ /* include your code here */ LED_D1_DIR = 1; LED_D1 = LED_OFF; SCI1BDH = 0X00; SCI1BDL = 0X68;//波特率设置为9600 SCI1C1 = 0x00; //设置SCI1为正常模式,八位数据位,无奇偶校验 SCI1C2 = 0x0C; //RE = 1(bit2)接收器打开 //TE = 1(bit3)发送器打开 while(1) { while(!SCI1S1_RDRF);// SCI1S1_RDRF = 1时,表示接收数据寄存器满,可以取出数据 SCI1S1_RDRF = 0; //清除SCI1S1_RDRF ReceiveString = SCI1D; //将接收寄存器中的数据保存至ReceiveString // LED_D1 = ~LED_D1; // delay(); while(!SCI1S1_TDRE);//SCI1S1_TDRE = 1时,发送数据寄存器(缓存区)空,可以发送数据 SCI1D = ReceiveString;//将接收到的数据,放至发送数据寄存器(缓存区),发送 // LED_D1 = ~LED_D1; // delay(); } for(;;) { __RESET_WATCHDOG(); /* feeds the dog */ } /* loop forever */ /* please make sure that you never leave main */ } 程序改成下面语句,上位机串口发大数据不死机,但可能丢数据。 while(1) { /* while(!SCI1S1_RDRF);// SCI1S1_RDRF = 1时,表示接收数据寄存器满,可以取出数据 SCI1S1_RDRF = 0; //清除SCI1S1_RDRF ReceiveString = SCI1D; //将接收寄存器中的数据保存至ReceiveString while(!SCI1S1_TDRE);//SCI1S1_TDRE = 1时,发送数据寄存器(缓存区)空,可以发送数据 SCI1D = ReceiveString;//将接收到的数据,放至发送数据寄存器(缓存区),发送 */ if(SCI1S1_RDRF == 1) { ReceiveString = SCI1D; if(SCI1S1_TDRE == 1) { SCI1D = ReceiveString; } } }
上一篇:飞思卡尔单片机DZ60---EEPROM读写
下一篇:飞思卡尔单片机DZ60---SCI(中断发送)
推荐阅读最新更新时间:2024-11-03 12:44
设计资源 培训 开发板 精华推荐
- 2020电赛A题-无线运动传感器节点设计(大连理工大学)
- AD9780-DPG2-EBZ,使用 AD9780 双通道、12 位、600 MSPS LVDS 接口数模转换器的评估板
- ADR363B 3V 低功耗、低噪声电压基准的典型应用,具有灌/拉能力
- LT3572 的典型应用——具有 900mA 升压转换器的双路全桥压电驱动器
- OP184FSZ 具有限流功能的低压差稳压器的典型应用
- 【训练营】立创EDA小灯--987864A
- RD-549,FAN9672 2 相交错 CCM PFC 控制器的参考设计,用于高达 3KW 的功率因数校正前端设计
- LTM4628IY 双路 8A、1.5V 和 1.2V 输出 DC/DC 模块稳压器的典型应用电路
- CY8CKIT-040 PSoC 4000 Pioneer 开发套件
- 20 位 ADC 称重系统