3128|4

6828

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

看一段msp430 定时器UART1通信的程序 [复制链接]

下面的这段程序实现的功能是,定时器定时1s,LED点亮一次,并且向UART1 发送一个字节的数据,用串口调试助手可以观察到发送过来的数据。

  • /********************************************************************
  • //DM430-L型定时器中断程序
  • //记时一秒让LED灯亮一次,选择辅助系统时钟32.768Khz,bo
  • //调试环境:EW430 V5.30
  • //第九单片机开发网
  • ********************************************************************/
  • #include
  • #define CPU_F ((double)8000000)
  • #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
  • #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
  • #define uchar unsigned char
  • #define uint unsigned int
  • #define ulong unsigned long
  • /*当BRCLK=CPU_F时用下面的公式可以计算,否则要根据设置加入分频系数*/
  • #define baud 9600 //设置波特率的大小
  • #define baud_setting (uint)((ulong)CPU_F/((ulong)baud)) //波特率计算公式
  • #define baud_h (uchar)(baud_setting>>8) //提取高位
  • #define baud_l (uchar)(baud_setting) //低位
  • #define KeyPort P1IN //独立键盘接在P10~P13
  • #define LED P2OUT //LED灯接在P20、P21上
  • uchar int_f=0x00;
  • //uchar count_f=0;
  • //*************************************************************************
  • // 系统时钟初始化
  • //*************************************************************************
  • void Clock_Init()
  • {
  • uchar i;
  • BCSCTL1&=~(XT2OFF+XTS); //打开XT振荡器
  • BCSCTL2 |=SELM1; //选择MCLK物理时钟源为XT2,不分频为8MHZ
  • BCSCTL2 |=SELS; //选择SMCLK为外部8M时钟源(理解)
  • do{
  • IFG1&=~OFIFG; //清除震荡标志
  • for(i=0;i<100;i++)
  • _NOP(); //延时等待
  • }
  • while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待
  • IFG1&=~OFIFG;
  • }
  • //*************************************************************************
  • // MSP430内部看门狗初始化
  • //*************************************************************************
  • void WDT_Init()
  • {
  • WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
  • }
  • //*************************************************************************
  • // 初始化IO口子程序
  • //*************************************************************************
  • void Port_init()
  • {
  • P1SEL = 0x00; //P1普通IO功能
  • P1DIR = 0xF0; //P10~P13输入模式,外部电路已接上拉电阻
  • P1IES = 0x0F;
  • P1IFG = 0;
  • P1IE = 0x0F;
  • P2SEL = 0x00; //P2口普通IO功能
  • P2DIR = 0x01; //P2口输出模式
  • }
  • //*************************************************************************
  • // MSP430串口初始化
  • //*************************************************************************
  • void UART_Init()
  • {
  • U1CTL|=SWRST; //复位SWRST
  • U1CTL|=CHAR; //8位数据模式
  • U1TCTL|=SSEL1; //SMCLK为串口时钟
  • U1BR1=baud_h; //BRCLK=8MHZ,Baud=BRCLK/N
  • U1BR0=baud_l; //N=UBR+(UxMCTL)/8
  • U1MCTL=0x00; //微调寄存器为0,波特率9600bps
  • ME2|=UTXE1; //UART1发送使能
  • ME2|=URXE1; //UART1接收使能
  • U1CTL&=~SWRST;
  • IE2|=URXIE1; //接收中断使能位
  • P3SEL|= BIT6; //设置IO口为特殊功能模块
  • P3DIR|= BIT6; //设置P3.4为输入,P3.5为输出口
  • P3SEL|= BIT7; //设置IO口为外围功能模块
  • }
  • //*************************************************************************
  • // 串口0发送数据函数
  • //*************************************************************************
  • void Send_Byte(uchar data)
  • {
  • U1TXBUF=data;
  • while ((IFG2 & UTXIFG1)==0);
  • }
  • //*************************************************************************
  • // 处理来自串口 0 的发送中断,预留
  • //*************************************************************************
  • #pragma vector=UART0TX_VECTOR
  • __interrupt void UART0_TX_ISR(void)
  • {
  • }
  • //*************************************************************************
  • // 定时器中断服务程序
  • //*************************************************************************
  • #pragma vector = TIMERA0_VECTOR
  • __interrupt void Timer_A(void)
  • {
  • P2OUT ^= 0x01;
  • Send_Byte(0x44);
  • }
  • //*************************************************************************
  • // 主程序
  • //*************************************************************************
  • void main(void)
  • {
  • WDT_Init(); //看门狗设置
  • Clock_Init(); //系统时钟设置
  • Port_init(); //系统初始化,设置IO口属性
  • UART_Init();
  • CCTL0=CCIE;
  • CCR0=32768; //计数到32768,定时1s
  • TACTL=TASSEL_1+MC_1 ; //计数器设置为增计数模式,采用辅助系统统时钟
  • _EINT(); //开中断
  • while(1)
  • {
  • }




最新回复

我手上有CH430的串口模块,怕吧430 烧坏,最好说下吧  详情 回复 发表于 2015-12-1 23:34
 
点赞 关注

回复
举报

1706

帖子

4

TA的资源

纯净的硅(初级)

沙发
 
有个问题,像MAX232等串口芯片供电是5V的,硬件上怎么和430的串口相连?

点评

可以看看MAX3232 ,和MAX232引脚兼容的  详情 回复 发表于 2015-11-28 09:57
 
 

回复

1658

帖子

1

TA的资源

纯净的硅(高级)

板凳
 
有许多类似MAX3232等,3.3V~5V 兼容的 RS-232线路驱动器/接收器,采用3.3V供电即可直接和430相连
 
 
 

回复

1658

帖子

1

TA的资源

纯净的硅(高级)

4
 
DavidZH 发表于 2015-11-28 09:12
有个问题,像MAX232等串口芯片供电是5V的,硬件上怎么和430的串口相连?

可以看看MAX3232 ,和MAX232引脚兼容的

点评

我手上有CH430的串口模块,怕吧430 烧坏,最好说下吧  详情 回复 发表于 2015-12-1 23:34
 
 
 

回复

1706

帖子

4

TA的资源

纯净的硅(初级)

5
 
tianshuihu 发表于 2015-11-28 09:57
可以看看MAX3232 ,和MAX232引脚兼容的

我手上有CH430的串口模块,怕吧430 烧坏,最好说下吧
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表