打印
[产品供应]

STC将推出15系列单片机(14.08.10收到最新STC15W4K32S4样片)

[复制链接]
楼主: autopccopy
手机看帖
扫描二维码
随时随地手机跟帖
141
一个很小的模块,硬币那么大,还要有按键,LED指示,输入信号,输出信号都是模拟的,最可恶的是24V供电,这么狭小的空间线性降压散热都搞得头晕。
实际做了500PCS。 ...
sszxxm 发表于 2010-12-24 09:42

输入输出都是模拟信号?这个系列不是没带ad和da的嘛?

使用特权

评论回复
142
yanwuxu| | 2010-12-29 09:29 | 只看该作者
10V电压超一倍了,很可能过流就烧了。

这个版本还没完善,据说外部中断有问题, 另唯一ID也还没做进去。以后会修正。但我申请样片时宏晶都有详细询问有否用到外部中断的问题,如无影响才供货的。

btw:15F烧写文件在 ...
autopccopy 发表于 2010-12-26 23:06

我也看他们一直升级,就是不知道改了些什么东西^_^

使用特权

评论回复
143
gmgmgm| | 2010-12-29 14:04 | 只看该作者
STC单片机通病,真是烦死人,TMD一直没解决
使用STC12C5A32S2内部EEPORM时数据经常性的丢失,丢失后读出数据为FF,使用内部复位和使用外部低压复位(接上复位IC一样丢失),如果对机子反复通断电操作,内部EEPORM保存的数据就很被容易变为FF(不是每次都会丢失),用在好几款板上,供电电源都不一样,同样会出现这样的现象,尝试过用电脑串口不停发送数据时突然断电操作更容易丢失数据,基本上内部EEPORM保存的数据每次断电后再通电后读出都会变为FF ,不知道大家有没有碰到这样的问题 。烦死人  ~~~:Q 用过STC12C5201其它几种型号,一样出现这种情况,不得不再外面挂个24C02使用

使用特权

评论回复
144
autopccopy|  楼主 | 2010-12-29 18:40 | 只看该作者
楼上的问题我没遇到过,0xff是刷除了,是只读(非写入)?电压稳定吗?好像另一个坛说要该系列要足4V才稳定(非DS说的3.Xv).  如果这么频繁出现应该是不正常的,要另加24C02就汗了。5A32S2我有空试试。。。换片芯片和加强电源稳定性入手。:dizzy:

使用特权

评论回复
145
autopccopy|  楼主 | 2011-1-1 11:43 | 只看该作者
又逛回到这里,祝各位坛友、电工新年快乐,开心赚钱,身体健康!!!:) YEAH!!! :)

使用特权

评论回复
146
autopccopy|  楼主 | 2011-1-9 11:55 | 只看该作者
本帖最后由 autopccopy 于 2011-1-9 12:15 编辑

转载:宏晶STC15系列掉电唤醒补丁程序 http://www.****ducst/datasheet/ ... C15xx系列掉电唤醒补丁程序.rar

厂家README:

注意:对于15系列A版的芯片,当需要使用外部中断源来进行掉电唤醒时,需要参考程序包中的代码,
对于将在2011年3月份左右送样的B版芯片,外部中断则任意使用
如果您的程序中只使用了INT0~INT4中的某个中断来作为掉电唤醒源,可参考相应的“掉电唤醒(INTx)”程序包 如果您的程序中使用了INT0~INT4中的多个中断来作为掉电唤醒源,请参考“掉电唤醒(ALL)”,此时需要注意的是:在任一个中断服务程序中,除了需要清除和关闭本中断源外,还需要清除和关闭其他所有的外部中断

===============================================================

掉电唤醒(ALL) WAKEUP.C (有ASM版,及另有掉电唤醒(INT0-INT3)的程序,在上述链接的压缩包内)

/*---------------------------------------------------------------------------*/
/* --- STC MCU International Limited ---------------------------------*/
/* --- STC15xx Series MCU Power-Down wakeup by INTx Demo -*/
/* --- Mobile: (86)13922805190 -------------------------------------*/
/* --- Fax: 86-755-82944243 ----------------------------------------*/
/* --- Tel: 86-755-82948412 ----------------------------------------*/
/* --- Web: www.**.com --------------------------------------*/
/* If you want to use the program or the program referenced in the  */
/* article, please specify in which data and procedures from STC        */
/*--------------------------------------------------------------------*/


#include "reg51.h"
#include "intrins.h"
sfr INT_CLKO = 0x8F;                //- EX4 EX3 EX2 - - T1CLKO T0CLKO
sbit INT2 = P3^6;
sbit INT3 = P3^7;
sbit INT4 = P3^0;

//External interrupt0 service routine
void exint0() interrupt 0           //interrupt 0 (location at 0003H)
{
    EX0 = 0;                        //disable INT0 interrupt
    EX1 = 0;                        //disable INT1 interrupt
    INT_CLKO &= ~0x70;              //(EX2 = EX3 = EX4 = 0)disable INT2 & INT3 & INT4 interrupt and clear INT2 & INT3 & INT4 flag
    P0++;
    IE0 = 0;                        //clear INT0 flag
    IE1 = 0;                        //clear INT1 flag
    INT_CLKO &= ~0x70;              //(EX2 = EX3 = EX4 = 0)disable INT2 & INT3 & INT4 interrupt and clear INT2 & INT3 & INT4 flag
}
//External interrupt1 service routine
void exint1() interrupt 2           //INT1 interrupt (location at 0013H)
{
    EX0 = 0;                        //disable INT0 interrupt
    EX1 = 0;                        //disable INT1 interrupt
    INT_CLKO &= ~0x70;              //(EX2 = EX3 = EX4 = 0)disable INT2 & INT3 & INT4 interrupt and clear INT2 & INT3 & INT4 flag
    P0++;
    IE0 = 0;                        //clear INT0 flag
    IE1 = 0;                        //clear INT1 flag
    INT_CLKO &= ~0x70;              //(EX2 = EX3 = EX4 = 0)disable INT2 & INT3 & INT4 interrupt and clear INT2 & INT3 & INT4 flag
}
//External interrupt2 service routine
void exint2() interrupt 10          //INT2 interrupt (location at 0053H)
{
    EX0 = 0;                        //disable INT0 interrupt
    EX1 = 0;                        //disable INT1 interrupt
    INT_CLKO &= ~0x70;              //(EX2 = EX3 = EX4 = 0)disable INT2 & INT3 & INT4 interrupt and clear INT2 & INT3 & INT4 flag
    P0++;
    IE0 = 0;                        //clear INT0 flag
    IE1 = 0;                        //clear INT1 flag
    INT_CLKO &= ~0x70;              //(EX2 = EX3 = EX4 = 0)disable INT2 & INT3 & INT4 interrupt and clear INT2 & INT3 & INT4 flag
}
//External interrupt3 service routine
void exint3() interrupt 11          //INT3 interrupt (location at 005BH)
{
    EX0 = 0;                        //disable INT0 interrupt
    EX1 = 0;                        //disable INT1 interrupt
    INT_CLKO &= ~0x70;              //(EX2 = EX3 = EX4 = 0)disable INT2 & INT3 & INT4 interrupt and clear INT2 & INT3 & INT4 flag
    P0++;
    IE0 = 0;                        //clear INT0 flag
    IE1 = 0;                        //clear INT1 flag
    INT_CLKO &= ~0x70;              //(EX2 = EX3 = EX4 = 0)disable INT2 & INT3 & INT4 interrupt and clear INT2 & INT3 & INT4 flag
}
//External interrupt4 service routine
void exint4() interrupt 16          //INT4 interrupt (location at 0083H)
{
    EX0 = 0;                        //disable INT0 interrupt
    EX1 = 0;                        //disable INT1 interrupt
    INT_CLKO &= ~0x70;              //(EX2 = EX3 = EX4 = 0)disable INT2 & INT3 & INT4 interrupt and clear INT2 & INT3 & INT4 flag
    P0++;
    IE0 = 0;                        //clear INT0 flag
    IE1 = 0;                        //clear INT1 flag
    INT_CLKO &= ~0x70;              //(EX2 = EX3 = EX4 = 0)disable INT2 & INT3 & INT4 interrupt and clear INT2 & INT3 & INT4 flag
}
void main()
{
    EA = 1;                         //open global interrupt switch
    while (1)
    {
        INT0 = 1;                   //ready read INT0 port
        INT1 = 1;                   //ready read INT1 port
        INT2 = 1;                   //ready read INT2 port
        INT3 = 1;                   //ready read INT3 port
        INT4 = 1;                   //ready read INT4 port
        while (!INT0);              //check INT0
        while (!INT1);              //check INT1
        while (!INT2);              //check INT2
        while (!INT3);              //check INT3
        while (!INT4);              //check INT4
        _nop_();
        _nop_();
        EA = 0;
        IT0 = 1;                    //set INT0 int type (1:Falling only 0:Rising & Falling)
        IT1 = 1;                    //set INT1 int type (1:Falling only 0:Rising & Falling)
        IE0 = 0;                    //clear INT0 flag
        IE1 = 0;                    //clear INT1 flag
        INT_CLKO &= ~0x10;          //(EX2 = 0)disable INT2 interrupt and clear INT2 flag
        INT_CLKO &= ~0x20;          //(EX3 = 0)disable INT3 interrupt and clear INT3 flag
        INT_CLKO &= ~0x40;          //(EX4 = 0)disable INT4 interrupt and clear INT4 flag
        IE |= 0x05;                 //(EX0 = EX1 = 1)enable INT0 & INT1 interrupt
        INT_CLKO |= 0x70;           //(EX2 = EX3 = EX4 = 1)enable INT2 & INT3 & INT4 interrupt
        EA = 1;
        PCON = 0x02;                //MCU power down
        _nop_();
        _nop_();
        P2++;
    }
}

STC15xx系列掉电唤醒补丁程序.rar

96.43 KB

使用特权

评论回复
147
autopccopy|  楼主 | 2011-1-9 12:02 | 只看该作者
本帖最后由 autopccopy 于 2011-1-9 12:09 编辑

转载【STC15系列只用一个定时器的红外接收程序】
红外接收输入可以定义在任何IO。
串口使用9600,N,8,1来监控。
主频适应5~36MHZ。

/*------------------------------------------------------------------*/
/* --- STC MCU International Limited -------------------------------*/
/* --- STC 1T Series MCU RC Demo -----------------------------------*/
/* --- Mobile: (86)13922805190 -------------------------------------*/
/* --- Fax: 86-755-82944243 ----------------------------------------*/
/* --- Tel: 86-755-82948412 ----------------------------------------*/
/* --- Web: www.**.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the  */
/* article, please specify in which data and procedures from STC    */
/*------------------------------------------------------------------*/


/************* 功能说明 **************

红外接收程序。适用于市场上用量最大的HT6121/6122及其兼容IC的编码。

对于用户码与User_code定义不同的遥控器,程序会将用户码一起从串口输出。

使用模拟串口发送监控显示编码,显示内容为ASCII码和中文。

本接收程序基于状态机的方式,占用CPU的时间非常少。

HEX文件在本目录的/list里面。

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


/************* 用户系统配置 **************/

#define MAIN_Fosc  12000000L //定义主时钟, 模拟串口和红外接收会自动适应。5~36MHZ

#define D_TIMER0  125   //选择定时器时间, us, 红外接收要求在60us~250us之间

#define User_code  0xFD02  //定义红外接收用户码


/************* 以下宏定义用户请勿修改 **************/
#include "reg51.H"
#define uchar unsigned char
#define uint unsigned int

#define freq_base   (MAIN_Fosc / 1200)
#define Timer0_Reload  (65536 - (D_TIMER0 * freq_base / 10000))



/************* 本地常量声明 **************/


/************* 本地变量声明 **************/
sbit P_TXD1 = P3^1;  //定义模拟串口发送脚,打印信息用
sbit P_IR_RX = P0^1;  //定义红外接收输入端口

bit  P_IR_RX_temp;  //Last sample
bit  B_IR_Sync;   //已收到同步标志
uchar IR_SampleCnt;  //采样计数
uchar IR_BitCnt;   //编码位数
uchar IR_UserH;   //用户码(地址)高字节
uchar IR_UserL;   //用户码(地址)低字节
uchar IR_data;   //数据原码
uchar IR_DataShit;  //数据反码

bit  B_IrUserErr;  //User code error flag
bit  B_IR_Press;   //Key press flag,include repeat key.
uchar IR_code;   //IR code 红外键码


/************* 本地函数声明 **************/
void Tx1Send(uchar dat);
uchar HEX2ASCII(uchar dat);
void InitTimer(void);
void PrintString(unsigned char code *puts);


/*************  外部函数和变量声明 *****************/


/********************* 主函数 *************************/
void main(void)
{
InitTimer();  //初始化Timer

PrintString("****** STC系列MCU红外接收程序 2010-12-10 ******\r\n"); //上电后串口发送一条提示信息

while(1)
{
  if(B_IR_Press)  //有IR键按下
  {
   PrintString("红外码: 0x");   //提示红外键码
   Tx1Send(HEX2ASCII(IR_code >> 4)); //键码高半字节
   Tx1Send(HEX2ASCII(IR_code));  //键码低半字节
   if(B_IrUserErr)      //用户码错误,则发送用户码
   {
    Tx1Send(' ');     //发空格
    Tx1Send(' ');     //发空格
    PrintString("用户码: 0x");  //提示用户码
    Tx1Send(HEX2ASCII(IR_UserH >> 4)); //用户码高字节的高半字节
    Tx1Send(HEX2ASCII(IR_UserH));  //用户码高字节的低半字节
    Tx1Send(HEX2ASCII(IR_UserL >> 4)); //用户码低字节的高半字节
    Tx1Send(HEX2ASCII(IR_UserL));  //用户码低字节的低半字节
   }
   Tx1Send(0x0d);  //发回车
   Tx1Send(0x0a);  //发回车
   B_IR_Press = 0;  //清除IR键按下标志
  }
}
}


/********************* 十六进制转ASCII函数 *************************/
uchar HEX2ASCII(uchar dat)
{
dat &= 0x0f;
if(dat <= 9) return (dat + '0'); //数字0~9
return (dat - 10 + 'A');   //字母A~F
}



//*******************************************************************
//*********************** IR Remote Module **************************

//*********************** IR Remote Module **************************
//this programme is used for Receive IR Remote (HT6121).

//data format: Synchro,AddressH,AddressL,data,/data, (total 32 bit).

//send a frame(85ms), pause 23ms, send synchro of another frame, pause 94ms

//data rate: 108ms/Frame


//Synchro:low=9ms,high=4.5/2.25ms,low=0.5626ms
//Bit0:high=0.5626ms,low=0.5626ms
//Bit1:high=1.6879ms,low=0.5626ms
//frame space = 23 ms or 96 ms

/******************** 红外采样时间宏定义, 用户不要随意修改 *******************/

#if ((D_TIMER0 <= 250) && (D_TIMER0 >= 60))
#define D_IR_sample   D_TIMER0  //定义采样时间,在60us~250us之间
#endif

#define D_IR_SYNC_MAX  (15000/D_IR_sample) //SYNC max time
#define D_IR_SYNC_MIN  (9700 /D_IR_sample) //SYNC min time
#define D_IR_SYNC_DIVIDE (12375/D_IR_sample) //decide data 0 or 1
#define D_IR_DATA_MAX  (3000 /D_IR_sample) //data max time
#define D_IR_DATA_MIN  (600  /D_IR_sample) //data min time
#define D_IR_DATA_DIVIDE (1687 /D_IR_sample) //decide data 0 or 1
#define D_IR_BIT_NUMBER  32     //bit number

//*******************************************************************************************
//**************************** IR RECEIVE MODULE ********************************************

void IR_RX_HT6121(void)
{
uchar SampleTime;

IR_SampleCnt++;       //Sample + 1

F0 = P_IR_RX_temp;      //Save Last sample status
P_IR_RX_temp = P_IR_RX;     //Read current status
if(F0 && !P_IR_RX_temp)     //Last sample is high,and current sample is low, so is fall edge
{
  SampleTime = IR_SampleCnt;   //get the sample time
  IR_SampleCnt = 0;     //Clear the sample counter

    if(SampleTime > D_IR_SYNC_MAX)  B_IR_Sync = 0; //large the Maxim SYNC time, then error
  else if(SampleTime >= D_IR_SYNC_MIN)     //SYNC
  {
   if(SampleTime >= D_IR_SYNC_DIVIDE)
   {
    B_IR_Sync = 1;     //has received SYNC
    IR_BitCnt = D_IR_BIT_NUMBER; //Load bit number
   }
  }
  else if(B_IR_Sync)      //has received SYNC
  {
   if(SampleTime > D_IR_DATA_MAX)  B_IR_Sync=0; //data samlpe time to large
   else
   {
    IR_DataShit >>= 1;     //data shift right 1 bit
    if(SampleTime >= D_IR_DATA_DIVIDE) IR_DataShit |= 0x80; //devide data 0 or 1
    if(--IR_BitCnt == 0)    //bit number is over?
    {
     B_IR_Sync = 0;     //Clear SYNC
     if(~IR_DataShit == IR_data)  //判断数据正反码
     {
      if((IR_UserH == (User_code / 256)) &&
       IR_UserL == (User_code % 256))
        B_IrUserErr = 0; //User code is righe
      else B_IrUserErr = 1; //user code is wrong
      
      IR_code      = IR_data;
      B_IR_Press   = 1;   //数据有效
     }
    }
    else if((IR_BitCnt & 7)== 0)  //one byte receive
    {
     IR_UserL = IR_UserH;   //Save the User code high byte
     IR_UserH = IR_data;    //Save the User code low byte
     IR_data  = IR_DataShit;   //Save the IR data byte
    }
   }
  }
}
}


/**************** Timer初始化函数 ******************************/
void InitTimer(void)
{
TMOD = 0;  //for STC15Fxxx系列 Timer0 as 16bit reload timer.
TH0 = Timer0_Reload / 256;
TL0 = Timer0_Reload % 256;
ET0 = 1;
TR0 = 1;

EA  = 1;
}


/********************** Timer0中断函数************************/
void timer0 (void) interrupt 1
{
IR_RX_HT6121();
}


/********************** 模拟串口相关函数************************/

void BitTime(void) //位时间函数
{
uint i;
i = ((MAIN_Fosc / 100) * 104) / 140000 - 1;  //根据主时钟来计算位时间
while(--i);
}

//模拟串口发送
void Tx1Send(uchar dat)  //9600,N,8,1  发送一个字节
{
uchar i;
EA = 0;
P_TXD1 = 0;
BitTime();
for(i=0; i<8; i++)
{
  if(dat & 1)  P_TXD1 = 1;
  else   P_TXD1 = 0;
  dat >>= 1;
  BitTime();
}
P_TXD1 = 1;
EA = 1;
BitTime();
BitTime();
}

void PrintString(unsigned char code *puts)  //发送一串字符串
{
    for (; *puts != 0; puts++)  Tx1Send(*puts);  //遇到停止符0结束
}



(转载,希望对大家有用。。。):handshake

STC15系列只用一个定时器的红外接收程序.rar

9.51 KB

使用特权

评论回复
148
autopccopy|  楼主 | 2011-1-9 12:22 | 只看该作者
杜洋兄搞了个【ASP5模块是杜洋工作室研发的STC单片机辅助下载工具】,可以一键即可完成下载(不用手工冷启动,也不用自定义ISP增加代码,全自动了。) 从图片看好像是用STC15F104E系列在监控STCISP软件的启动串口流来启动的,可能使用了MOS管做电子开关。 http://www.doyoung.net/works/ASP5/index.html

=================================转载=================================
ASP5自动冷启模块
众所周知,STC单片机在下载程序时需要先点击下载按钮,然后拨下电源线再插上,使单片机冷启动一次才可以进行下载。但不断地拨插电源线多有不便,即使安装开关,也需要频繁的开关。对于进行单片机编程调试的用户来说很不方便。

ASP5可以系统状态,当然用户按下STC-ISP软件的下载按键后,ASP5会自动冷启动单片机并监控单片机的下载状态,直至下载完成。 使用ASP5模块,只需一键即可完成下载。
-----------------------------------------------------------------------
【使用方法】
只要将ASP5模块插入本店出售的USB下载模块的尾端,再将单片机下载线插在ASP5的输出排针上即可。 指示灯说明: (ASP5仅一个指示灯) 常亮——ASP5处于等待状态,单片机上电。 慢闪——ASP5未发现单片机或单片机端电路有问题。 快闪——正在下载,数据流显示。

-----------------------------------------------------------------------
【注意事项】
# 使用ASP5模块时,单片机端电流不得超过1A。 # 请与杜洋工作室出售的USB下载模块配合使用。
-----------------------------------------------------------------------

:D

duyang_doyoung_ASP5.jpg (67.48 KB )

duyang_doyoung_ASP5.jpg

duyang_doyoung_ASP5a.jpg (27.38 KB )

duyang_doyoung_ASP5a.jpg

使用特权

评论回复
149
sz_n053| | 2011-1-9 12:28 | 只看该作者
" 对于将在2011年3月份左右送样的B版芯片....." 看来还不适合用于量产啊.
姚老板总是这样的, 太轻率了, 还没好的东西就不应让我们当白老鼠, 我们厂家
不是你那句" 你坏一颗, 我赔你一颗就是了的做法 ""...严重BS

使用特权

评论回复
150
autopccopy|  楼主 | 2011-1-9 15:40 | 只看该作者
" 对于将在2011年3月份左右送样的B版芯片....." 看来还不适合用于量产啊.
姚老板总是这样的, 太轻率了, 还没好的东西就不应让我们当白老鼠, 我们厂家
不是你那句" 你坏一颗, 我赔你一颗就是了的做法 ""...严重BS ...
sz_n053 发表于 2011-1-9 12:28


我和我朋友在购买前STC的销售MM都有提示,如用到这个功能,建议等待,如不介意才出货的。如果无提示就是JS!!!!!:P

使用特权

评论回复
151
sszxxm| | 2011-1-12 08:51 | 只看该作者
楼上说的没错,我也是,这次买的500片,销售MM也有类似提示在先。这个不能怪人家的。
此次一共500片,测试板子496片,坏了3片(1片是自己搞坏的,2片是死活烧不进程序,调整频率,擦除都完成了,烧写进程3格之后报错),还有一片未上岗,呵呵。
其实如果用新茂新出的一款,差不多体积,TMMSOP10,还带串口呢,不过内部RC精度就差远了。

使用特权

评论回复
152
yanwuxu| | 2011-1-12 08:58 | 只看该作者
151# sz_n053

别人不都提示你了还有什么好BS的

使用特权

评论回复
153
sz_n053| | 2011-1-12 22:19 | 只看该作者
每一次样片中总一定概率的无法烧录, 打电话给MM , 就回我一句拿来换啊, 那天若真是批量了, 要我们厂家如何保证产品质量?

使用特权

评论回复
154
pa2792| | 2011-1-12 23:03 | 只看该作者
我们用的量也不多,但现在烧写了10万片左右,生产部没有反应说STC芯片存在问题。

使用特权

评论回复
155
autopccopy|  楼主 | 2011-1-17 23:40 | 只看该作者
本帖最后由 autopccopy 于 2011-1-17 23:43 编辑

今天从杜洋兄买来的ASP5到手 :)

虽然单片机正面的字被打磨了,但以他的风格应该是用STC15F104E(其实8脚单片机没多少的):) ,后面俩有贴片三极管:2TY(即2SC8550)做开关管。

http://www.doyoung.net/works/ASP5/index.html
(介绍上“ 使用ASP5模块时,单片机端电流不得超过1A”, 但贴片S8550的Ice好像只有500mA啊)

需与他的USB转TTL模块配套使用,否则可能有兼容问题。反正我也没打算用,只是好奇,呵呵。。。

他的RT3的LCD驱动还是挺COOL的,我也希望日后我的**能上《无线电》 :)
http://www.doyoung.net/articles/RT3/index.html

DSC02415.JPG (120.55 KB )

杜洋兄买来的ASP5到手 :)

杜洋兄买来的ASP5到手 :)

DSC02420.JPG (125.77 KB )

还有他在2011《无线电》介绍的RT3温度计用的3位静态LCD片

还有他在2011《无线电》介绍的RT3温度计用的3位静态LCD片

DSC02417.JPG (107.72 KB )

单片机正面的字被打磨了,但以他的风格应该是STC15F104E,后面有俩贴片三极管:2TY(2SC8550)做开关管 ... ...

单片机正面的字被打磨了,但以他的风格应该是STC15F104E,后面有俩贴片三极管:2TY(2SC8550)做开关管 ... ...

RT3_P_04.jpg (81.34 KB )

RT3电路图

RT3电路图

RT3_P_09.jpg (99.39 KB )

RT3成品

RT3成品

使用特权

评论回复
156
yanwuxu| | 2011-1-21 08:36 | 只看该作者
今天从杜洋兄买来的ASP5到手 :)

虽然单片机正面的字被打磨了,但以他的风格应该是用STC15F104E(其实8脚单片机没多少的):) ,后面俩有贴片三极管:2TY(即2SC8550)做开关管。

http://www.doyoung.net/works/ASP5/in ...
autopccopy 发表于 2011-1-17 23:40


杜洋也打磨,哈哈哈哈

使用特权

评论回复
157
autopccopy|  楼主 | 2011-2-16 00:05 | 只看该作者
本帖最后由 autopccopy 于 2011-2-16 09:13 编辑

刚在本坛与坛友探讨STC唯一ID的加密时(见该贴:《不明白为何最新的STC11F会被**》 https://bbs.21ic.com/icview-95956-1-1.html ),顺便去了宏晶的论坛,下载后发现不少数据表已更新。目前最新的版本是11.02.12版(就是3天前的)。呵呵。

主要更新了唯一ID的问题,请见:



【1.10.每个单片机具有全球唯一身份*号码(ID号)
宏晶科技最新一代STC11/10xx系列每一个单片机出厂时都具有全球唯一身份*号码(ID号),用户可以在单片机上电后读取内部RAM单元从F1H-F7H 连续7个单元的值来获取此单片机的唯一身份*号码(ID号), 使用“MOV @Ri”指令来读取。如果用户需要用全球唯一ID号进行用户自己的软件加密,建议用户在程序的多个地方有技巧地判断自己的用户程序有无被非法修改,提高解密的难度,防止解密者修改程序,绕过对全球唯一ID号的判断。

      除内部RAM的F1H ~ F7H单元的内容为全球唯一ID号外,最新的STC15系列的程序存储器的最后7个字节单元的值也是全球唯一ID号,用户不可修改,但IAP15系列整个程序区是开放的,可以修改,建议利用全球唯一ID号加密时,使用STC15系列,并将EEPROM功能使用上,从 EEPROM起始地址0000H开始使用,有效杜绝对全球唯一ID号的攻击。使用程序区的最后7个字节的全球唯一ID号比使用RAM单元 F1H - F7H 的全球唯一ID号进行比较更难被攻击。】

不过据悉15F目前的试用版本是没有唯一ID的,好像要11年04月后的新版才有(对11F,12F没影响)。:lol

BTW:
读内部R/C时钟及ID号C语言参考程序:
http://www.****ducst/datasheet/stc/STC-NEW-SOURCE-CODE/read-rc-clock.c
读内部ID号工具组:
http://www.****ducst/datasheet/stc/STC-USER-CODE/读取芯片ID-2010-8-24.exe

(6761)

使用特权

评论回复
158
autopccopy|  楼主 | 2011-2-23 14:01 | 只看该作者
今天新下载了数据表,发现将有个新型号要推出:STC15F828EACS,但没看出有什么大的改进。

使用特权

评论回复
159
autopccopy|  楼主 | 2011-2-27 00:11 | 只看该作者
本帖最后由 autopccopy 于 2011-2-27 00:13 编辑

真的OUT了。从数码之家的帖子才知道STCISP升级到了V4.88(bata), 最大的特点是内置支持STC15F系列芯片的烧录,不用以前的15F临时文件了。

下载地址:http://www.****ducst/datasheet/stc/STC-ISP-V4.88/STC-ISP-V4.88-NOT-SETUP-CHINESE.EXE (大小3.20M)

(btw:数据表升级为110221版)

(查看:7016)

STCISP_V488.JPG (137.53 KB )

V4.88, 支持15F!

V4.88, 支持15F!

使用特权

评论回复
160
zhufdf| | 2011-3-3 20:39 | 只看该作者
谁有15F的头文件啊!传一个上来分享一下呢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则