⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stc 功能测试程序演示.txt

📁 STC12C5410AD 系列和STC12C2052AD 系列单片机EEPROM/IAP 功能测试程序演示 本演示程序在STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过,EEPRO
💻 TXT
字号:
/***************************************************************
STC12C5410AD 系列和STC12C2052AD 系列单片机EEPROM/IAP 功能测试程序演示
本演示程序在STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过,EEPROM 的数据在P1口上显示
本程序根据宏晶科技提供的演示程序改编,是本人学习C51的学习笔记,供有需要的同仁参考
不正确的地方,欢迎指正
***************************************************************/
#include <stc2052.h>
#define uchar unsigned char
#define uint unsigned int

uchar DEBUG_DATA=0x5a;        //待编程的数据
uint FLASH_ADDRESS=0x1000;    //STC12C2052 EEPROM 测试起始地址
    
void Do_IAP()                    //IAP操作
{    ISP_CONTR=0x82;            //打开 IAP 功能, 设置 Flash 操作等待时间
    ISP_ADDRH=FLASH_ADDRESS/0x100;    //起始地址
    ISP_ADDRL=FLASH_ADDRESS%0x100;    
    ISP_TRIG=0x46;            //先送46h,再送B9h 到ISP/IAP 触发寄存器
    ISP_TRIG=0xb9;            //送完B9h 后,ISP/IAP 命令立即被触发起动
    ISP_CONTR=0;            //关闭 IAP 功能
    ISP_CMD=0;                //清命令寄存器,使命令寄存器无命令,此句可不用
    ISP_TRIG=0;                //清命令触发寄存器,使命令触发寄存器无触发,此
句可不用
}

//读一字节
void Byte_Read()
{    ISP_CMD=0x1;            //设置为IAP/ISP/EEPROM 字节读模式命令
    Do_IAP();                //IAP操作
}

//字节编程
void Byte_Program()
{    ISP_CMD=0x02;            //设置为IAP/ISP/EEPROM 字节编程模式命令
    ISP_DATA=DEBUG_DATA;    //待编程的数据先送进ISP_DATA 寄存器
    Do_IAP();                //IAP操作
}

//擦除扇区
void Sector_Erase()
{    ISP_CMD=0x03;            //设置为IAP/ISP/EEPROM 扇区擦除模式命令
    Do_IAP();                //IAP操作
}

void Delay_ms(uint delay)    //带参数延时(delay=10,大约10ms,24MHz,1CLK)
{    uint i;
    for (; delay>0; delay--)
        for (i=0;i<250;i++);    
}

void main()
{    P1=0xf0;                        //演示程序开始工作,让
P1.0/P1.1/P1.2/P1.3 控制的灯亮
    Delay_ms(1000);            //延时1s
    P1=0x0f;                        //演示程序开始工作,让
P1.7/P1.6/P1.5/P1.4 控制的灯亮
    Delay_ms(1000);            //延时1s
    
    do{Byte_Read();            //读一字节
        if(ISP_DATA==DEBUG_DATA)
        {    P1=0x7f;                //亮对的指示灯
            Delay_ms(3000);    //延时3s
            while(1)
            P1=~ISP_DATA;        //显示信息
        }
        P1=0xfe;                    //亮错误指示灯
        Delay_ms(3000);        //延时3s
        P1=~ISP_DATA;            //显示信息
        Delay_ms(3000);        //延时3s
        Sector_Erase();        //扇区擦除
        Byte_Program();        //字节编程
    }
    while(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -