C8051F320红外发射接收程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include "c8051F320.h"
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
#include "INTRINS.H"
bit SPI_FH ; //主机SPI 是否结束中断程序
bit Buff_Flag; //缓存页(0或1)
bit Flag ;
sbit fashe = P1^0; //发射红外
sbit jieshou= P1^1; //接受红外
sbit zhishideng= P1^2; //LED灯
//unsigned int k;
void Delay01ms(unsigned int);
void Init(void);
void Timer_Init(void);
void main()
{
unsigned char i,j,k;
Init();
Timer_Init();
while(1)
{
zhishideng=jieshou; //读取一体化接收头数值//低电平亮if(Flag)
{
for(k=0;k<27;k++)
{
for(i=0;i<7;i++)
for(j=0;j<3;j++);
fashe=!fashe; //发射管输出
}
}
}
}
void Init(void)
{
CLKSEL = 0x10;
OSCXCN = 0x00;
OSCICN = 0xc3; //系统时钟不分频12M
CLKMUL = 0x00;
PCA0MD = 0x00; //看门狗禁止
P0MDIN = 0xff; //数字输入
P0MDOUT= 0xff; //推挽
P1MDIN = 0xff;
P1MDOUT= 0xff;
P2MDOUT= 0xff; //推挽
XBR0 |= 0x02; //连接SPI
XBR1 =0x40; //交叉开关使能
EA =1;
ESPI0 =1; //允许SPI中断
}
void Delay01ms(unsigned int t)
{
unsigned int i;
unsigned int j;
for (i=0;i for(j=0;j<1;j++); } void Timer_Init(void) { TMOD|=0x01; TH0=0xf0; TL0=0x00; CKCON=0x00; //定时器均使用系统时钟12分频 EA=1; /* interupt enable */ ET0=1; /* enable timer0 interrupt */ TR0=1; } void Timer0_isr(void) interrupt 1 { TF0=0; TH0=0x0f; /* Init value */ TL0=0x00; Flag=!Flag; }