把操作码采用数码管的前三位显示出来

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

把操作码采用数码管的前三位显示出来

*/

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include

#include

#define TURE 1

#define FALSE 0

sbit IR=P3^2; //红外接收标志

unsigned char const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

/******************************************************************/

/* 变量声明 */

/******************************************************************/

unsigned char irtime;//红外用全局变量

bit irpro_ok,irok;

unsigned char IRcord[4];

unsigned char irdata[33];

unsigned char cun[3];

/******************************************************************/

/* 函数声明 */

/******************************************************************/

void Delay(unsigned char mS);

void Ir_work(void);

void Ircordpro(void);

/******************************************************************/

/* 定时器0中断服务函数 */

/******************************************************************/

void tim0_isr (void) interrupt 1 using 1//定时器0中断服务函数

{

irtime++; //用于计数2个下降沿之间的时间

}

/******************************************************************/

/* 外部中断0函数 */

/******************************************************************/

void ex0_isr (void) interrupt 0 using 0//外部中断0服务函数

{

static unsigned char iii=0; //接收红外信号处理

static bit startflag,startflag_flag; //是否开始处理标志位

if(startflag)

{

if(irtime<145&&irtime>=80)//引导码 TC9012的头码,9ms+4.5ms

{ iii=0; startflag_flag=1; }

if(startflag_flag) //确保引导无误

{

irdata[iii]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1

irtime=0;

iii++;

if(iii==33)

{

irok=1;

iii=0;

EX0 = 0; //关闭外部中断

startflag=0;

startflag_flag=0;

}

}

}

else

{irtime=0;startflag=1;}

}

/******************************************************************/ /* 定时器0初始化 */

/******************************************************************/ void TIM0init(void)//定时器0初始化

{

TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值

TH0=256-100; //重载值

TL0=256-100; //初始化值定时时间为0.1ms

ET0=1; //开中断

TR0=1;

}

/******************************************************************/

/* 外部中断初始化 */

/******************************************************************/ void EX0init(void)

{

IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)

EX0 = 1; //使能外部中断

EA = 1; //开总中断

}

/******************************************************************/ /* 红外键值处理 */

/******************************************************************/

void Ir_work(void)//红外键值散转程序

{

cun[2]=dofly[IRcord[3]%10];

cun[1]=dofly[IRcord[3]/10%10];

cun[0]=dofly[IRcord[3]/100] ;

irpro_ok=0;//处理完成标志

}

/******************************************************************/ /* 红外解码函数处理 */

/******************************************************************/ void Ircordpro(void)//红外码值处理函数

{

unsigned char i, j, k;

unsigned char cord,value=0;

k=1;

for(i=0;i<4;i++) //处理4个字节

相关文档
最新文档