芯片破解单片机红外小车的程序
芯片破解单片机源程序如下:
- /*小车用遥控器控制程序
- 芯片破解L298N的IN1234对应单片机的P1.0123
- 芯片破解直行P1=0xfa
- 芯片破解左转0xf9(小车两轮胎正反转 调向)或0xf8(往哪面转 哪面的的轮胎不转)
- 右转0xf6或0xf2
- 后退0xf5
- 停车oxff
- */
- #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义h
- sbit IR=P3^2; //红外接口标志 ,ir是红外辐射 的意思
- #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
- sbit dula=P2^6; //定义锁存使能端口 段锁存
- sbit wela=P2^7; // 位锁存
- unsigned char code DuanMa[14]={0x3f,0x06,0x5b,0x4f,0x40,0x38,0x31};// 显示段码值0~9
- unsigned char irtime,gao_num,di_num,l,r,back,stop;//红外、PWM用全局变量
- bit irpro_ok,irok; //标志位,处理完成irpro_ok=1,接收完成irok=1
- unsigned char IRcord[4]; //红外码值有4个(客户码1+客2+操作码+操作反码),4*8=32位
- unsigned char irdata[33]; //32位红外码值+1位引导码,也就是接受一次需要存储的字节数
- void Ir_work(void); //红外散转函数声明
- void Ircordpro(void); //红外码值处理函数声明
- void delay(int i) //延时i ms
- {
- int j,k;
- for(j=i;j>0;j--)
- for(k=110;k>0;k--);
- }
- void tim0_isr (void) interrupt 1 using 1
- {
- irtime++; //用于计数2个下降沿之间的时间
- }
- /*------------------------------------------------
- 外部中断0中断处理
- ------------------------------------------------*/
- void EX0_ISR (void) interrupt 0 //外部中断0服务函数
- {
- static unsigned char i; //接收红外信号处理
- static bit startflag; //是否开始处理标志位
- if(startflag)
- {
- if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5ms
- i=0;
- irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1
- irtime=0;
- i++;
- if(i==33)
- {
- irok=1;
- i=0;
- }
- }
- else
- {
- irtime=0;
- startflag=1;
- }
- }

芯片解密