搜索
bottom↓
回复: 4

谁有《MSP430_系列_单片机_系统工程_设计与_实践》 共享下。谢谢!!!

[复制链接]

出0入0汤圆

发表于 2011-6-30 18:00:38 | 显示全部楼层 |阅读模式
谁有《MSP430_系列_单片机_系统工程_设计与_实践》 共享下。谢谢!!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-6-30 18:33:13 | 显示全部楼层
看来真没有

出0入0汤圆

发表于 2011-6-30 19:13:28 | 显示全部楼层
本坛搜搜吧。记得有人发过好多本MSP430的书。

出0入0汤圆

 楼主| 发表于 2011-6-30 20:11:03 | 显示全部楼层
回复【2楼】jjj206
本坛搜搜吧。记得有人发过好多本msp430的书。
-----------------------------------------------------------------------

呵呵~~就没有这本书,今天无意间在书店发现这本书,大概看了下,写的非常不错。就想找找有pdf没。我还是明天去买本回来吧。

出0入0汤圆

 楼主| 发表于 2011-6-30 22:27:34 | 显示全部楼层
这段是这本书上高效串口部分。

2. 增强型异步通信

         1. 串口在多机中的应用

         2. 为了能随时写串口,且不阻塞CPU运行,通常做法是用软件实现一个FIFO来作为高速的数据填入与低速的数据发送之间的缓冲。


实例程序        


#include <msp430x42x.h>

#define     TXBUF_SIZE     32     //发送FIFO的最大容量

Unsigned char TX_BUFF[TXBUF_SIZE];   //发送FIFO缓冲区数组

Unsigned int UART_OutLen=0;        //发送FIFO内待发出的字节数

Unsigned int TX_IndexR=0;     //发送FIFO的读指针

Unsigned int TX_IndexW=0;    //发送FIFO的写指针


/*******************************

*名称:UART0_PutChar()

*功能:从串口发送1字节数据(向缓冲队列内填入1字节待发送数据)

*入口参数:Chr:待发送的字节

*出口参数:返回1表示发送成功

                      返回0表示发送失败

*说明: 发送过程中,不阻塞CPU运行

*******************************/


Char UART0_PutChar(unsigned char Chr)

{

         If(UART_OutLen == TXBUF_SIZE)             //如果FIFO已满

         {

         Return(0);

}

If(UART_OutLen==0)        //如果是第一字节(之前FIFO是空的)

{

IFG1|=UTXIFG0;       //人为制造第一次中断条件(置中断标志位)

}

_DINT();            //涉及FIFO操作时不允许中断,以免指针错乱

UART_OutLen++;

TX_BUFF[TX_IndexW]=Chr;              //待发送数据通过写指针写入FIFO

If(++TX_IndexW>TXBUF_SIZE)         //写指针递增,且判断是否下标越界

{

         TX_IndexW=0;

}

IE1|=UTXIE0;   //开启UART0的发送,在中断内依次发送数据

_EINT();

Return(1);

}



#progma vector=UART0TX_VECTOR

__interrupt void UART0_TX(void)             //串口发送中断

{

         If(UART_OutLen>0)

         {

         UART_OutLen--;

         U0TXBUF=TX_BUFF[TX_IndexR];

         If(++TX_IndexR >= TXBUF_SIZE)

         {

         TX_IndexR=0;

         }

}

         Else IE1&=~UTXIE0;        //如果数据发生完毕则关闭UART0的发送中断,停止发送

}



Void main(void)

{

         WDTCTL=WDTPW+WDTHOLD;

         FLL_CTL0 |= XCAP18PF;

         U0CTL=CHAR;

         ME1|=UTXE0+URXE0;

         U0TCTL|=SSEL0;

         U0BR1=0;

         U0BR0=13;

         U0MCTL=0x6B;

         P2SEL|=BIT4+BIT5;

         _EINT();

        

         While(1)

         {

UART0_PutChar(0x01);

UART0_PutChar(0x02);

UART0_PutChar(0x03);

UART0_PutChar(0x04);

UART0_PutChar(0x05);


}

}
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-28 14:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表