📄 lufang.c
字号:
#include<reg52.h>
//*************************//
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
//*******管脚定义************//
#define ad P0
sbit ad16=P2^0;
sbit ad17=P2^1;
sbit ale_l=P2^2;
sbit ale_h=P2^3;
#define key P1
sbit clk=P3^4;
sbit aden=P2^6;
sbit wr=P3^6;
sbit daen=P2^7;
sbit rd=P3^7;
//***********全局变量*************//
uchar key_value=0;
uchar state=0;
uchar ad_h=0;
uchar ad_l=0;
//*********MS延时子程序*************//
void mdelay(uchar j)
{
uchar i;
for(;j>0;j--)
{
for(i=170;i>0;i--);
}
}
//***********初始化子程序************//
void inis(void)
{
ad=0; //地址初始化//
ad16=0;
ad17=0;
ale_l=0;
ale_l=1;
ale_l=0;
ale_h=0;
ale_h=1;
ale_h=0;
clk=1;
wr=1; //控制信号初始化//
rd=1;
aden=1;
daen=1;
IT0=1; //外部中断0初始化//
EX0=1;
TMOD=0x02; //定时器0初始化//
TH0=0xc2;
TL0=0xc2;
ET0=1;
PT0=1;
TR0=1;
EA=1; //开中断//
}
//***********外部中断0*************//
void int0() interrupt 0
{
EX0=0;
key=0xff;
mdelay(50);
key_value=~(key&0x0f);
key_value=key_value-240;
switch(key_value)
{
case 1: state=1;break;
case 2: state=2;break;
case 3: state=0;break;
default: break;
}
EX0=1;
}
//***********定时器中断0*************//
void timer0() interrupt 1
{
clk=~clk;
if(!clk)
{
if(state)
{
if(state == 1)
{
aden=0;
wr=0;
;
aden=1;
wr=1;
}
else
{
rd=0;
daen=0;
;
rd=1;
daen=1;
}
}
}
else
{
if(state)
{ad=ad_l;
ale_l=1;
ale_l=0;
ad=ad_h;
ale_h=1;
ale_h=0;
ad_l++;
if(ad_l == 0)
{
ad_h++;
if(ad_h == 0)
{
ad16=!ad16;
if(!ad16)
ad17=!ad17;
}
}
}
}
}
//********主程序*************//
void main(void)
{
inis();
while(1)
{
if(ad17&ad16 && (~ad_h&0xff))
{
state=0;
}
if(state == 0)
{
ad_l=0;
ad_h=0;
ad16=0;
ad17=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -