通信号。
当AT89C51RC从外部程序存储器执行外部代码时,SEN在每个机器周期被激活两次,而访问外部数据存储器时,SEN将不被激活。
A/VPP<31引脚)访问外部程序存储器控制信号。
:
为使能从0000H到FFFFH的外部程序存储器读取指令,A必须接GND。
注意加密方式1时,A将内部锁定位RESET。
为了执行内部程序指令,A应该接VCC。
在Flash编程期间,A也接收12伏VPP电压。
XTAL1<19引脚):
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2<18引脚):
振荡器反相放大器的输入端。
#include
#include//_nop_(>。
延时函数用
#defineucharunsignedchar
#defineuintunsignedint
sbitk1=P1^0。
sbitk2=P1^1。
sbitk3=P1^2。
sbittemp_out=P1^5。
sbithumi_out=P1^6。
sbitIO=P3^2。
uintcount。
uchards1,ds2,ds3,ds4。
ucharset_temp_H,set_temp_H_shi,set_temp_H_ge。
//设定温度的变量
ucharset_temp_L,set_temp_L_shi,set_temp_L_ge。
//设定温度的变量
ucharset_humi_H,set_humi_H_ge,set_humi_H_shi。
//设置湿度的变量
ucharset_humi_L,set_humi_L_ge,set_humi_L_shi。
//设置湿度的变量
ucharU8FLAG,k,flag。
ucharU8count,U8temp。
ucharU8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata。
ucharU8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp。
ucharU8comdata。
uintU16temp1,U16temp2。
ucharser[]={0,0}。
uchari。
ucharcodedis_7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。
//共阳LED段码表"0""1""2""3""4""5""6""7""8""9"
voidDelay1(uintj>
{
uchari。
for(。
j>0。
j-->
{
for(i=0。
i<35。
i++>。
}
}
voidDelay_10us(void>
{
uchari=6。
for(。
i>0。
i-->。
}
voidCOM(void>
{
uchari。
for(i=0。
i<8。
i++>
{
U8FLAG=2。
//---------------------
while((!
IO>&&U8FLAG++>。
Delay_10us(>。
Delay_10us(>。
//Delay_10us(>。
U8temp=0。
if(IO>U8temp=1。
U8FLAG=2。
while((IO>&&U8FLAG++>。
//----------------------
if(U8FLAG==1>break。
U8comdata<<=1。
U8comdata|=U8temp。
}
}
//--------------------------------
voidRH(void>
{
IO=0。
Delay1(50>。
IO=1。
Delay_10us(>。
Delay_10us(>。
Delay_10us(>。
Delay_10us(>。
IO=1。
if(!
IO>
{
U8FLAG=2。
while((!
IO>&&U8FLAG++>。
U8FLAG=2。
while((IO>&&U8FLAG++>。
COM(>。
U8RH_data_H_temp=U8comdata。
COM(>。
U8RH_data_L_temp=U8comdata。
COM(>。
U8T_data_H_temp=U8comdata。
COM(>。
U8T_data_L_temp=U8comdata。
COM(>。
U8checkdata_temp=U8comdata。
IO=1。
U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp>。
if(U8temp==U8checkdata_temp>
{
U8RH_data_H=U8RH_data_H_temp。
U8RH_data_L=U8RH_data_L_temp。
U8T_data_H=U8T_data_H_temp。
U8T_data_L=U8T_data_L_temp。
U8checkdata=U8checkdata_temp。
}
}
}
voidxiaoyin(>
{P2=0XFF。
P0=0XFF。
Delay_10us(>。
}
voiddisp(>
{
P2=0xfe。
P0=dis_7[ds1]。
Delay1(5>。
xiaoyin(>。
P2=0xfd。
P0=dis_7[ds2]。
Delay1(5>。
xiaoyin(>。
P2=0xfb。
P0=dis_7[ds3]。
Delay1(5>。
xiaoyin(>。
P2=0xf7。
P0=dis_7[ds4]。
Delay1(5>。
xiaoyin(>。
}
voiddisp_settemp_H(>
{
P2=0xfe。
P0=0x87。
Delay1(1>。
xiaoyin(>。
P2=0xfd。
P0=0x89。
Delay1(1>。
xiaoyin(>。
P2=0xf7。
P0=dis_7[set_temp_H_ge]。
Delay1(1>。
xiaoyin(>。
P2=0xfb。
P0=dis_7[set_temp_H_shi]。
Delay1(1>。
xiaoyin(>。
}
voiddisp_settemp_L(>
{
P2=0xfe。
P0=0x87。
Delay1(1>。
xiaoyin(>。
P2=0xfd。
P0=0xc7。
Delay1(1>。
xiaoyin(>。
P2=0xf7。
P0=dis_7[set_temp_L_ge]。
Delay1(1>。
xiaoyin(>。
P2=0xfb。
P0=dis_7[set_temp_L_shi]。
Delay1(1>。
xiaoyin(>。
}
voiddisp_sethumi_H(>
{
P2=0xfe。
P0=0x89。
Delay1(1>。
xiaoyin(>。
P2=0xfd。
P0=0x89。
Delay1(1>。
xiaoyin(>。
P2=0xf7。
P0=dis_7[set_humi_H_ge]。
Delay1(1>。
xiaoyin(>。
P2=0xfb。
P0=dis_7[set_humi_H_shi]。
Delay1(1>。
xiaoyin(>。
}
voiddisp_sethumi_L(>
{P2=0xfe。
P0=0x89。
Delay1(1>。
xiaoyin(>。
P2=0xfd。
P0=0xc7。
Delay1(1>。
xiaoyin(>。
P2=0xf7。
P0=dis_7[set_humi_L_ge]。
Delay1(1>。
xiaoyin(>。
P2=0xfb。
P0=dis_7[set_humi_L_shi]。
Delay1(1>。
xiaoyin(>。
}
voidkey_scan(>
{
if(k1==0>
{
while(k1==0>。
flag++。
if(flag==5>
flag=0。
}
if(flag==1>
{
while(k1==1>
{
if(k2==0>
{while(k2==0>。
set_temp_H++。
if(set_temp_H==100>
set_temp_H=0。
}
if(k3==0>
{while(k3==0>。
set_temp_H--。
if(set_temp_H==-1>
set_temp_H=100。
}
set_temp_H_ge=set_temp_H%10。
set_temp_H_shi=set_temp_H/10。
disp_settemp_H(>。
}
iapEraseSector(0x02000>。
iapProgramByte(0x02008,set_temp_H>。
delay(20>。
}
if(flag==2>
{
while(k1==1>
{
if(k2==0>
{while(k2==0>。
set_temp_L++。
if(set_temp_L==100>
set_temp_L=0。
}
if(k3==0>
{while(k3==0>。
set_temp_L--。
if(set_temp_L==-1>
set_temp_L=100。
}
set_temp_L_ge=set_temp_L%10。
set_temp_L_shi=set_temp_L/10。
disp_settemp_L(>。
}
iapEraseSector(0x02200>。
iapProgramByte(0x02208,set_temp_L>。
delay(20>。
}
//
if(flag==3>
{
while(k1==1>
{
if(k2==0>
{while(k2==0>。
set_humi_H++。
if(set_humi_H==100>
set_humi_H=0。
}
if(k3==0>
{while(k3==0>。
set_humi_H--。
if(set_humi_H==-1>
set_humi_H=100。
}
set_humi_H_ge=set_humi_H%10。
set_humi_H_shi=set_humi_H/10。
disp_sethumi_H(>。
}
iapEraseSector(0x02400>。
iapProgramByte(0x02408,set_humi_H>。
delay(20>。
}
//
if(flag==4>
{
while(k1==1>
{
if(k2==0>
{while(k2==0>。
set_humi_L++。
if(set_humi_L==100>
set_humi_L=0。
}
if(k3==0>
{while(k3==0>。
set_humi_L--。
if(set_humi_L==-1>
set_humi_L=100。
}
set_humi_L_ge=set_humi_L%10。
set_humi_L_shi=set_humi_L/10。
disp_sethumi_L(>。
}
iapEraseSector(0x02600>。
iapProgramByte(0x02608,set_humi_L>。
delay(20>。
}
}
voidconvdat(>
{
ds1=U8RH_data_H/10。
ds2=U8RH_data_H%10。
ds3=U8T_data_H/10。
ds4=U8T_data_H%10。
}
voidbijiao(>
{
if(U8RH_data_H
humi_out=0。
if(U8RH_data_H>set_humi_H>
humi_out=1。
if(U8T_data_H
temp_out=0。
if(U8T_data_H>set_temp_H>
temp_out=1。
}
/****************主函数************************/
voidmain(>
{
set_temp_H=iapReadByte(0x02008>。
set_temp_L=iapReadByte(0x02208>。
set_humi_H=iapReadByte(0x02408>。
set_humi_L=iapReadByte(0x02608>。
while(1>
{key_scan(>。
RH(>。
convdat(>。
disp(>。
bijiao(>。
}
}
//
//***********************结束**************************//