版主你好 我有PE的一个BDM,,请问怎么用它生成参考代码呢。麻烦你和我说下吧,我还是收发不成功。我上午用示波器看了,电脑有信号发出来可是开发板就是收不到呢。开发板用sci也发不出来。
我用的是mc9s12xdt512,你参考一下吧
/*************************************************
串口0初始化程序
BaudRate0:要设置的串口波特率
*************************************************/
void sci0_init(void)
{
//SCI0BD=(Clk_Frequece*1000000/BaudRate0/16); // 计算波特率寄存器的值
SCI0BD= 260; // 设置波特率为9600bps,4M晶振,所以总线时钟频率为40M
SCI0CR1=0; // 正常8位模式,无奇偶校验
SCI0CR2=0x2c; // 使能接收中断,使能发送、接收
}
/*************************************************
串口0发送一个字节程序
SendChar:要发送的数据
*************************************************/
void sci0_send(uchar SendChar)
{
while(!SCI0SR1_TDRE); // 等待发送缓冲区空
SCI0SR1_TDRE=1; // 写1清标志位
SCI0DRL = SendChar; // 写SCI数据寄存器
}
/*************************************************
串口0接收中断程序
*************************************************/
#pragma CODE_SEG NON_BANKED
interrupt void SCI0Recive_ISR(void)
{
SCI0SR1_RDRF=1; // 写1清标志位
SCI0RxData=SCI0DRL; // 读SCI数据寄存器
RxFlag0=1;
sci0_send(SCI0RxData); // 将接收到的数据回送
}
#pragma CODE_SEG DEFAULT
我发一个DP256的SCI程序,你参考一下吧:
#include <hidef.h> /* common defines and macros */
#include <mc9s12dp256.h> /* derivative information */
#define SCIRE PTM_PTM7 //87 pin 串口接收控制 输出
#define SCITE PTM_PTM6 //88 pin 串口发送控制 输出
#define SCIRxE SCI0CR2_RE //SCI 接收控制位
#define SCITxE SCI0CR2_TE //SCI 发送控制位
/*
************************************************************************
函数声明
************************************************************************
*/
#pragma CODE_SEG DEFAULT
void SCIInit(void);
void SCI_TX(unsigned char *data,unsigned char num); //串口发送
void SCI_RX(unsigned char *data,unsigned char num); //串口接受
void PORTSInit(void)
{
DDRS=0xff; /*PORTS定义为输出*/
PTS=0xff; /*初始化为低*/
}
/*
***************************SCIInit***************************
*************************************************************
*/
void SCIInit(void)
{
SCI0BDH=0x00; /*波特率设为9600*/
SCI0BDL=0x34;
SCI0CR1=0x00; /*选择normal模式,数据位8bit,起始位1bit, 停止位1bit,无校验位*/
SCIRxE=0; /*接收中断不使能*/
SCITxE=0; /*发送中断不使能*/
}
/*
************************************************************************
串口发送程序
data 发送数据的地址 num 发送数据的长度
************************************************************************
*/
void SCI_TX(unsigned char *data,unsigned char num)
{
unsigned char i;
SCIRxE=0; /*接受不使能 */
SCITxE=1; /*发送使能 */
for(i=0;i<num;i++)
{
while((SCI0SR1_TDRE==0)) ; /*等待发送缓冲区空 */
SCI0DRL=*(data+i); /*向发送缓冲区写入待发送数据 */
}
while(SCI0SR1_TC==0){} /*等待发送结束 */
SCIRxE=0; /*接收禁止*/
SCITxE=0; /*发送禁止*/
}
/*
************************************************************************
串口接受程序
data 接受数据的地址 num 发送数据的长度
************************************************************************
*/
void SCI_RX(unsigned char *data,unsigned char num)
{
unsigned char i;
SCIRxE=1; /*发送不使能 */
SCITxE=0;
for(i=0;i<num;i++)
{
while((SCI0SR1_RDRF==0)); /*等待接受缓冲区满标志 */
*(data+i)=SCI0DRL;
}
PTS_PTS6=~PTS_PTS6; /*翻转PTS_PTS6 */
SCIRxE=0;
SCITxE=0;
}
void main(void)
{
unsigned char temp_s[10]={"wukaikun"};
DisableInterrupts; /*关全局中断*/
PORTSInit();
SCIInit();
EnableInterrupts; /*开全局中断*/
for(;;)
{
SCI_TX(temp_s,10); /*第一次发送字符wukaikun,此后发送接收的10个字符*/
SCI_RX(temp_s,10); /*接收到10个字符后驱动PTS_PTS6(D8)输出翻转*/
}
}
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |