
这只留出几个脚也没有用啊,要用烧录线,现在只能买USB转ISP的烧录线,而且要向店家说明,是给AT89S52烧录程序的,还要向店家要烧录软件。
现在,给AT89S52烧录程序是很麻烦的事,不如用STC89C52,用USB转TTL模块就搞定了,这种模块,网上可以买到,非常多,也好买。
#include"reg51.h"#include"stdio.h"
sbit led=P1^0//LED灯接P1.0口,低电平有效。
sbit key=P1^1//按键接P1.1口,低电平有效。
bit key_flag=0//给你定义一个按键标志,为后面点亮LED保持使用
void main(void)//进入主程序
{
led=1开机的时候保持LED不亮
while(1)//进入主程序循环状态,一直在这个while循环里检测
{
if(key==0)//如果有按键被按下
{
key_flag = ~key_flag//将这个标志取反,如果在按下前,他是1,则变为0,如果是0,则变为1.
while(!key)//按键是否松开,如果松开,上面的取反有效,否则一直不变LED的状态。
}
if(key_flag)//如果这个标志为1,则LED=0,就是点亮了。
{led=0}//点亮
else{led=1}//否则就是熄灭LED指示灯。
}
}
}
#include <reg52.h>#define uint unsigned int
#define uchar unsigned char
sbit RED_A = P0^0
sbit YELLOW_A = P0^1
sbit GREEN_A = P0^2
sbit RED_B = P0^3
sbit YELLOW_B = P0^4
sbit GREEN_B = P0^5
uchar Time_Count = 0,Flash_Count = 0,Operation_Type = 1
void T0_INT() interrupt 1
{
TH0 = -50000/256
TL0 = -50000%256
switch(Operation_Type)
{
case 1:
RED_A=0YELLOW_A=0GREEN_A=1
RED_B=1YELLOW_B=0GREEN_B=0
if(++Time_Count != 100) return
Time_Count=0
Operation_Type = 2
break
case 2:
if(++Time_Count != 8) return
Time_Count=0
YELLOW_A=!YELLOW_A
GREEN_A=0
if(++Flash_Count != 10) return
Flash_Count=0
Operation_Type = 3
break
case 3:
RED_A=1YELLOW_A=0GREEN_A=0
RED_B=0YELLOW_B=0GREEN_B=1
if(++Time_Count != 100) return
Time_Count=0
Operation_Type = 4
break
case 4:
if(++Time_Count != 8) return
Time_Count=0
YELLOW_B=!YELLOW_B
GREEN_B=0
if(++Flash_Count !=10)
return
Flash_Count=0
Operation_Type = 1
break
}
}
void main()
{
TMOD = 0x01
IE = 0x82
TR0 = 1
while(1)
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)