打印

求一个程序模版

[复制链接]
801|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liliang9554|  楼主 | 2014-10-12 21:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dengdc| | 2014-10-12 21:28 | 只看该作者
你自己没试试?

使用特权

评论回复
板凳
liliang9554|  楼主 | 2014-10-12 21:30 | 只看该作者
我写了很多程序都没有办法实现

使用特权

评论回复
地板
huangchui| | 2014-10-12 21:30 | 只看该作者
不知道G2553单片机,不过你可以先确定下是硬件原因还是软件原因

使用特权

评论回复
5
zhenykun| | 2014-10-12 21:31 | 只看该作者
用示波器量电脑的发送,如果有波形量单片机接受引脚,如果有波形量发送引脚,如果有波形则量电脑接收

使用特权

评论回复
6
zhanghqi| | 2014-10-12 21:31 | 只看该作者
如果到单片机接收没波形则可能是硬件原因;如果发送开始无波形则可能是软件原因

使用特权

评论回复
7
zhenykun| | 2014-10-12 21:32 | 只看该作者
是的,程序 估计你得自己想办法了!!!

使用特权

评论回复
8
liliang9554|  楼主 | 2014-10-12 21:33 | 只看该作者
我现在编写的程序可以实现单片机给PC发送数据的功能,就是把想要显示的数据写在程序里面,然后下载运行,在串口调试助手里面就可以在数据接收区显示了,但是就是不能实现在数据发送区里面手动输入,然后再数据接收区里显示

使用特权

评论回复
9
wyjie| | 2014-10-12 21:34 | 只看该作者
看看程序

使用特权

评论回复
10
liliang9554|  楼主 | 2014-10-12 21:35 | 只看该作者
//通行格式:N.8.1,2400

#include<msp430g2553.h>
typedef unsigned char uchar;
typedef unsigned int uint;

void Delays(void);
void PutString(uchar *ptr);
void initUART(void);

void main(void)

{
  uchar *tishi ="MCU sends 0~127 to PC and the\
                 \n screen will display their corresponding\
                  \n ASCII code as follows:";

       uchar value =0;
       WDTCTL = WDTPW + WDTHOLD;
       initUART();
       _EINT();
       PutString(tishi);

while(1)  //MCU向PC发信息
   {
    while(!(IFG2&UCA0TXIFG));   //TX 缓存空闲?
    UCA0TXBUF = value;    // 发送数据
    value&=0x7f;    //使value的值不要超过128
    IFG2&=~UCA0TXIFG;  //标志寄存器清零
    while(!(IFG2&UCA0TXIFG));  
    UCA0TXBUF ='\n';    //换行
   Delays();
   }
}

void initUART(void)     //各种初始化

{
  BCSCTL1 = CALBC1_1MHZ;     
  DCOCTL  = CALDCO_1MHZ;  //时钟的设置  (可以不用设置,要设置不能设置的太大)
   P1SEL |=0x06;  // P1.1,2选择为UART收发端口
   P1SEL2 |=0x06;   //将P1.1 P1.2设为第二功能  
  UCA0BR0 = 0x6D;   //波特率9600      
  UCA0BR1 = 0x00;
UCA0MCTL =0;     //  选择模式      
UCA0CTL1|=UCSSEL_2+UCSWRST; //SMCLK时钟
IE2|= UCA0RXIE+UCA0TXIE;     // 使能接收中断  在这里可以不用
  UCA0CTL1&= ~UCSWRST;         // 初始化
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void get()
{
    uchar value;
    value=UCA0RXBUF;
    IFG2&=~UCA0RXIFG;
}

void PutString(uchar *ptr)
{
   while(*ptr!='\0')
    {
     while(!(IFG2&UCA0TXIFG));  //TX 缓存空闲?
      UCA0TXBUF = *ptr++;       // 发送数据
    IFG2&=~UCA0TXIFG;  //标志寄存器清零
    }
    while(!(IFG2&UCA0TXIFG));
   UCA0TXBUF = '\n';

}


void Delays(void)    //延时函数
{
uint i;
for(i=60000;i>0;i--);
}

使用特权

评论回复
11
dengdc| | 2014-10-12 21:36 | 只看该作者
楼主给的很直观的code,我是暂时没看出多大问题的

使用特权

评论回复
12
dengdc| | 2014-10-12 21:36 | 只看该作者
不过还是建议多检查下initUART()函数中个相关配置寄存器的使用情况的

使用特权

评论回复
13
liliang9554|  楼主 | 2014-10-12 21:38 | 只看该作者
嗯,好的,我知道了

使用特权

评论回复
14
liliang9554|  楼主 | 2014-10-12 21:39 | 只看该作者
结贴了哈,周末快乐

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

粉丝