完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我想要单片机在接收到一个数据时返回一个字符A,发现无论如何都实现不了,大家帮忙看看程序有么有问题,而且我还想在主函数中处理一些其他的问题,比如点亮一盏灯,发现都实现不了,大家帮忙看看什么问题,哪里出错了,要怎么弄,谢谢
#include #include "Config.h" uchar n; uchar data=0; //************************************************************************* // MSP430串口初始化 //************************************************************************* void UART_Init() { U0CTL|=SWRST; //复位SWRST U0CTL|=CHAR; //8位数据模式 U0TCTL|=SSEL1; //SMCLK为串口时钟 // U0BR1=baud_h; //BRCLK=8MHZ,Baud=BRCLK/N //在config里有设置 提取高位 //U0BR0=baud_l; //N=UBR+(UxMCTL)/8 //在config里有设置 提取低位 //U0MCTL=0x00; //微调寄存器为0,波特率9600bps U0BR0 = 0x41;//波特率9600 U0BR1 = 0x03; //有串口波特率计算公式的 U0MCTL = 0x00; ME1|=UTXE0; //UART1发送使能 ME1|=URXE0; //UART1接收使能 U0CTL&=~SWRST; IE1|=URXIE0; //接收中断使能位 // IE1|=UTXIE0; //发送中断使能位 P3SEL|= BIT4; //设置IO口为外围模式 P3DIR|= BIT4; //设置IO口方向为输出 P3SEL|= BIT5; //看原理图进行设置。。注意有跳 P3DIR&=~ BIT5; //设置IO口方向为输入 } //************************************************************************* // 串口0发送数据函数 //************************************************************************* void Send_Byte(uchar data) { while(!(IFG1&UTXIFG0)); //发送寄存器空的时候发送数据 U0TXBUF = data; IFG1&=~UTXIFG0; } //************************************************************************* // 处理来自串口 0 的接收中断 //************************************************************************* #pragma vector=UART0RX_VECTOR __interrupt void UART0_RX_ISR(void) { data = U0RXBUF; //接收到的数据存起来 n=1; Send_Byte('A'); //将接收到的数据再发送出去 } //************************************************************************* // 处理来自串口 0 的发送中断,预留 //************************************************************************* //#pragma vector=UART0TX_VECTOR //__interrupt void UART0_TX_ISR(void) //{ //} //************************************************************************* // 主函数 //************************************************************************* void main(void) { WDT_Init(); //看门狗设置 Clock_Init(); //系统时钟设置 UART_Init(); //串口设置初始化 _EINT(); //开中断 while(1) //无限循环 { if(n==1){ Send_Byte('A'); n=0; } } } |
|
相关推荐
13个回答
|
|
如果我说的对,分给我哈!
U0CTL|=SWRST; //复位SWRST 我也有点记不住了,但你看这个手册。 The USART is reset by a PUC or by the SWRST bit. After a PUC, the SWRST bit is automatically set, keeping the USART in a reset condition. When set, the SWRST bit resets the URXIEx, UTXIEx, URXIFGx, OE, and FE bits and sets the UTXIFGx flag. The USPIEx bit is not altered by SWRST. Clearing SWRST releases the USART for operation. 你可以在初始化后读一下ME2 ![]() |
|
|
|
|
|
|
|
上来就不合适,你给的是置位,标注的是复位,串口的初始化,必须要先SWRST=1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
很不错的程序,我就编不出来。sorry 这个不是故意的
|
|
|
|
很不错的程序,我就编不出来
|
|
|
|
很不错的程序,我就编不出来。sorry 这个不是故意的
|
|
|
|
很不错的程序,我就编不出来
|
|
|
|
|
|
|
|
不错的程序,我就编不出来
|
|
|
|
不错的程序,我就编不出来
|
|
|
|
只有小组成员才能发言,加入小组>>
2952个成员聚集在这个小组
加入小组2706 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3041 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2278 浏览 1 评论
4707 浏览 1 评论
2492 浏览 1 评论
975浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3042浏览 2评论
2707浏览 1评论
1095浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-12 22:20 , Processed in 1.427993 second(s), Total 73, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191