使用keil编辑程序
新建工程,选择单片机型号AT89S51

新建一个main.c文件
#include <AT89X51.h>//AT89S51的头文件
#include <intrins.h>
sbit LED = P2^4;
void function()interrupt 0{
LED = 1;
}
void delay(int t){
int j=0;
int i=0;
for(i=0;i<t*1000;i++)
for(j=0;j<124;j++)
;
}
void main(){
EA=1;
EX0=1;
IT0=1;
P2=0X0;
while(1){
if(P2_0==1)
P2_1=1;
if(P2_2==1){
P2_1=0;
}
}
}
程序的功能就是检测到p20引脚高电平,就将p21引脚置高电平,检测到p22引脚高电平,就将p21引脚置低电平
保存文件,对于源代码组,右键添加文件到源代码组,选择刚刚保存的main.c文件
生成hex文件烧录程序的办法:

点击工具栏的魔术棒,输出选项卡,勾选产生hex文件

之后点击工程,建立所有目标文件就会编译生成hex文件了
打开progisp软件,选择单片机型号,右侧选择调入flash选择hex文件,之后选择自动,就会将程序烧录进单片机中

注意的事项
AT89S51单片机在烧录和使用过程中必须接外部晶振
确保51单片机的EA引脚接高电平,表示使用片内ROM,否则程序会乱跑
用keil编每次重新译的hex文件,使用progisp烧录都要重新载入一次flash,否则烧录的是之前的hex文件