📄 moersend.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 + -