⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mc68hc908rf2带曼彻斯特码的发射程序.txt

📁 这个是在CODEWARRIOR环境下对MOTO系列的单片机的一个带曼彻斯特码的发射程序
💻 TXT
字号:
SCI串口发送程序:(以MC68HC908JK8_DIP20为例,分别以1200/2400/4800/9600/19200的波特率发送0-255,同时PTB4脚的LED闪烁)

/*********************************************************/
/* 功能描述: 串口发送程序,程序控制连续发射0~255, */
/* 由PC接收, */
/* 编译环境:CodeWarrior3.1 */
/* IC 型号 :mc68hc908jk8_dip20 */
/* 晶振频率:4.9152MHz */
/* 编辑时间:2005_11_29 */
/* 编者:laomu */
/*********************************************************/
#include <hidef.h> /* for EnableInterrupts macro */
#include <MC68HC908JK8.h> /* include peripheral declarations */


#define Baud_19200 0x00 //19200
#define Baud_9600 0x01 //9600
#define Baud_4800 0x02 //4800
#define Baud_2400 0x03 //2400
#define Baud_1200 0x04 //1200


 

#define RxD PTD_PTD6 //intput
#define TxD PTD_PTD7 //output
#define OUTPUT_LED PTB_PTB4 //发送指示灯,每发送一个数据,LED闪烁一次.

void delay_time(uint delay_time);
void Baud_Setup(unsigned char BaudRate);
void init_sys(void); 
void sci_send(uchar ch);
uchar sci_receive(void);// 此程序未经验证!
/*********************************************************/
/* 函数:void main(void) */
/*********************************************************/
void main(void) { 
uchar data;

DisableInterrupts; /* disable interrupts */
/* include your code here */
init_sys();
EnableInterrupts; /* enable interrupts */
for(;;) {

Baud_Setup(Baud_1200); 
for(data=0;data<255;data++){

sci_send(data);

OUTPUT_LED = 1; // 输出指示灯点亮约1秒
delay_time(10000);
OUTPUT_LED = 0;
}

Baud_Setup(Baud_2400); 
for(data=0;data<255;data++){

sci_send(data);

OUTPUT_LED = 1; // 输出指示灯点亮约1秒
delay_time(10000);
OUTPUT_LED = 0;
}

Baud_Setup(Baud_4800); 
for(data=0;data<255;data++){

sci_send(data);

OUTPUT_LED = 1; // 输出指示灯点亮约1秒
delay_time(10000);
OUTPUT_LED = 0;
}

Baud_Setup(Baud_9600); 
for(data=0;data<255;data++){

sci_send(data);

OUTPUT_LED = 1; // 输出指示灯点亮约1秒
delay_time(10000);
OUTPUT_LED = 0;
}

Baud_Setup(Baud_19200); 
for(data=0;data<255;data++){

sci_send(data);

OUTPUT_LED = 1; // 输出指示灯点亮约1秒
delay_time(10000);
OUTPUT_LED = 0;
}


} /* loop forever */
/* please make sure that you never leave this function */
}

/*********************************************************/
/* 函数名:void sci_send(uchar ch) */
/* Sends the data stored in "data" through the SCI. */
/* Recall the data there is reversed, so it is sent last */
/* byte first. */
/* check ok */
/*********************************************************/
void sci_send(uchar ch) { 
while(!SCS1_SCTE); //Wait until SCTE set. 
SCDR = ch; //Get data to transmit
}

uchar sci_receive(void){
uchar data;
while(!SCS1_SCRF);
data = SCDR;
return data;
}

/*********************************************************/
/* 函数名:void delay_time(uchar delay_time); */
/*********************************************************/
void delay_time(uint delay_time){
uint i;
i=delay_time;
while(i--);
}

/*********************************************************/
/* 函数名:void Baud_Setup(unsigned char BaudRate); */
/* 功能:串口初始化 */
/*********************************************************/
void Baud_Setup(unsigned char BaudRate) {
//初始化RS-232串口,波特率为9600
//M=0 8bit Mode;1start and 1 stop bit. no PEN and PTY.
SCC1 = 0x40; //enable SCI ENSCI=1
//Enable Tx,and Disable Rx
SCC2 = 0x08; 
SCBR = BaudRate; //With a 4.9152MHz XTAL, 9600 bauds. 

}

/*********************************************************/
/* 函数名:void init_sys(void) */
/* 功能:系统初始化 */
/*********************************************************/
void init_sys(void){

CONFIG1 = 0x03; // close watchdog
CONFIG2 = 0x80; 

//初始化I/O口 
DDRB = 0xFF; 
PTB = 0x00; 

DDRD = 0x80; 
PTD = 0x00; 

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -