A. 单片机ID错误
一、每个单片机厂家给自己的每款单片机型号都会给定一个
ID
号,一般为四个字节;
二、单片机的
ID
号实际上是单片机的型号的内码,如
AT89C51、AT89S51,它们的
ID
号不同;
三、烧写单片机程序时,一般先会校验
CPU
的
ID
号,如果
ID
号不对,将会提示
ID
号出错,也即单片机的型号与你选择的型号不一致,这时就需要仔细查看芯片的型号与你选择烧写的型号是否一致
B. 单片机id号在哪里存放
什么型号的单片机 不同型号的不同
C. 如何获取单片机ID号
很多单片机都没有唯一ID号,有的那些单片机都有固定的寄存器存放,看看datasheet就找到了。
D. 如何读取STC单片机的ID号码
这个是通过串口读出ID号
//读内部R/C时钟及ID号C语言参考程序
#include<reg51.h>
#include<intrins.h>
sfr IAP_CONTR = 0xC7;
sbit MCU_Start_Led = P1^7;
//unsigned char self_command_array[4] = {0x22,0x33,0x44,0x55};
#define Self_Define_ISP_Download_Command 0x22
#define RELOAD_COUNT 0xfb //18.432MHz,12T,SMOD=0,9600bps
void serial_port_initial();
void send_UART(unsigned char);
void UART_Interrupt_Receive(void);
void soft_reset_to_ISP_Monitor(void);
void delay(void);
void display_MCU_Start_Led(void);
void main(void)
{
unsigned char i = 0;
unsigned char j = 0;
unsigned char idata *idata_point;
serial_port_initial(); //串口初始化
// display_MCU_Start_Led(); //点亮发光二极管表示单片机开始工作
// send_UART(0x34); //串口发送数据表示单片机串口正常工作
// send_UART(0xa7); //串口发送数据表示单片机串口正常工作
idata_point = 0xF1;
for(j=0;j<15;j++)
{
i = *idata_point;
send_UART(i);
idata_point++;
}
while(1);
}
void serial_port_initial()
{
SCON = 0x50; //0101,0000 8位可变波特率,无奇偶校验位
TMOD = 0x21; //0011,0001 设置顶时器1为8位自动重装计数器
TH1 = RELOAD_COUNT; //设置定时器1自动重装数
TL1 = RELOAD_COUNT;
TR1 = 1; //开定时器1
ES = 1; //允许串口中断
EA = 1; //开总中断
}
void send_UART(unsigned char i)
{
ES = 0; //关串口中断
TI = 0; //清零串口发送完成中断请求标志
SBUF = i;
while(TI ==0); //等待发送完成
TI = 0; //清零串口发送完成中断请求标志
ES = 1; //允许串口中断
}
void UART_Interrupt_Receive(void) interrupt 4
{
unsigned char k = 0;
if(RI==1)
{
RI = 0;
k = SBUF;
if(k==Self_Define_ISP_Download_Command) //是自定义下载命令
{
delay(); //延时1秒就足够了
delay(); //延时1秒就足够了
soft_reset_to_ISP_Monitor(); //软复位到系统ISP监控区
}
send_UART(k);
}
else
{
TI = 0;
}
}
void soft_reset_to_ISP_Monitor(void)
{
IAP_CONTR = 0x60; //0110,0000 软复位到系统ISP监控区
}
void delay(void)
{
unsigned int j = 0;
unsigned int g = 0;
for(j=0;j<5;j++)
{
for(g=0;g<60000;g++)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
void display_MCU_Start_Led(void)
{
unsigned char i = 0;
for(i=0;i<3;i++)
{
MCU_Start_Led = 0; //顶亮MCU开始工作指示灯
delay();
MCU_Start_Led = 1; //熄灭MCU开始工作指示灯
delay();
MCU_Start_Led = 0; //顶亮MCU开始工作指示灯
}
}
E. 每个单片机的器件ID是不是都不同
单片机本身不需要什么ID
F. 单片机带id是什么意思呢
是不是芯片识别字啊?根据ATMEL的数据手册,在存储器编程这一节里,
All Atmel microcontrollers have a three-byte signature code which identifies the device.
中文资料里这样翻译:所有的 Atmel 微控制器都具有一个三字节的标识代码用来区分器件型号。
FLASH编程时必须用的
G. 单片机中StdId是什么意思
是stdio,不是stdid。C语言标准输入输出库。程序里用到printf和scanf函数的话就要include上stdio
H. 有哪些单片机具有唯一的ID号
ST的单片机大多都有唯一的ID
8位单片机,比如STM8S103F3、STM8S105C6
32位单片机,比如STM32F103C8、STM32F103RC
对于ST单片机的唯一ID,是96位,对于某些应用来说太长了,ST的下载程序软件或者淘宝上卖离线下载器的都有“滚码”这个功能,其实就是下载程序的时候给每个单片机的flash写入一个不同的数,这个数的字节数可以根据需要设定,这样可以得到符合我们要求的唯一ID。
I. stc的单片机怎么用id号来加密
STC读内部ID号工具组(自解压文件:103K), 原文件是一个自解压文件,这里改为RAR,只有5K,也帮你贴到这里来了。(注意:该工具组好像只能使用在有物理串口的单片机使用。例如STC15F系列因串口需IO模拟,应该是运行后无效的)
解开后有一个EXE文件和一个HEX文件。将HEX文件 ISP写入单片机,运行ShowID.exe, 设置好串口号,波特率随便设,例如9600,按【读取信息】键即可读取ID等信息。
(该工具组主要是方便检验唯一ID的,实际应用请看官方数据表里有C语言的范例。图中为一块STC12C5A08S2为例,请看其显示的结果与使用编程读取以上15位数据通过串口发送,用最新的程序匠人的“串口猎人”V26接收显示是一样的!:) )
不同的芯片的ID都是唯一的,上图是两个不同批次的STC12C5410AD的ID。该ID使用7位字符,可以描述的总数为: 256^7=72,057,594,037,927,936个(天文数字)!应该不会重复了吧。。呵呵。。。
J. 我们使用的STC 51单片机是不是都有一个全世界唯一的ID号
我们使用的STC 51单片机是不是都有一个全世界唯一的ID号?
不是全系列都有,早期产品就没有。
是不是将ID与HEX程序进行捆绑就可以实现程序无法被拷贝复制?
道高一次魔高一丈,保护能力有限。
是不是可以起到一个开发知识产权保护?
那就是一个记号,高手分分钟就抹掉。
但是我现在使用STC 51单片机时,好像没有提到这个ID号啊?
不是全系列都有。
如果要捆绑我该如何操作啊?
看相应版本技术手册。