黎姿和李嘉欣:STC12C2052(系列)及STC12C5A60S2单片机免断电ISP下载程序的新方法

来源:百度文库 编辑:九乡新闻网 时间:2024/07/05 17:58:53

转载自:http://hi.baidu.com/wannenggong/ ... 49a0cd9c82048e.html
wannenggong的空间

我只是测试了下,确实很好用,谢谢wannenggong了,希望大家也都能用上,方便大家了。

//*******************************************************//
C51语言程序题头的应用声明区;//或
加入一条:sbit  IN_OFF=P3^0;//——第一步
底层或被调用函数(应用程序);
main(){
IN_OFF=1;//——第二步
while(1)//主循环
{
if (IN_OFF==0){ISP_CONTR=0x60;}//STC12C5A60S2应改为 {IAP_CONTR=0x60;}//——第三步
else//——第四步
{
主函数程序;
}
}
}

改完程序后,记得第一次下载时还需要拔插插头,以后就再也不用了。
菜鸟原创,非常简单。如感兴趣,尽可试验。

‍注 :‍IN_OFF=1;既RXD口置1,其原因就是在未进行端口操作时,该端口电平为1.2V相当于低电平,只有将其设置为1后才能进行软件的低电平检测;若‍将P3.0端口置1的语句放在主循环内,则P3.0口将不能用于其它控制而将P3.0端口置1的语句放在主循环外,则可以保留该I/O口用于其它用途。
头文件修改



亲测实例:STC12C2052AD单片机控制LED和蜂鸣器同时使能
#include

sbit buzzer=P3^7;
sbit LED=P1^7;
delay() // 让P1.0口延时1秒
{
unsigned int i,j;
for (i=0;i<500;i++)
for (j=0;j<358;j++);
}

fasheng() //发声子程序
{
unsigned int a,x;
for (a=0;a<2700;a++) //for循环让蜂鸣器发声1秒
{
   buzzer=!buzzer;
   for (x=0;x<45;x++); //45为蜂鸣器发声频率,可调
}
}
void main()
{
IN_OFF=1;//---第二步
while (1)
{
  if (IN_OFF==0){ISP_CONTR=0x60;}//--第三步
  else//---第四步
  {
   LED=0; //P1.0口LED点亮
   fasheng(); //P2.0发声1S
   LED=1; //P1.0口LED熄灭
   delay(); //延时1秒
  }
}
}