完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
/*--------------------------------------------
程序功能:通过UART1接收外部数据放到数组中, 通过UART0将数组内数据发送到PC机, 配置串口助手接收数据。 通信格式:N.8.1 9600 无校验,8个数据位,1个停止位,波特率9600 ------------------------------------------------*/ #include #define uchar unsigned char #define uint unsigned int void Delays(void); uchar REDATA = 0; //初始化数组值为0 /*-------------主函数-------------------------*/ void main(void) { // uchar REDATA = 0; //初始化数组值为0 WDTCTL = WDTPW + WDTHOLD; P3SEL |= 0xF0; //选择P3.4和P3.5做uart0通信端口,P3.6和P3.7做uart1通信端口 //uart0作为发送数据到PC内部寄存器配置 ME1 |= UTXE0; // 使能USART0的发送 UCTL0 |= CHAR; // 选择8位字符 UTCTL0 |= SSEL0; // UCLK = ACLK UBR00 = 0x03; // 波特率9600 UBR10 = 0x00; // UMCTL0 = 0x4A; // Modulation UCTL0 &= ~SWRST; // 初始化UART状态机 //uart1作为接收CPLD数据的内部寄存器配置 ME2 |= URXE1; // 使能USART1的接收 UCTL1 |= CHAR; // 选择8位字符 UTCTL1 |= SSEL0; // UCLK = ACLK UBR01 = 0x03; // 波特率9600 UBR11 = 0x00; // UMCTL1 = 0x4A; // Modulation UCTL1 &= ~SWRST; // 初始化UART状态机 IE2 |= URXIE1; // 使能USART1的接收中断 while(1) { _EINT(); //打开全局中断 LPM1; //进入LPM1模式 // while(!(IFG2 & URXIFG1)) //等待以前的字符接收完毕 // REDATA = RXBUF1; //将接收数据放在数组中 // Delays(); // while(!(IFG1 & UTXIFG0)) //等待以前的字符发送完毕 // TXBUF0 = REDATA; //将数组中的数据发送到PC机上 } } /******************************************* 函数名称:UART1_RXISR 功 能:UART1的接收中断服务函数,在这里唤醒 CPU,使它退出低功耗模式 参 数:无 返回值 :无 ********************************************/ #pragma vector = UART1RX_VECTOR __interrupt void UART1_RXISR(void) { LPM1_EXIT; //退出低功耗模式 while(!(IFG2 & URXIFG1)) //等待以前的字符接收完毕 REDATA = RXBUF1; TXBUF0 = REDATA; //将数组中的数据发送到PC机上 } 这是程序 |
|
|
|
/*--------------------------------------------
程序功能:通过UART1接收外部数据放到数组中, 通过UART0将数组内数据发送到PC机, 配置串口助手接收数据。 通信格式:N.8.1 9600 无校验,8个数据位,1个停止位,波特率9600 ------------------------------------------------*/ #include #define uchar unsigned char #define uint unsigned int void Delays(void); uchar REDATA = 0; //初始化数组值为0 /*-------------主函数-------------------------*/ void main(void) { // uchar REDATA = 0; //初始化数组值为0 WDTCTL = WDTPW + WDTHOLD; P3SEL |= 0xF0; //选择P3.4和P3.5做uart0通信端口,P3.6和P3.7做uart1通信端口 //uart0作为发送数据到PC内部寄存器配置 ME1 |= UTXE0; // 使能USART0的发送 UCTL0 |= CHAR; // 选择8位字符 UTCTL0 |= SSEL0; // UCLK = ACLK UBR00 = 0x03; // 波特率9600 UBR10 = 0x00; // UMCTL0 = 0x4A; // Modulation UCTL0 &= ~SWRST; // 初始化UART状态机 //uart1作为接收CPLD数据的内部寄存器配置 ME2 |= URXE1; // 使能USART1的接收 UCTL1 |= CHAR; // 选择8位字符 UTCTL1 |= SSEL0; // UCLK = ACLK UBR01 = 0x03; // 波特率9600 UBR11 = 0x00; // UMCTL1 = 0x4A; // Modulation UCTL1 &= ~SWRST; // 初始化UART状态机 IE2 |= URXIE1; // 使能USART1的接收中断 while(1) { _EINT(); //打开全局中断 LPM1; //进入LPM1模式 // while(!(IFG2 & URXIFG1)) //等待以前的字符接收完毕 // REDATA = RXBUF1; //将接收数据放在数组中 // Delays(); // while(!(IFG1 & UTXIFG0)) //等待以前的字符发送完毕 // TXBUF0 = REDATA; //将数组中的数据发送到PC机上 } } /******************************************* 函数名称:UART1_RXISR 功 能:UART1的接收中断服务函数,在这里唤醒 CPU,使它退出低功耗模式 参 数:无 返回值 :无 ********************************************/ #pragma vector = UART1RX_VECTOR __interrupt void UART1_RXISR(void) { LPM1_EXIT; //退出低功耗模式 while(!(IFG2 & URXIFG1)) //等待以前的字符接收完毕 REDATA = RXBUF1; TXBUF0 = REDATA; //将数组中的数据发送到PC机上 } |
|
|
|
very good,thanks
|
|
|
|
只有小组成员才能发言,加入小组>>
340 浏览 1 评论
533 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
777 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
653 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1132 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
63浏览 29评论
169浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
255浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
205浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
60浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 03:19 , Processed in 0.826818 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号