/******************************************************************
* 实验名称:串口通信仿真(MSP430F249)
*
* 实验说明:
* 通设置系统主时钟(MCLK=8Mhz ) 、辅助时钟(ACLK=8Mhz )、
* 子系统时钟(SMCLK=8Mhz )
* 编译软件:Embedded Workbench 5.3
*
*仿真软件:proteus7.7 sp 2
*
*作者:hameyou QQ:385434903
*
*日期:2010-7-31
******************************************************************/
#include <MSP430x24x.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
uchar const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //共阴数码管段选码表,无小数点
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar Disbuf[8],Index;
uchar RXbbuf[4];
uchar data1;
void delayms(uint t)
{
uint i;
while(t--)
//for(i=1330;i>0;i--);//进过参数的调整
for(i=150;i>0;i--);//进过参数的调整
}
void InitUART0(void)
{
if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
{
while(1); // If calibration constants erased
// do not load, trap CPU!!
}
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P3SEL = 0x30; // P3.4,5 = USCI_A0 TXD/RXD
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600; (104)decimal = 0x068h
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
}
void SendData(uchar Data)
{
UCA0TXBUF = Data; // TX -> RXed character
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
}
void SendChars(char *p)
{
uchar len;
len=strlen(p);
while(len)
{
SendData(*p);
p++;
len--;
}
}
void RxDataProcess(uchar Data)
{
signed char i;
for(i=0;i<3;i++)
{
RXbbuf[i]=RXbbuf[i+1];
}
RXbbuf[3]=Data;
for(i=0;i<4;i++)
{
Disbuf[2*i]=table[RXbbuf[i]/16];
Disbuf[2*i+1]=table[RXbbuf[i]%16];
}
}
void main(void)
{
WDTCTL=WDTPW + WDTHOLD; // 关闭看门狗
P4DIR=0x01;
P1DIR=0xFF; // 设置方向
P1SEL=0; // 设置为普通I/O 口
P2DIR=0xFF; // 设置方向
P2SEL=0; // 设置为普通I/O 口
P1OUT=0x00;
P2OUT=0xFF;
InitUART0();
SendChars("Press any Key.....\r");
_BIS_SR(LPM0_bits+ GIE);//进入低功耗睡眠模式
while(1)
{
P2OUT=0xFF;
P1OUT=Disbuf[Index];
P2OUT=~(1<<Index);
if(++Index==8) Index=0;
delayms(1);
}
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void usart0_rx (void)
{
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = UCA0RXBUF; // TX -> RXed character
RxDataProcess(UCA0RXBUF);
LPM0_EXIT;
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于MSP430F249的串口+数码管显示仿真(源码+仿真)
共44个文件
ewp:5个
ewd:5个
s43:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 122 浏览量
2024-04-26
12:45:39
上传
评论
收藏 48KB 7Z 举报
温馨提示
基于MSP430F249的串口+数码管显示仿真(源码+仿真) 基于MSP430F249的串口+数码管显示仿真(源码+仿真) 基于MSP430F249的串口+数码管显示仿真(源码+仿真) 基于MSP430F249的串口+数码管显示仿真(源码+仿真) 基于MSP430F249的串口+数码管显示仿真(源码+仿真) 基于MSP430F249的串口+数码管显示仿真(源码+仿真) 基于MSP430F249的串口+数码管显示仿真(源码+仿真) 基于MSP430F249的串口+数码管显示仿真(源码+仿真) 基于MSP430F249的串口+数码管显示仿真(源码+仿真)
资源推荐
资源详情
资源评论
收起资源包目录
基于MSP430F249的串口+数码管显示仿真(源码+仿真).7z (44个子文件)
基于MSP430F249的串口+数码管显示仿真(源码+仿真)
clock.ewd 13KB
clock_A.ewd 12KB
clock_A.ewp 43KB
Backup (2) of clock.ewd 12KB
Backup of clock.ewp 30KB
UART.PWI 1KB
clock_A.dep 565B
UART.pdsprj.DESKTOP-L4T3F68.xl.workspace 3KB
UART.DSN 121KB
SourceFile
clock_A.s43 2KB
UART.c 3KB
clock.PWI 1KB
Backup of clock.ewd 9KB
clock.dep 4KB
Backup of clock_A.ewp 30KB
Backup of clock_A.ewd 9KB
Last Loaded clock.DBK 125KB
clock.ewp 45KB
UART.eww 159B
Backup (2) of clock.ewp 43KB
Last Loaded UART.DBK 121KB
Debug
List
clock.s43 27KB
UART.s43 20KB
Obj
UART.r43 17KB
clock.r43 39KB
UART.pbi 541B
clock.pbd 123B
Exe
UART.d90 13KB
clock.ubrof 9KB
UART.hex 2KB
clock.d90.asm 21B
clock.a43 763B
clock.d43 479B
clock.rof 9KB
settings
UART.wsdt 3KB
clock.fmt 55B
clock.dni 809B
clock.wsdt 4KB
clock_A.dbgdt 63B
clock_A.fmt 55B
clock_A.dni 475B
clock.dbgdt 4KB
clock_A.cspy.bat 2KB
clock.cspy.bat 3KB
共 44 条
- 1
资源评论
森旺电子
- 粉丝: 6948
- 资源: 250
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功