STC 11F16XE如何烧录程序

STC 11F16XE如何烧录程序,第1张

首先,将烧写线把开发板与电脑连接,安装驱动之后,烧写程序能自动识别设备

打开后,就会看到这个界面,感觉好复杂的有木有?其实 烧写过程也就几步

首先,在界面左上角有个单片机型号,一般选择STC89C51系列下的STC89C52RC/绝和LE52RC

然后,导入程序文件,你需要点击打开程序文件按液老钮

点击之后会出现文件选择界面,文件格式是.hex,它一般在工程文件夹下,找到后双击或点击打开都可

最后点一下下载并埋盯按钮,再把开发板上的开关打开,也就是冷启动,静静的等待烧录完成了。

特别提示

选择单片机型号一定要注意,老板的单片机不能选STC89C52系列下的STC89C52,否则无法烧录

STC11 是一款基于 8051 内核的单片机系列,该系列芯片并不内置 PWM 模块,也就是说在 STC11 不支持直接产生 PWM 信号。但是,您可以通过编程实现软件PWM来控制外部器件的占空比,用其模拟PWM信号。

具体来说,您可以利用芯片GPIO口上敏笑的定时中断,根据需求编写相应的中断服务程序,在中断服务程序中修改GPIO电平,从而模拟PWM输出。相对于DMA方式和硬掘稿件PWM,用软件实现的PWM信号稳定性较差,响应时间也会有所延迟,但对于一些基本应用场景来说已经足够使判拿孝用了。

下面是我之前写的stc的程序,你可以参考下,都是差不多岩春的。

#include<at89x52.h>

unsigned char data TSET1,TSET2

void eeprom_write(void) //eeprom写

unsigned char eeprom_read(void)//eeprom读

void eeprom_erase(void) //eeprom擦出

void delay(unsigned char t)//延时

void timerset(void) //延时时间的设定

sfr ISP_DATA= 0xe2 /*ISP/IAP *** 作时的数据寄存器*/

sfr ISP_ADDRH = 0xe3 /*ISP/IAP *** 作时的地址寄存器高八位*/

sfr ISP_ADDRL = 0xe4 /*ISP/IAP *** 作时的地址寄存器低八位*/

sfr ISP_CMD = 0xe5 /*ISP/IAP *** 作时的命令模式寄存器*/

sfr ISP_TRIG= 0xe6 /*ISP/IAP *** 作时的命令触发寄存器*/

sfr ISP_CONTR = 0xe7 /*ISP/IAP控制寄存器*/

/**************************************************

main主程序

***************************************************/

main()

{

unsigned char flag2=0

TSET1=10

eeprom_erase()//擦出

eeprom_write()//写

TSET2=eeprom_read()//读闭枣拦

P1_0=1//开启振动

while(1)

{

while(flag2==0)

{

timerset()

while(P3_2==1)

if(P3_2==0)

{ delay(TSET2)

P1_0=0

flag2=1

}

}

while(flag2==1)

{

timerset()

while(P3_2==0)//等待

if(P3_2==1)

{

delay(TSET2)

P1_0=1

flag2=0

}

}

}

}

/*************************************************

延时时间设定程序

*************************************************/

void timerset(void)

{

unsigned char flag3=0,a=0

if(P3_3==0)//增加

{

for(a=0a<10a++)

if(P3_3==0)

{

while(P3_3==0)

if(TSET1<20) TSET1++

flag3=1

}

}

if(P3_4==0)/轿胡/减小

{

for(a=0a<10a++)

if(P3_4==0)

{

while(P3_4==0)

if(TSET1>1) TSET1--

flag3=1

}

}

if(flag3) //设定完毕后更新EEPROM

{

eeprom_erase()//擦出

eeprom_write()//写

TSET2=eeprom_read()//读

flag3=0

}

}

/*************************************************

EEPROM写程序

*************************************************/

void eeprom_write(void)

{

unsigned char j

ISP_ADDRH=0x22//选择存放数据的高八位地址寄存器

ISP_ADDRL=0x22//选择存放数据的低八位地址寄存器

ISP_CMD=0x02//命令模式触发对flash写 ,0x01读,0x02写,0x03擦除

ISP_DATA=TSET1//存放数据

ISP_CONTR=0x9a//使能ISP、IAP,,ISPEN=1允许改变FLASH,SWBS=0程序从主程序启动,等待时间为010

ISP_TRIG=0X46//对ISP_TRIG先写0x46

ISP_TRIG=0XB9//对ISP_TRIG先写0xB9,使ISP/IAP命令生效

for(j=0j<2j++)

}

/********************************************

EEPROM读程序

********************************************/

unsigned char eeprom_read(void)

{

unsigned char j

ISP_ADDRH=0x22

ISP_ADDRL=0x22

ISP_CMD=0x01

ISP_CONTR=0x9a

ISP_TRIG=0X46

ISP_TRIG=0XB9

for(j=0j<2j++)

return(ISP_DATA)

}

/***********************************************

EEPROM擦出程序

***********************************************/

void eeprom_erase(void)

{

unsigned char j

ISP_ADDRH=0x22

ISP_ADDRL=0x22

ISP_CMD=0x03

ISP_CONTR=0x9a

ISP_TRIG=0X46

ISP_TRIG=0XB9

for(j=0j<2j++)

}

/***********************************************

延时子程序

**********************************************/

void delay(unsigned char t)

{

unsigned int i,j

while(t--)

{

for(i=0i<600i++)

for(j=0j<600j++)

}

}


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

原文地址: http://outofmemory.cn/yw/8244499.html

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

发表评论

登录后才能评论

评论列表(0条)

保存