📄 main.c
字号:
/***************************************************************************************
*
* (c) copyright 2005,Tongji-Freescale Automobile Electronic Aligned Lab,ShangHai,China
*
* All Rights Reserved
*
*
* File Name : SCI
*
* Programmer(s) : Wumingjun,Wukai
*
* Date Created : 2005.07.16
*
* Current Revision : V1.0
*
* Modification History :
*
* Description :
*
***************************************************************************************/
#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)输出翻转*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -