打印

那位大虾帮忙看一下!

[复制链接]
1510|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wsgypb|  楼主 | 2010-12-5 20:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
那位大虾帮忙看一下这个mc9s12xs128的串口程序那里错了!该怎么写!唉!小弟是刚学单片机不久的!!特向各位请教了!在这先感谢了!!!


#include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
#define ReSendStatusR SCI0SR1
#define ReTestBit 5
#define SendTestBit 7
#define ReSendDataR SCI0DLR
unsigned char INT8U;
void SCIInit(void);
//void SCISend1(INT8U o)
//void SCIRel(INT8U *p)
#ifndef ISR_H
#define ISR_H
#define ENABLE_INTERRUPTS _asm_("cli")
#define DISABLE_INTERRUPTS _asm_("sei")
#define EnableSCIReInt SCI0CR2 |=0x20
#define DisableSCIReInt SCI0CR2 &=0xdf
#endif
void SCIInit(void)
{
  INT8U t;
  SCI0BDL=0x80;
  SCI0BDH=0x00;
  t=SCI0DRL;
  t=SCI0SR1;
  SCI0CR2=0x2c;
}
void _attribute_((interrupt)) ISR_Receive(void)
{
INT8U i;
INT8U SerialBuff[1];
DISABLE_INTERRUPTS;
i=SCIReN(1,SerialBuff);
if (i==0) SCISendN(1,SerialBuff);
ENABLE_INTERRUPTS;
}
void _attribute_((interrupt)) ISR_Empty(void)
{
}
void main(void)
{
DISABLE_INTERRUPTS;
SCIInt();
EnableSCIReInt;
ENABLE_INTERRUPTS;
void ISR_Receive(void);
void _attribute_((interrupt)) ISR_Receive(void);
void _start(void);

  /* put your own code here */
  //EnableInterrupts;
  for(;;) {
  
  
  
  
           } /* wait forever */
             /* please make sure that you never leave this function */
}

相关帖子

沙发
必有我师| | 2010-12-6 14:38 | 只看该作者
什么单片机啊?

使用特权

评论回复
板凳
wsgypb|  楼主 | 2010-12-6 15:17 | 只看该作者
不好意思!刚接触单片机没两个月!!不知道你问的是不是这个:Freescale  MC9S12XS128
终于有人回复了!!你是第一个!谢谢你了!

使用特权

评论回复
地板
wsgypb|  楼主 | 2010-12-7 21:02 | 只看该作者
额!一个串口初始化!用查询或者中断模式接收发送!!

void SCI_Init(void)
{
    SCI0CR1 =0x00;
    SCI0CR2 =0x2c; //enable Receive Full Interrupt,RX enable,Tx enable      
    SCI0BD  =0x106; //SCI0BDL=busclk/(16*SCI0BDL)
                  //busclk  8MHz, 9600bps,SCI0BD=0x34
                  //busclk 16MHz, 9600bps,SCI0BD=0x68
                  //busclk 24MHz, 9600bps,SCI0BD=0x9C
}                 //busclk 32MHz, 9600bps,SCI0BD=0xD0  
                  //busclk 40MHz, 9600bps,SCI0BD=0x106
中断模式
#pragma CODE_SEG __NEAR_SEG NON_BANKED

void interrupt 20  SCI0_ISR(void)
{     
  unsinged char i;                                   //此处为串口中断需要处理的事情
  i=SCI0DRL ;
  SCI0SR1_RDRF = 0;   
}

使用特权

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

本版积分规则

0

主题

3

帖子

1

粉丝