描述:
本来是用11.0592MHZ现在改成22.1184MHZ
程序如下,该怎么改,可以说得详细点吗?
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^4;//按键控制开机
sbit key2=P3^5;//按键控制关机
sbit key3=P3^6;//按键控制温度+
sbit key4=P3^7;//按键控制温度-
sbit out=P1^5;//发送IO口
uchar wd1[15]={0x00,0x08,0x04,0x0c,0x02,
0x0a,0x06,0x0e,0x01,0x09,
0x05,0x0d,0x03,0x0b,0x07
};
uchar wd2[15]={0x0a,0x06,0x0e,0x01,0x09,
0x05,0x0d,0x03,0x0b,0x07,
0x0f,0x00,0x08,0x04,0x0c
};
uchar x=12;//开机28度
/************晶振11.0592MHz**************/
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=112;j>0;j--);
}
void delay560us(void) //560us延迟函数
{
uint j;
for(j=63;j>0;j--);
}
void delay4500us(void) //4.5ms延迟函数
{
uint j;
for(j=516;j>0;j--);
}
void khz_2(uint num) //38KHZ脉冲 占空比1:2
{
for(;num>0;num--)
{
out=~out;
}
}
void send0_a(void) //发送0
{
khz_2(42) ;
//khz_3(21) ;
out=1;
delay560us();
}
void send1_a(void) //发送1
{
khz_2(42) ;
out=1;
delay560us();
delay560us();
delay560us();
}
void leadcode_a(void) //发送引导码
{
khz_2(690) ;
out=1;
delay4500us();
}
/***************************关机****************************/
void close( uchar a,uchar b,uchar c,uchar d)
{
uint i;
leadcode_a();
send1_a();
for(i=0;i<7;i++)
send0_a();
if(a)
send1_a();
else
send0_a();
if(b)
send1_a();
else
send0_a();
if(c)
send1_a();
else
send0_a();
if(d)
send1_a();
else
send0_a();
send0_a();
send0_a();
send0_a();
send0_a();
for(i=0;i<5;i++)
send0_a();
send1_a();
for(i=0;i<6;i++)
send0_a();
send1_a();
send0_a();
send1_a();
send0_a();
send0_a();
send1_a();
send0_a();
khz_2(42) ;
out=1;
delay(20);
}
void close1(uchar e,uchar f,uchar g,uchar h )
{
uchar i;
for(i=0;i<13;i++)
send0_a();
send1_a();
send0_a();
send0_a();
for(i=0;i<12;i++)
send0_a();
if(e)
send1_a();
else
send0_a();
if(f)
send1_a();
else
send0_a();
if(g)
send1_a();
else
send0_a();
if(h)
send0_a();
else
send1_a();
khz_2(42) ;
out=1;
delay(1000);
/*******************************************/
/****************开机************************/
}
void open(uchar a,uchar b,uchar c,uchar d )
{
uint i;
leadcode_a();
send1_a();
send0_a();
send0_a();
send1_a();
for(i=0;i<4;i++)
send0_a();
if(a)
send1_a();
else
send0_a();
if(b)
send1_a();
else
send0_a();
if(c)
send1_a();
else
send0_a();
if(d)
send1_a();
else
send0_a();
send0_a();
send0_a();
send0_a();
send0_a();
for(i=0;i<5;i++)
send0_a();
send1_a();
for(i=0;i<6;i++)
send0_a();
send1_a();
send0_a();
send1_a();
send0_a();
send0_a();
send1_a();
send0_a();
khz_2(42) ;
out=1;
delay(20);
}
void open1(uchar e,uchar f,uchar g,uchar h)
{
uchar i;
for(i=0;i<13;i++)
send0_a();
send1_a();
send0_a();
send0_a();
for(i=0;i<12;i++)
send0_a();
if(e)
send1_a();
else
send0_a();
if(f)
send1_a();
else
send0_a();
if(g)
send1_a();
else
send0_a();
if(h)
send1_a();
else
send0_a();
khz_2(42) ;
out=1;
delay(1000);
}
void keyscan()
{
uchar a,b,c,d,e,f,g,h;
if(key1==0)
{
delay(10);
if(key1==0)
{
while(!key1);
if(wd1[x] & 0x08)
a=1;
else
a=0;
if(wd1[x] & 0x04)
b=1;
else
b=0;
if(wd1[x] & 0x02)
c=1;
else
c=0;
if(wd1[x] & 0x01)
d=1;
else
d=0;
if(wd2[x] & 0x08)
e=1;
else
e=0;
if(wd2[x] & 0x04)
f=1;
else
f=0;
if(wd2[x] & 0x02)
g=1;
else
g=0;
if(wd2[x] & 0x01)
h=1;
else
h=0;
open(a,b,c,d);
open1(e,f,g,h);
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
while(!key2);
if((wd1[x] & 0x08))
a=1;
else
a=0;
if((wd1[x] & 0x04))
b=1;
else
b=0;
if((wd1[x] & 0x02))
c=1;
else
c=0;
if((wd1[x] & 0x01))
d=1;
else
d=0;
if((wd2[x] & 0x08))
e=1;
else
e=0;
if((wd2[x] & 0x04))
f=1;
else
f=0;
if((wd2[x] & 0x02))
g=1;
else
g=0;
if((wd2[x] & 0x01))
h=1;
else
h=0;
close(a,b,c,d);
close1(e,f,g,h);
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{
while(!key1);
x++;
if((wd1[x] & 0x08))
a=1;
else
a=0;
if((wd1[x] & 0