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

📄 moersend.c

📁 莫尔斯编解码源程序
💻 C
字号:


#ifndef __C8051F020_H__
#define __C8051F020_H_
#include <c8051f020.h>
#endif

#define StartTimer3() 		TMR3CN |= 0x04
#define StopTimer3() 		TMR3CN &= 0xf3
#define TIMER3H				0x55
#define	TIMER3L				0x55



sbit DATA	=	P2^7;
unsigned char Timer3Flag = 0;



void Timer3Init(void)
{
	EIE2 |= 0x01;        	//Extended Interrupt Enable 2
	EIP2 = 0x01;        	//Extended Interrupt Priority 2
    TMR3RLL = TIMER3H; 		// Timer 3 Reload Register Low Byte
    TMR3RLH = TIMER3L; 		// Timer 3 Reload Register High Byte
    TMR3H = TIMER3H;   		// Timer 3 High Byte
    TMR3L = TIMER3L;   		// Timer 3 Low Byte
}



/*
*indata只能是0,或者1两个值
*/
unsigned char SendBite(unsigned char indata)
{
	unsigned char i = 0;
	unsigned temp = 0;

	if(indata == 0)
	{
		temp = 1; 
	}
	else
	{
		if(indata == 1)
		{
			temp = 3;
		}
		else
		{
			return 0;										/*indata不为0也不为1,错误返回*/
		}
	}


	Timer3Init();											/*发送数据*/
	DATA = 0;
	DATA = 1;
	StartTimer3();	
	for(i = 0; i < temp; i++)
	{	
		Timer3Flag = 0;
		while(!Timer3Flag);
	}

	DATA = 0;												/*发送间隔*/
	StopTimer3();
	Timer3Init();
	StartTimer3();
	for(i = 0; i < 2; i++)
	{	
		Timer3Flag = 0;
		while(!Timer3Flag);
	}

	return 1;
}





void SendEndSymble(void)
{
	unsigned char i = 0;

	Timer3Init();
	DATA = 0;
	StartTimer3();	
	for(i = 0; i < 5; i++)
	{	
		Timer3Flag = 0;
		while(!Timer3Flag);
	}
	StopTimer3();
	DATA = 1;
	for(i=0;i<255;i++);
	DATA = 0;
}


unsigned char SendData(unsigned char *p_send,unsigned char DataLength)
{	
	unsigned char i = 0;
	for(i = 0; i < DataLength; i++)
	{
		SendBite(p_send[i]);
	}
	SendEndSymble();

	return 1;
}



void Timer3_ISR(void) interrupt 14
{	
	TMR3CN &= 0x7f;							/*TF3 = 0*/
	Timer3Flag = 1;
}

⌨️ 快捷键说明

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