/*------------------------------------------------------------------*/
/* --- STC MCU International Limited -------------------------------*/
/* --- STC 1T Series MCU RC Demo -----------------------------------*/
/* --- Mobile: (86)13922805190 -------------------------------------*/
/* --- Fax: 86-755-82944243 ----------------------------------------*/
/* --- Tel: 86-755-82948412 ----------------------------------------*/
/* --- Web: www.STCMCU.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the */
/* article, please specify in which data and procedures from STC */
/*------------------------------------------------------------------*/
/************************** ISP/IAP *****************************
;STC12C/LE5201/PWM/AD STC12C/LE5202/PWM/AD STC12C/LE5204/PWM/AD STC12C/LE5205/PWM/AD 扇区分配,512字节/扇区 (0000~03FF=1K)
;SECTOR1 SECTOR2
;0000~01FF 0200~03FF
; STC12C/LE5206PWM/AD 可以在应用程序修改应用程序。0000~17FFH,12个扇区
;STC12C/LE5A60S2/AD/PWM 扇区分配,512字节/扇区,从0x0000开始。
STC12C/LE5A08S2/AD/PWM 8K 16扇区 0x0000~0x1FFF
STC12C/LE5A16S2/AD/PWM 8K 16扇区 0x0000~0x1FFF
STC12C/LE5A20S2/AD/PWM 8K 16扇区 0x0000~0x1FFF
STC12C/LE5A32S2/AD/PWM 28K 56扇区 0x0000~0x6FFF
STC12C/LE5A40S2/AD/PWM 20K 40扇区 0x0000~0x4FFF
STC12C/LE5A48S2/AD/PWM 12K 24扇区 0x0000~0x2FFF
STC12C/LE5A52S2/AD/PWM 8K 16扇区 0x0000~0x1FFF
STC12C/LE5A56S2/AD/PWM 4K 8扇区 0x0000~0x0FFF
STC12C/LE5A60S2/AD/PWM 1K 2扇区 0x0000~0x03FF
;STC1F/L01E/02E/04E/05E 扇区分配,512字节/扇区 (0000~03FF=1K)
;SECTOR1 SECTOR2
;0000~01FF 0200~03FF
;IAP11F/L06 可以在应用程序修改应用程序。0000~17FFH,12个扇区6K
;IAP11F/L62 可以在应用程序修改应用程序。0000~17FFH,124个扇区62K
STC11F/L01E 1K 2扇区 0x0000~0x03FF
STC11F/L02E 1K 2扇区 0x0000~0x03FF
STC11F/L03E 1K 2扇区 0x0000~0x03FF
STC11F/L04E 1K 2扇区 0x0000~0x03FF
STC11F/L05E 1K 2扇区 0x0000~0x03FF
STC11F/L08XE 8K 16扇区 0x0000~0x1FFF
STC11F/L16XE 8K 16扇区 0x0000~0x1FFF
STC11F/L20XE 8K 16扇区 0x0000~0x1FFF
STC11F/L32XE 28K 56扇区 0x0000~0x6FFF
STC11F/L40XE 20K 40扇区 0x0000~0x4FFF
STC11F/L48XE 12K 24扇区 0x0000~0x2FFF
STC11F/L52XE 8K 16扇区 0x0000~0x1FFF
STC11F/L56XE 4K 8扇区 0x0000~0x0FFF
STC11F/L60XE 1K 2扇区 0x0000~0x03FF
STC10F/L02XE 4K 8扇区 0x0000~0x0FFF
STC10F/L04XE 4K 8扇区 0x0000~0x0FFF
STC10F/L06XE 4K 8扇区 0x0000~0x0FFF
STC10F/L08XE 4K 8扇区 0x0000~0x0FFF
STC10F/L10XE 2K 4扇区 0x0000~0x07FF
STC10F/L12XE 1K 2扇区 0x0000~0x03FF
;IAP10F/L14X 可以在应用程序修改应用程序。0000~37FFH,28个扇区14K
*/
#include "config.h"
sfr ISP_DATA = 0xC2;
sfr ISP_ADDRH = 0xC3;
sfr ISP_ADDRL = 0xC4;
sfr ISP_CMD = 0xC5;
sfr ISP_TRIG = 0xC6;
sfr ISP_CONTR = 0xC7;
//sfr ISP_CMD = 0xC5;
#define ISP_STANDBY() ISP_CMD = 0 //ISP空闲命令(禁止)
#define ISP_READ() ISP_CMD = 1 //ISP读出命令
#define ISP_WRITE() ISP_CMD = 2 //ISP写入命令
#define ISP_ERASE() ISP_CMD = 3 //ISP擦除命令
//sfr ISP_TRIG = 0xC6;
#define ISP_TRIG() ISP_TRIG = 0x5A, ISP_TRIG = 0xA5 //ISP触发命令
// 7 6 5 4 3 2 1 0 Reset Value
//sfr IAP_CONTR = 0xC7; IAPEN SWBS SWRST CFAIL - WT2 WT1 WT0 0000,x000 //IAP Control Register
#define ISP_EN 0x80
#define ISP_SWBS 0x40
#define ISP_SWRST 0x20
#define ISP_CMD_FAIL 0x10
#define ISP_WAIT_1MHZ 7
#define ISP_WAIT_2MHZ 6
#define ISP_WAIT_3MHZ 5
#define ISP_WAIT_6MHZ 4
#define ISP_WAIT_12MHZ 3
#define ISP_WAIT_20MHZ 2
#define ISP_WAIT_24MHZ 1
#define ISP_WAIT_30MHZ 0
#define ISP_Fosc MAIN_Fosc
#if (ISP_Fosc >= 24000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_30MHZ
#elif (ISP_Fosc >= 20000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_24MHZ
#elif (ISP_Fosc >= 12000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_20MHZ
#elif (ISP_Fosc >= 6000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_12MHZ
#elif (ISP_Fosc >= 3000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_6MHZ
#elif (ISP_Fosc >= 2000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_3MHZ
#elif (ISP_Fosc >= 1000000L)
#define ISP_WAIT_FREQUENCY ISP_WAIT_2MHZ
#else
#define ISP_WAIT_FREQUENCY ISP_WAIT_1MHZ
#endif
#define ISP_ENABLE() ISP_CONTR = (ISP_EN + ISP_WAIT_FREQUENCY)
#define ISP_DISABLE() ISP_CONTR = 0; ISP_CMD = 0; ISP_TRIG = 0; ISP_ADDRH = 0xff; ISP_ADDRL = 0xff
/*********************************************************************/
void DisableEEPROM(void) //以下语句可以不用,只是出于安全考虑而已
{
ISP_CONTR = 0; //禁止ISP/IAP操作
ISP_CMD = 0; //去除ISP/IAP命令
ISP_TRIG = 0; //防止ISP/IAP命令误触发
ISP_ADDRH = 0xff; //指向非EEPROM区,防止误操作
ISP_ADDRL = 0xff; //指向非EEPROM区,防止误操作
}
/******************** 读N个字节函数 最多255字节一次 *****************/
void EEPROM_read_n(uint EE_address,uchar *DataAddress,uchar lenth)
{
EA = 0; //禁止中断
ISP_ENABLE(); //宏调用, 设置等待时间,允许ISP/IAP操作,送一次就够
ISP_READ(); //宏调用, 送字节读命令,命令不需改变时,不需重新送命令
do
{
ISP_ADDRH = EE_address / 256; //送地址高字节(地址需要改变时才需重新送地址)
ISP_ADDRL = EE_address % 256; //送地址低字节
ISP_TRIG(); //宏调用, 先送5AH,再送A5H到ISP/IAP触发寄存器,每次都需要如此
_nop_();
*DataAddress = ISP_DATA; //读出的数据送往
EE_address++;
DataAddress++;
}while(--lenth);
DisableEEPROM();
EA = 1; //重新允许中断
}
/******************** 扇区擦除函数 *****************/
void EEPROM_SectorErase(uint EE_address)
{
EA = 0; //禁止中断
//只有扇区擦除,没有字节擦除,512字节/扇区。
//扇区中任意一个字节地址都是扇区地址。
ISP_ADDRH = EE_address / 256; //送扇区地址高字节(地址需要改变时才需重新送地址)
ISP_ADDRL = EE_address % 256; //送扇区地址低字节
ISP_ENABLE(); //设置等待时间,允许ISP/IAP操作,送一次就够
ISP_ERASE(); //宏调用, 送扇区擦除命令,命令不需改变时,不需重新送命令
ISP_TRIG(); //宏调用, 先送5AH,再送A5H到ISP/IAP触发寄存器,每次都需要如此
DisableEEPROM();
EA = 1; //重新允许中断
}
/******************** 写N个字节函数 最多255字节一次 *****************/
void EEPROM_write_n(uint EE_address,uchar *DataAddress,uchar lenth)
{
EA = 0; //禁止中断
ISP_ENABLE(); //设置等待时间,允许ISP/IAP操作,送一次就够
ISP_WRITE(); //宏调用, 送字节写命令,命令不需改变时,不需重新送命令
do
{
ISP_ADDRH = EE_address / 256; //送地址高字节(地址需要改变时才需重新送地址)
ISP_ADDRL = EE_address % 256; //送地址低字节
ISP_DATA = *DataAddress; //送数据到ISP_DATA,只有数据改变时才需重新送
ISP_TRIG(); //宏调用, 先送5AH,再送A5H到ISP/IAP触发寄存器,每次都需要如此
_nop_();
EE_address++; //下一个地址
DataAddress++; //下一个数据
}while(--lenth); //直到结束
DisableEEPROM();
EA = 1; //重新允许中断
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
STC12C5A60S2 STC12C5204AD STC12C5A系列单片机STC官方例程源代码30例合集.zip (263个子文件)
UART0_app.asm 5KB
UART0_app.Uv2.bak 2KB
UART0_app.opt.bak 1KB
STC11Fxxxx_EEPROM.c 7KB
STC12C5A60S2_EEPROM.c 7KB
STC-INT0-INT1.c 7KB
PWMn.c 6KB
STC12C5A60S2-PCA.c 5KB
PCA_Capture.c 5KB
主机_12C5A60S2-中断发送.c 5KB
UART0_app.c 5KB
STC12C5204AD-ADC-3chn.c 5KB
UART0_app.c 5KB
wakeup-demo.c 5KB
STC12C5A60S2-ADC.c 5KB
STC12C5A60S2-ADC.c 4KB
STC12C5A60S2-ADC.c 4KB
STC12C5A60S2-ADC.c 4KB
STC12C5204AD-ADC.c 4KB
PowerDownSave.c 4KB
PowerDownSave.c 4KB
wide.c 4KB
UART0_ID-Rosc.c 4KB
主机_12c5A60S2.c 4KB
从机_12C5A60S2.c 4KB
pwm.c 4KB
STC12C5A60S2-PCA.c 4KB
STC12C5A60S2-PCA.c 4KB
STC12C5A60S2_SPI.c 3KB
pwm.c 3KB
pwm.c 3KB
pwm.c 3KB
Timer0.c 3KB
PWMn_main.c 3KB
UART0_app.c 3KB
UART0_app.c 3KB
SoftTimer-A.c 3KB
WKT-wakeup.c 3KB
SoftTimer.c 3KB
BRT-PULSE.c 3KB
UART0_app.c 3KB
app_test_xdata.c 2KB
BRT-T0-T1-PULSE.c 2KB
push-pull-test.c 2KB
push-pull-test.c 2KB
P44-P45-P46.c 2KB
CLK0-CLK1.c 2KB
INT0_test.c 1KB
STC12C5A60S2.h 17KB
PCA.h 4KB
PCA.h 4KB
PCA.h 3KB
PWMn.h 2KB
config.h 2KB
config.h 2KB
UART0_app.hex 3KB
wide.hex 2KB
capture.hex 2KB
STC-INT0-INT1.hex 2KB
PowerDownSave.hex 2KB
PowerDownSave.hex 2KB
wakeUpTest.hex 1KB
STC12C5A60S2-ADC.hex 1KB
STC12C5A60S2-ADC.hex 1KB
STC12C5A60S2-ADC.hex 1KB
STC12C5A60S2-ADC.hex 1KB
STC12C5A60S2-ADC-12M-9600.hex 1KB
STC12C5204AD-ADC.hex 1KB
UART0_app.hex 1KB
STC12C5204AD-ADC.hex 1KB
PCA.hex 978B
UART0_app.hex 790B
主机.hex 772B
pwm.hex 691B
UART0_app.hex 608B
UART0_app.hex 545B
SoftTimer.hex 507B
从机.hex 489B
PCA.hex 472B
pwm.hex 464B
UART0_app.hex 449B
UART0_app.hex 449B
PCA.hex 410B
STC12C5A60S2_SPI.hex 392B
BRT-pulse.hex 382B
test_xdata.hex 286B
pwm.hex 281B
timer0.hex 277B
push-pull-output.hex 252B
BRT-pulse.hex 249B
WKT-wakeup.hex 242B
pwm.hex 237B
pwm.hex 235B
P44-P45-P46.hex 219B
clk0-clk1.hex 200B
INT0-tset.hex 174B
push-pull-output.hex 170B
pwm.lnp 102B
PowerDownSave.lnp 86B
PowerDownSave.lnp 84B
共 263 条
- 1
- 2
- 3
资源评论
SKCQTGZX
- 粉丝: 88
- 资源: 5818
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功