📄 红外破解编码程序2.txt
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
bit leader; // 引导码标记
bit user; //用户码标记
sbit P1_5=P1^5;
sbit P1_4=P1^4;
sbit P2_1=P2^1;
sbit P2_4=P2^4;
sbit P2_2=P2^2;
//sbit P1_6=P1^6;
uchar code seg[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
uint code1[45];
uchar j=0;
uint mm;
uchar r;
//INT0中断,T0开始计时
void service_int0()interrupt 0 using 1
{
TH0=0; //清零TH0和TL0
TL0=0;
TR0=1; //定时器0停止工作,防止重复中断
EX1=1;
//ET0=1; //定时器0中断允许
//EA=1; //开中断
}
//INT1中断
void service_int1()interrupt 2 using 2
{
uint mm;
EX0=0; //禁止外部中断0中断
TR0=0; //停止定时器0工作
//ET0=0; //禁止定时器0中断
//EA=0; //关闭T0
mm=TH0;
mm=mm<<8;
mm=mm+TL0;
if(r<46)
code1[r++]=mm;
mm=0;
EX0=1;
}
/************* 延时t毫秒 ***********/
void delay(uint t)
{
uint i;
while(t--)
{
/* 对于11.0592M时钟,约延时1ms */
for (i=0;i<125;i++)
{}
}
}
/**********显示函数**************************/
display()
{
/////////////////显圈数//////////////////
P0=seg[code1[j]/10000]|0x30;delay(1); //万位
P0=seg[code1[j]/1000%10]|0x40;delay(1); //千位
P0=seg[code1[j]/100%10]|0x50;delay(1); //百位
P0=seg[code1[j]%100/10]|0x60;delay(1); //十位
P0=seg[code1[j]%10]|0x70;delay(1); //个位
P0=seg[j/10]|0x00;delay(1);
P0=seg[j%10]|0x10;delay(1);
//P0=seg[QS%10]|0x20;delay(1);
}
void main (void)
{
P2_4=0;
TMOD=0x01; //00010001B,定时器0和1均为模式1,16位计数
TCON=0x05; //00000101B,外不中断0和1均下降沿处罚
IP=0x01;
EA=1; //允许中断
//ET0=1; //定时器0中断允许
TR0=0; //定时器0接通工作
EX0=1; //外部中断0允许
EX1=0;
while(1)
{
if(P2_2==0)
{ delay(100);
if(P2_2==0)
{
j++;
P1_5=0;
}
}
if(P2_1==0)
{ delay(100);
if(P2_1==0)
{
j--;
P1_4=0;
}
}
if(j<46)
display();
display();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -