智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2005|回复: 1
打印 上一主题 下一主题

[单片机] 谁能帮我看看这个串口发送程序。。为什么总发布出去??。。

[复制链接]

2

主题

51

帖子

0

精华

高级会员

Rank: 4

积分
792
威望
414
贡献
152
兑换币
0
注册时间
2010-11-21
在线时间
113 小时
跳转到指定楼层
1#
发表于 2011-4-8 09:52:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5贡献
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
void SetBusCLK_80M()
{   
    CLKSEL=0X00;    //disengage PLL to system
    PLLCTL_PLLON=1;   //turn on PLL
    SYNR =0xc0 | 0x09;  //后六位有效                     
    REFDV=0x80 | 0x01;  //后四位有效
    POSTDIV=0x00;       //PLL Clock=2*OSC*(1+SYNR)/(1+REFDV)=160MHz;
    _asm(nop);          //BUS Clock=80M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;          //engage PLL to system;
}
void SCI_Init()
{
    SCI0CR1 = 0x04; //9 bits, no parity
    SCI0CR2_RE = 1; //Enable Rxd
    SCI0CR2_TE = 1; //Enable Txd
    SCI0CR2_RIE = 1; //Rxd interrupt
    SCI0CR2_TCIE = 0; //Disable Txd interrupt
    SCI0BDH = 0X02;
    SCI0BDL = 0X08; //SCI baud rate=busclk/(16*SCI0BDL)
                    //busclk  8MHz, 9600bps, SCI0BD=0x34
                    //busclk 16MHz, 9600bps, SCI0BD=0x68
                    //busclk 24MHz, 9600bps, SCI0BD=0x9C
                    //busclk 32MHz, 9600bps, SCI0BD=0xD0
                    //busclk 48MHz, 9600bps, SCI0BD=0x138
                    //busclk 80MHz, 9600bps, SCI0BD=0x208
                    //busclk 80MHz, 38400bps, SCI0BD=0x82
                    //busclk 80Mhz, 115200bps, SCI0BD=0x2B
}
void SCI_Send_Data(byte data)
{
   while( !(SCI0SR1 & 0x80) );
   SCI0DRL = data;
}
void delay_us(int time) {
  int i,j;
  for(i=0;i<time;i++)
     for(j=0;j<100;j++);   //100
}
void send_pic()
{int n,j;

//  rec_cmd=0;
  DisableInterrupts;
   delay_us(10);
   SCI_Send_Data('p');
   SCI_Send_Data('i');
   SCI_Send_Data('c');
   
    EnableInterrupts;
}


void main(void) {
  /* put your own code here */
  
    SetBusCLK_80M();
   SCI_Init();
EnableInterrupts;

  for(;;) {
  send_pic();
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}

做labvIEW通信的时候,用这个程序发送,SCI0DRL一直没有值。。不知道怎么回事,麻烦大家赐教下~~
谢谢谢谢谢~~~ 头疼shi我了。。。

2

主题

51

帖子

0

精华

高级会员

Rank: 4

积分
792
威望
414
贡献
152
兑换币
0
注册时间
2010-11-21
在线时间
113 小时
2#
 楼主| 发表于 2011-4-8 12:15:57 | 只看该作者
等好长时间了。。还是木人解答吗?。。哭。
回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-21 17:34 , Processed in 0.072912 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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