单片机at89S52 在线烧程序要预留那几个脚位?

单片机at89S52 在线烧程序要预留那几个脚位?,第1张

at89S52 在线烧程序要用P1.5,P1.6,P1.7,RST。

这只留出几个脚也没有用啊,要用烧录线,现在只能买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)

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7724506.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存