//******************************************************************************
// MSP430P149 Demo - UART0, Ultra-Low Pwr UART 9600 Echo ISR, 32kHz ACLK
//
// Description: Echo a received character, RX ISR used. Normal mode is LPM3,
// USART1 RX interrupt triggers TX Echo.
// ACLK = UCLK1 = LFXT1 = 32768, MCLK = SMCLK = DCO~ 800k
// Baud rate divider with 32768hz XTAL @9600 = 32768Hz/9600 = 3.41 (0003h 4Ah )
// //* An external watch crystal is required on XIN XOUT for ACLK *//
//
//
// MSP430F149
// -----------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P3.6|--> TXD
// | P3.7|--> RXD
// | |
//
//
// Copyright (c) 2009.04 WH, All Rights Reserved.
// Description : The UART1 module
// History :
// [Author] [Date] [Version] [Description]
// [1] dragonhzw 2009/04/09 Ver 1.0.0 Initial file.
//
// Built with IAR Assembler for MSP430V3.20A/W32 (3.20.1.9)
//******************************************************************************
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <ctype.h>
#include <math.h>
#include <msp430x14x.h>
#include "_printf.h"
/***FUNC+*********************************************************************/
/* Name : Init_UART1 */
/* Descrp : init Uart1 port. */
/* Input : None. */
/* Output : None. */
/* Return : None. */
/***FUNC-*********************************************************************/
void Init_UART0(void)
{
//将寄存器的内容清零
U0CTL = 0X00;
//数据位为8bit
U0CTL += 0x10;
//将寄存器的内容清零
U0TCTL = 0X00;
//波特率发生器选择SMCLK
U0TCTL += SSEL1;
//波特率为115200
UBR0_0 = 0X45;
UBR1_0 = 0X00;
//调整寄存器
UMCTL_0 = 0X00;
//使能UART0的TXD和RXD
ME1 |= UTXE0 + URXE0;
//使能UART1的RX中断
IE1 |= URXIE0;
//使能UART1的TX中断
IE1 |= UTXIE0;
//设置P3.4为UART0的TXD
P3SEL |= BIT4;
//设置P3.5为UART0的RXD
P3SEL |= BIT5;
//P3.4为输出管脚
P3DIR |= BIT4;
return;
}
/***FUNC+*********************************************************************/
/* Name : UART0_RX_ISR */
/* Descrp : 处理来自串口 1 的发送中断 */
/* Input : None. */
/* Output : None. */
/* Return : None. */
/***FUNC-*********************************************************************/
void Uart_Printf(const char *fmt,...)
{
va_list ap;
char string[256];
va_start(ap,fmt);
vsprintf(string,fmt,ap);
Uart_SendString(string);
va_end(ap);
return;
}
/***FUNC+*********************************************************************/
/* Name : UART1_RX_ISR */
/* Descrp : 处理来自串口 1 的发送中断 */
/* Input : None. */
/* Output : None. */
/* Return : None. */
/***FUNC-*********************************************************************/
void Uart_SendString(char *pt)
{
while(*pt)
{
Uart_SendByte(*pt++);
}
return;
}
/***FUNC+*********************************************************************/
/* Name : Uart_SendByte */
/* Descrp : 处理来自串口 1 的发送中断 */
/* Input : None. */
/* Output : None. */
/* Return : None. */
/***FUNC-*********************************************************************/
void Uart_SendByte(short sData)
{
if(sData=='\n')
{
while ((IFG1 & UTXIFG0) == 0);
Delay(10); //because the slow response of hyper_terminal
TXBUF0 ='\r';
}
while ((IFG1 & UTXIFG0) == 0);
Delay(10);
TXBUF0 = sData;
return;
}
/***FUNC+*********************************************************************/
/* Name : Uart_GetString */
/* Descrp : 延时 */
/* Input : None. */
/* Output : None. */
/* Return : None. */
/***FUNC-*********************************************************************/
void Uart_GetString(char *string)
{
char *string2 = string;
char c;
while((c = Uart_Getch())!='\r')
{
if(c=='\b')
{
if( (int)string2 < (int)string )
{
Uart_Printf("\b \b");
string--;
}
}
else
{
*string++ = c;
Uart_SendByte(c);
}
}
*string='\0';
Uart_SendByte('\n');
return;
}
/***FUNC+*********************************************************************/
/* Name : Uart_GetIntNum */
/* Descrp : */
/* Input : None. */
/* Output : None. */
/* Return : None. */
/***FUNC-*********************************************************************/
short Uart_GetIntNum(void)
{
char str[30];
char *string = str;
unsigned short base = 10;
unsigned short minus = 0;
short result = 0;
short lastIndex;
unsigned short i;
Uart_GetString(string);
if(string[0]=='-')
{
minus = 1;
string++;
}
if(string[0]=='0' && (string[1]=='x' || string[1]=='X'))
{
base = 16;
string += 2;
}
lastIndex = strlen(string) - 1;
if(lastIndex<0)
return -1;
if(string[lastIndex]=='h' || string[lastIndex]=='H' )
{
base = 16;
string[lastIndex] = 0;
lastIndex--;
}
if(base==10)
{
result = atoi(string);
result = minus ? (-1*result):result;
}
else
{
for(i=0;i<=lastIndex;i++)
{
if(isalpha(string[i]))
{
if(isupper(string[i]))
result = (result<<4) + string[i] - 'A' + 10;
else
result = (result<<4) + string[i] - 'a' + 10;
}
else
result = (result<<4) + string[i] - '0';
}
result = minus ? (-1*result):result;
}
return result;
}
/***FUNC+*************************************************
没有合适的资源?快使用搜索试试~ 我知道了~
MSP430单片机开发板实验案例源码-电子温度计LCD 1602字符液晶显示实验.rar
共38个文件
r43:11个
c:4个
h:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 28 浏览量
2022-12-13
07:15:20
上传
评论
收藏 74KB RAR 举报
温馨提示
MSP430单片机开发板实验案例源码-电子温度计LCD 1602字符液晶显示实验.rar
资源推荐
资源详情
资源评论
收起资源包目录
MSP430单片机开发板实验案例源码-电子温度计LCD 1602字符液晶显示实验.rar (38个子文件)
MSP430单片机开发板实验案例源码-电子温度计LCD 1602字符液晶显示实验
DS18B20+LCD1602
wk
DisplayTemp.PR 3KB
DisplayTemp.PFI 28B
DisplayTemp.IMD 368B
DisplayTemp.PS 11KB
DisplayTemp.WK3 22KB
DisplayTemp.PRI 14KB
DisplayTemp.IAB 4KB
DisplayTemp.IMB 4KB
DisplayTemp.PO 776B
DisplayTemp.IAD 368B
Lcd1602.h 3KB
DS18B20.c 8KB
_printf.c 9KB
DisplayTemp.ewd 19KB
main.c 5KB
Lcd1602.c 7KB
DisplayTemp.dep 6KB
DisplayTemp.ewp 47KB
settings
DisplayTemp.dbgdt 4KB
DisplayTemp.dni 1KB
DisplayTemp.wsdt 4KB
DisplayTemp.cspy.bat 1KB
Debug
List
Exe
DisplayTemp.d43 50KB
Obj
DisplayTemp.pbd 527B
EWC4FE.r43 896B
EWF6D3.r43 896B
EW84D9.r43 896B
Lcd1602.r43 12KB
EW8529.r43 896B
EWF723.r43 896B
main.r43 13KB
EW83CC.r43 896B
DS18B20.r43 14KB
EW847A.r43 896B
_printf.r43 27KB
DisplayTemp.eww 165B
DS18B20.h 1KB
_printf.h 990B
共 38 条
- 1
资源评论
GJZGRB
- 粉丝: 1025
- 资源: 5846
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功