打开后,就会看到这个界面,感觉好复杂的有木有?其实 烧写过程也就几步
首先,在界面左上角有个单片机型号,一般选择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++)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)