📄 38k.c
字号:
#include <reg51.h>
#include <INTRINS.H>
#define uchar unsigned char
#define uint unsigned int
uchar data red_receive1[10];
uchar bdata rece;
sbit rece_0=rece^0;
uchar idata in_count;
sbit out_38k=P2^1;
sbit in_38K=P0^4;
idata struct count{uchar flag;uchar count[10];}in_38;
/********************************************************************
函数说明:延时函数
大概延时
del1*10(us)
*********************************************************************/
void delay(uchar del1)
{
uchar data i,j;
for(i=del1;i<=0;i--)
for(j=10;j<=0;j--)
;
}
/********************************************************************
函数说明:38k波形发生函数
*********************************************************************/
void send_38k()
{
uchar data _38_count;
EA=0; //关闭中断,严格保证时间
red_receive1[0]=0;
_38_count=20;
in_38.flag=1;
_nop_(); //延时,避免冲撞
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
while(_38_count>10) //先发送10个方波
{
out_38k=0;
_38_count--;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
out_38k=1;
_nop_();
}
while(_38_count>0)
{
out_38k=0;
_38_count--;
_nop_();
_nop_();
_nop_();
// _nop_();
rece_0=!in_38K;
red_receive1[0]=red_receive1[0]+rece;
out_38k=1;
_nop_();
_nop_();
_nop_();
//_nop_();
rece_0=!in_38K;
red_receive1[0]=red_receive1[0]+rece;
}
EA=1;
}
void main()
{
uchar idata i,m;
delay(10);
while(1)
{
send_38k();
delay(30);
if(red_receive1[0]>5)
{
m++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -