📄 irdac.c
字号:
#include <reg51.h> //头文件
#include <stdio.h>
sbit DOUT=P2^0; //数据输出
sbit DIN=P2^1; //数据输入
sbit SCLK=P2^2; //串行时钟信号
sbit CS=P2^3; //MAX3100片选
sbit IRQ=P3^2; //红外模式接口
int TX1;
int TX2;
int RX1;
int RX2;
int AA;
void UTLK(); //函数声明
void BYT8();
void main() //主程序
{
SP=0x70;
SCLK=0; //时钟置0
TMOD=0x20;
TH1=0xFD;
SCON=0x50;
PCON=0x80;
TCON=0x40;
TX1=0xB4;
TX2=0xCA;
UTLK(); //发送数据
while(1)
{
if(IRQ==0) //接收数据
{
TX1=0x00;
TX2=0x00;
UTLK();
AA=RX2;
SBUF=AA;
while(TI==0);
TI=0;
}
}
}
void UTLK() //数据(16位)收发子程序
{
CS=0;
AA=TX1;
BYT8(); //调用BYT8()
RX1=AA;
AA=TX2;
BYT8();
RX2=AA;
CS=1;
}
void BYT8()
{
int i;
int C=0;
for(i=0;i<8;i++)
{
AA<<1; //左移
DOUT=C;
SCLK=1; //时钟线置1
C=DIN;
SCLK=0; //时钟线置0
AA=AA | C;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -