① 80c51编程,用mcs-51指令实现
MCS-51数据传送指令
数据传送指令共有29条,数据传送指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。如果要求在进行数据传送时,目的操作数不丢失,则不能用直接传送指令,而采用交换型的数据传送指令,数据传送指令不影响标志C,AC和OV,但可能会对奇偶标志P有影响。
[1]. 以累加器A为目的操作数类指令(4条)
这4条指令的作用是把源操作数指向的内容送到累加器A。有直接、立即数、寄存器和寄存器间接寻址方式:
MOV A,data ;(data)→(A) 直接单元地址中的内容送到累加器A
MOV A,#data ;#data→(A) 立即数送到累加器A中
MOV A,Rn ;(Rn)→(A) Rn中的内容送到累加器A中
MOV A,@Ri ;((Ri))→(A) Ri内容指向的地址单元中的内容送到累加器A
[2]. 以寄存器Rn为目的操作数的指令(3条)
这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。有直接、立即和寄存器寻址方式:
MOV Rn,data ;(data)→(Rn) 直接寻址单元中的内容送到寄存器Rn中
MOV Rn,#data ;#data→(Rn) 立即数直接送到寄存器Rn中
MOV Rn,A ;(A)→(Rn) 累加器A中的内容送到寄存器Rn中
[3]. 以直接地址为目的操作数的指令(5条)
这组指令的功能是把源操作数指定的内容送到由直接地址data所选定的片内RAM中。有直接、立即、寄存器和寄存器间接4种寻址方式:
MOV data,data ;(data)→(data) 直接地址单元中的内容送到直接地址单元
MOV data,#data ;#data→(data) 立即数送到直接地址单元
MOV data,A ;(A)→(data) 累加器A中的内容送到直接地址单元
MOV data,Rn ;(Rn)→(data) 寄存器Rn中的内容送到直接地址单元
MOV data,@Ri ;((Ri))→(data) 寄存器Ri中的内容指定的地址单元中数据送到直接地址单元
[4]. 以间接地址为目的操作数的指令(3条)
这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。有直接、立即和寄存器3种寻址方式:
MOV @Ri,data ;(data)→((Ri)) 直接地址单元中的内容送到以Ri中的内容为地址的RAM单元
MOV @Ri,#data ;#data→((Ri)) 立即数送到以Ri中的内容为地址的RAM单元
MOV @Ri,A ;(A)→((Ri)) 累加器A中的内容送到以Ri中的内容为地址的RAM单元
[5]. 查表指令(2条)
这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式:
MOVC A,@A+DPTR ;((A))+(DPTR)→(A) 表格地址单元中的内容送到累加器A中
MOVC A,@A+PC ;((PC))+1→(A),((A))+(PC)→(A) 表格地址单元中的内容送到累加器A中
[6]. 累加器A与片外数据存储器RAM传送指令(4条)
这4条指令的作用是累加器A与片外RAM间的数据传送。使用寄存器寻址方式:
MOVX @DPTR,A ;(A)→((DPTR)) 累加器中的内容送到数据指针指向片外RAM地址中
MOVX A, @DPTR ;((DPTR))→(A) 数据指针指向片外RAM地址中的内容送到累加器A中
MOVX A, @Ri ;((Ri))→(A) 寄存器Ri指向片外RAM地址中的内容送到累加器A中
MOVX @Ri,A ;(A)→((Ri)) 累加器中的内容送到寄存器Ri指向片外RAM地址中
[7]. 堆栈操作类指令(2条)
这4类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。需要指出的是,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。
PUSH data ;(SP)+1→(SP),(data)→(SP) 堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中
POP data ;(SP)→(data)(SP)-1→(SP), 堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作
[8]. 交换指令(5条)
这5条指令的功能是把累加器A中的内容与源操作数所指的数据相互交换。
XCH A,Rn ;(A)←→(Rn)累加器与工作寄存器Rn中的内容互换
XCH A,@Ri ;(A)←→((Ri))累加器与工作寄存器Ri所指的存储单元中的内容互换
XCH A,data ;(A)←→(data)累加器与直接地址单元中的内容互换
XCHD A,@Ri ;(A 3-0 )←→((Ri) 3-0 )累加器与工作寄存器Ri所指的存储单元中的内容低半字节互换
SWAP A ;(A 3-0 )←→(A 7-4 )累加器中的内容高低半字节互换
[9]. 16位数据传送指令(1条)
这条指令的功能是把16位常数送入数据指针寄存器。
MOV DPTR,#data16 ;#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL
MCS-51算术运算指令
算术运算指令共有24条,算术运算主要是执行加、减、乘、除法四则运算。另外MCS-51指令系统中有相当一部分是进行加、减1操作,BCD码的运算和调整,我们都归类为运算指令。虽然MCS-51单片机的算术逻辑单元ALU仅能对8位无符号整数进行运算,但利用进位标志C,则可进行多字节无符号整数的运算。同时利用溢出标志,还可以对带符号数进行补码运算。需要指出的是,除加、减1指令外,这类指令大多数都会对PSW(程序状态字)有影响。这在使用中应特别注意。
[1]. 加法指令(4条)
这4条指令的作用是把立即数,直接地址、工作寄存器及间接地址内容与累加器A的内容相加,运算结果存在A中。
ADD A,#data ;(A)+#data→(A) 累加器A中的内容与立即数#data相加,结果存在A中
ADD A,data ;(A)+(data)→(A) 累加器A中的内容与直接地址单元中的内容相加,结果存在A中
ADD A,Rn ;(A)+(Rn)→(A) 累加器A中的内容与工作寄存器Rn中的内容相加,结果存在A中
ADD A,@Ri ;(A)+((Ri))→(A) 累加器A中的内容与工作寄存器Ri所指向地址单元中的内容相加,结果存在A中
[2]. 带进位加法指令(4条)
这4条指令除与[1]功能相同外,在进行加法运算时还需考虑进位问题。
ADDC A,data ;(A)+(data)+(C)→(A) 累加器A中的内容与直接地址单元的内容连同进位位相加,结果存在A中
ADDC A,#data ;(A)+#data +(C)→(A) 累加器A中的内容与立即数连同进位位相加,结果存在A中
ADDC A,Rn ;(A)+Rn+(C)→(A) 累加器A中的内容与工作寄存器Rn中的内容、连同进位位相加,结果存在A中
ADDC A,@Ri ;(A)+((Ri))+(C)→(A) 累加器A中的内容与工作寄存器Ri指向地址单元中的内容、连同进位位相加,结果存在A中
[3]. 带借位减法指令(4条)
这组指令包含立即数、直接地址、间接地址及工作寄存器与累加器A连同借位位C内容相减,结果送回累加器A中。
这里我们对借位位C的状态作出说明,在进行减法运算中,CY=1表示有借位,CY=0则无借位。OV=1声明带符号数相减时,从一个正数减去一个负数结果为负数,或者从一个负数中减去一个正数结果为正数的错误情况。在进行减法运算前,如果不知道借位标志位C的状态,则应先对CY进行清零操作。
SUBB A,data ;(A)-(data) - (C)→(A) 累加器A中的内容与直接地址单元中的内容、连同借位位相减,结果存在A中
SUBB A,#data ;(A)-#data -(C)→(A) 累加器A中的内容与立即数、连同借位位相减,结果存在A中
SUBB A,Rn ;(A)-(Rn) -(C)→(A) 累加器A中的内容与工作寄存器中的内容、连同借位位相减,结果存在A中
SUBB A,@Ri ;(A)-((Ri)) -(C)→(A) 累加器A中的内容与工作寄存器Ri指向的地址单元中的内容、连同借位位相减,结果存在A中
[4]. 乘法指令(1条)
这个指令的作用是把累加器A和寄存器B中的8位无符号数相乘,所得到的是16位乘积,这个结果低8位存在累加器A,而高8位存在寄存器B中。如果OV=1,说明乘积大于FFH,否则OV=0,但进位标志位CY总是等于0。
MUL AB ;(A)×(B)→(A)和(B) 累加器A中的内容与寄存器B中的内容相乘,结果存在A、B中
[5]. 除法指令(1条)
这个指令的作用是把累加器A的8位无符号整数除以寄存器B中的8位无符号整数,所得到的商存在累加器A,而余数存在寄存器B中。除法运算总是使OV和进位标志位CY等于0。如果OV=1,表明寄存器B中的内容为00H,那么执行结果为不确定值,表示除法有溢出。
DIV AB ;(A)÷(B)→(A)和(B) 累加器A中的内容除以寄存器B中的内容,所得到的商存在累加器A,而余数存在寄存器B中。
[6]. 加1指令(5条)
这5条指令的的功能均为原寄存器的内容加1,结果送回原寄存器。上述提到,加1指令不会对任何标志有影响,如果原寄存器的内容为FFH,执行加1后,结果就会是00H。这组指令共有直接、寄存器、寄存器减间址等寻址方式:
INC A ;(A)+1→(A) 累加器A中的内容加1,结果存在A中
INC data ;(data)+1→(data) 直接地址单元中的内容加1,结果送回原地址单元中
INC @Ri ;((Ri))+1→((Ri)) 寄存器的内容指向的地址单元中的内容加1,结果送回原地址单元中
INC Rn ;(Rn)+1→(Rn)寄存器Rn的内容加1,结果送回原地址单元中
INC DPTR ;(DPTR)+1→(DPTR)数据指针的内容加1,结果送回数据指针中
在INC data这条指令中,如果直接地址是I/O,其功能是先读入I/O锁存器的内容,然后在CPU进行加1操作,再输出到I/O上,这就是“读—修改—写”操作。
[7]. 减1指令(4条)
这组指令的作用是把所指的寄存器内容减1,结果送回原寄存器,若原寄存器的内容为00H,减1后即为FFH,运算结果不影响任何标志位,这组指令共有直接、寄存器、寄存器间址等寻址方式,当直接地址是I/O口锁存器时,“读—修改—写”操作与加1指令类似。
DEC A ;(A)-1→(A)累加器A中的内容减1,结果送回累加器A中
DEC data ;(data)-1→(data)直接地址单元中的内容减1,结果送回直接地址单元中
DEC @Ri ;((Ri))-1→((Ri))寄存器Ri指向的地址单元中的内容减1,结果送回原地址单元中
DEC Rn ;(Rn)-1→(Rn)寄存器Rn中的内容减1,结果送回寄存器Rn中
[8]. 十进制调整指令(1条)
在进行BCD码运算时,这条指令总是跟在ADD或ADDC指令之后,其功能是将执行加法运算后存于累加器A中的结果进行调整和修正。
DA A
MCS-51逻辑运算及移位指令
逻辑运算和移位指令共有25条,有与、或、异或、求反、左右移位、清0等逻辑操作,有直接、寄存器和寄存器间址等寻址方式。这类指令一般不影响程序状态字(PSW)标志。
[1]. 循环移位指令(4条)
这4条指令的作用是将累加器中的内容循环左或右移一位,后两条指令是连同进位位CY一起移位。
RL A ;累加器A中的内容左移一位
RR A ;累加器A中的内容右移一位
RLC A ;累加器A中的内容连同进位位CY左移一位
RRC A ;累加器A中的内容连同进位位CY右移一位
[2]. 累加器半字节交换指令(1条)
这条指令是将累加器中的内容高低半字节互换,这在上一节中内容已有介绍。
SWAP A ; 累加器中的内容高低半字节互换
[3]. 求反指令(1条)
这条指令将累加器中的内容按位取反。
CPL A ; 累加器中的内容按位取反
[4]. 清零指令(1条)
这条指令将累加器中的内容清0。
CLR A ; 0→(A),累加器中的内容清0
[5]. 逻辑与操作指令(6条)
这组指令的作用是将两个单元中的内容执行逻辑与操作。如果直接地址是I/O地址,则为“读—修改—写”操作。
ANL A,data ;累加器A中的内容和直接地址单元中的内容执行与逻辑操作。结果存在寄存器A中。
ANL data,#data ;直接地址单元中的内容和立即数执行与逻辑操作。结果存在直接地址单元中。
ANL A,#data ;累加器A的内容和立即数执行与逻辑操作。结果存在累加器A中。
ANL A,Rn ;累加器A的内容和寄存器Rn中的内容执行与逻辑操作。结果存在累加器A中。
ANL data,A ;直接地址单元中的内容和累加器A的内容执行与逻辑操作。结果存在直接地址单元中。
ANL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行与逻辑操作。结果存在累加器A中。
[6]. 逻辑或操作指令(6条)
这组指令的作用是将两个单元中的内容执行逻辑或操作。如果直接地址是I/O地址,则为“读—修改—写”操作。
ORL A,data ;累加器A中的内容和直接地址单元中的内容执行逻辑或操作。结果存在寄存器A中。
ORL data,#data ;直接地址单元中的内容和立即数执行逻辑或操作。结果存在直接地址单元中。
ORL A,#data ;累加器A的内容和立即数执行逻辑或操作。结果存在累加器A中。
ORL A,Rn ;累加器A的内容和寄存器Rn中的内容执行逻辑或操作。结果存在累加器A中。
ORL data,A ;直接地址单元中的内容和累加器A的内容执行逻辑或操作。结果存在直接地址单元中。
ORL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑或操作。结果存在累加器A中。
[7]. 逻辑异或操作指令(6条)
这组指令的作用是将两个单元中的内容执行逻辑异或操作。如果直接地址是I/O地址,则为“读—修改—写”操作。
XRL A,data ;累加器A中的内容和直接地址单元中的内容执行逻辑异或操作。结果存在寄存器A中。
XRL data,#data ;直接地址单元中的内容和立即数执行逻辑异或操作。结果存在直接地址单元中。
XRL A,#data ;累加器A的内容和立即数执行逻辑异或操作。结果存在累加器A中。
XRL A,Rn ;累加器A的内容和寄存器Rn中的内容执行逻辑异或操作。结果存在累加器A中。
XRL data,A ;直接地址单元中的内容和累加器A的内容执行逻辑异或操作。结果存在直接地址单元中。
XRL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑异或操作。结果存在累加器A中。
MCS-51控制转移指令
控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。
[1]. 无条件转移指令(4条)
这组指令执行完后,程序就会无条件转移到指令所指向的地址上去。长转移指令访问的程序存储器空间为16地址64kB,绝对转移指令访问的程序存储器空间为11位地址2kB空间。
LJMP addr16 ;addr16→(PC),给程序计数器赋予新值(16位地址)
AJMP addr11 ;(PC)+2→(PC),addr11→(PC 10-0 )程序计数器赋予新值(11位地址),(PC 15-11 )不改变
SJMP rel ;(PC)+ 2 + rel→(PC)当前程序计数器先加上2再加上偏移量给程序计数器赋予新值
JMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值
[2]. 条件转移指令(8条)
程序可利用这组丰富的指令根据当前的条件进行判断,看是否满足某种特定的条件,从而控制程序的转向。
JZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的内容为0,则转移到偏移量所指向的地址,否则程序往下执行
JNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的内容不为0,则转移到偏移量所指向的地址,否则程序往下执行
CJNE A, data, rel ; A≠(data),(PC)+ 3 + rel→(PC),累加器中的内容不等于直接地址单元的内容,则转移到偏移量所指向的地址,否则程序往下执行
CJNE A, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),累加器中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
CJNE Rn, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Rn中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
CJNE @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址单元中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
DJNZ Rn, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)工作寄存器Rn减1不等于0,则转移到偏移量所指向的地址,否则程序往下执行
DJNZ data, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)直接地址单元中的内容减1不等于0,则转移到偏移量所指向的地址,否则程序往下执行
[3]. 子程序调用指令(1条)
子程序是为了便于程序编写,减少那些需反复执行的程序占用多余的地址空间而引入的程序分支,从而有了主程序和子程序的概念,需要反复执行的一些程序,我们在编程时一般都把它们编写成子程序,当需要用它们时,就用一个调用命令使程序按调用的地址去执行,这就需要子程序的调用指令和返回指令。
LCALL addr16 ; 长调用指令,可在64kB空间调用子程序。此时(PC)+ 3→(PC),(SP)+ 1→(SP),(PC 7-0 )→(SP),(SP)+ 1→(SP),(PC 15-8 )→(SP),addr16→(PC),即分别从堆栈中弹出调用子程序时压入的返回地址
ACALL addr11 ; 绝对调用指令,可在2kB空间调用子程序,此时(PC)+ 2→(PC),(SP)+ 1→(SP),(PC 7-0 )→(SP),(SP)+ 1→(SP),(PC 15-8 )→(SP),addr11→(PC 10-0 )
RET ; 子程序返回指令。此时(SP)→(PC 15-8 ),(SP)- 1→(SP),(SP)→(PC 7-0 ),(SP)- 1→(SP)
RETI ; 中断返回指令,除具有RET功能外,还具有恢复中断逻辑的功能,需注意的是,RETI指令不能用RET代替
[4]. 空操作指令(1条)
这条指令将累加器中的内容清0。
NOP ; 这条指令除了使PC加1,消耗一个机器周期外,没有执行任何操作。可用于短时间的延时
MCS-51布尔变量操作指令
布尔处理功能是MCS-51系列单片机的一个重要特征,这是出于实际应用需要而设置的。布尔变量也即开关变量,它是以位(bit)为单位进行操作的。
在物理结构上,MCS-51单片机有一个布尔处理机,它以进位标志做为累加位,以内部RAM可寻址的128个为存储位。
既然有布尔处理机功能,所以也就有相应的布尔操作指令集,下面我们分别谈论。
[1]. 位传送指令(2条)
位传送指令就是可寻址位与累加位CY之间的传送,指令有两条。
MOV C,bit ;bit→CY,某位数据送CY
MOV bit,C ;CY→bit,CY数据送某位
[2]. 位置位复位指令(4条)
这些指令对CY及可寻址位进行置位或复位操作,共有四条指令。
CLR C ; 0→CY,清CY
CLR bit ; 0→bit,清某一位
SETB C ; 1→CY,置位CY
SETB bit ; 1→bit,置位某一位
[3]. 位运算指令(6条)
位运算都是逻辑运算,有与、或、非三种指令,共六条。
ANL C,bit ;(CY)∧(bit)→CY
ANL C,/bit ;(CY)∧( )→CY
ORL C,bit ;(CY)∨(bit)→CY
ORL C,/bit ;(CY)∧( )→CY
CPL C ;( )→CY
CPL bit ;( )→bir
[4]. 位控制转移指令(5)
位控制转移指令是以位的状态作为实现程序转移的判断条件,介绍如下:
JC rel ; (CY)=1转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。
JNC rel ; (CY)=0转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。
JB bit, rel ; 位状态为1转移。
JNB bit, rel ; 位状态为0转移。
JBC bit, rel ; 位状态为1转移,并使该位清“0”。
后三条指令都是三字节指令,如果条件满足,(PC)+3+rel→PC,否则程序往下执行,(PC)+3→PC
② 单片机二级加密怎么设置
程序写保护
这种方法是最常见,也是最简单的一种。现在的MUC基本都有写保护功能,但是这种容易被人破解。
烧断数据总线
这个方法听起来不错,但有损坏的风险,同样也能破解。
软件加密
是一些防止别人读懂程序的方法,单一的这种方法不能防止别人全盘复制,须配合其他的加密算法。
添加外部硬件电路的加密方法
这个方法效果看起来比较好,但会增加成本。
芯片打磨改型
这个方法改了型号能误导,但同时也增加成本,解密者一般也能分析出来。
通过通过联网加序列号加密
通过连接网络,在你的MCU中生成一个唯一的随机长序列号,并加入复杂的特种算法,或加入你们重新编码的企业信息在里面,每个芯片内不同,复制者只能复制到一个序列号。
通过MCU唯一的标识加密
以前很多MCU没有唯一标识码,现在的很多MCU都具有唯一标识码了。
这个方法比较好,简单省事,能很好的防止复制。
读保护 + 唯一ID加密
使用读保护 + 唯一ID的加密是最常用的一种方法,也是推荐大家使用的一种方法。
唯一ID
现在正规的芯片,每颗出厂的时候都带了一个唯一标识码,这个号码是唯一不重复的,比如STM32的就使用96位作为唯一ID。
和我们每个人的身份证号码一样,现在刚出生的婴儿,上户的时候就给他一个身份证号,那么每个芯片一生产出来,也就具备了这个身份证号。
加密原理
读保护就不用说了,增加被破解难度。
使用唯一ID加密的方法很多,这里说一种简单的方法:出厂时程序读取唯一ID并保存在一个位置,以后程序执行之前,要读取并匹配这个唯一ID,一致才执行程序。
当然,这种方法是最基础的原理,但也存在被破解的风险。所以,存储的数据,以及读取验证这两个地方需要进一步添加一些算法。
这样操作之后,即使别人读取了你的程序,也是无法正常执行。
③ 我手上有只单片机,标识上写的型号是第一行“H58E15D”第二行“1050N8227” 求此单片机的厂家或详细型号。
自从单片机诞生至今,已经发展到70多个系列近500个机种。目前国内外比较有名,而且影响较大的公司和它们的产品如下:
Intel公司的MCS-48,MCS-51,MCS-96系列产品;
Motorla公司的6801、6802、6803、6805、68HCC11系列产品;
Zilog公司的Z8、super-8系列产品;
仙童公司和Mostek公司的F8、3870系列产品;
NEC公司的μCOM-87系列产品;
Rockwell工地的6500、6501系列产品。
89系列单片机的型号编码由三个部分组成,它们是前缀、型号和后缀。格式如下:
AT89CXXXXXXXX其中,AT是前缀,89CXXXX是型号,XXXX是后缀。
下面分别对这三个部分进行说明,并且对其中有关参数的表示和意义作相应的解释。
(l)前缀由字母“AT”组成,表示该器件是ATMEL公司的产品。
(2)型号由“89CXXXX”或“89LVXXXX”或“89SXXXX”等表示。
④ 单片机如何与USB接口相连接其硬件电路如何设计
现在都网络化了,杭州发到昆山也就一天时间,你看看这里:
单片机学习实验及开发工具的导购
鉴于目前单片机技术火的一塌糊涂!越来越多的朋友加入了学习单片机的行列中!还有更多的朋友正在准备加入到学习单片机行列中。很多初学者在购买了本站的硬件学习板后,在短期内就掌握了自主编写实用控制程序的能力,正所谓只要功夫深,铁杵磨成针。
这里要先说一下单片机的含义,单片机就是一种微型的计算机,它的硬件等级不高,程序存储器比较小,无法和我们个人电脑中的硬盘相比,但是他的整体成本很低,体积也很小,这就给电子工程师提供了一个低成本开发智能控制设备的可能。另外就是它的可塑性是很强的,只要把程序存储器中写入不同的程序,它就会根据不同的程序来完成不同的工作。
比如我们要控制洗衣机的完成一个智能控制洗衣流程(不采用简单的机械定时器),从成本角度讲,虽然个人电脑性能强大,但是不能采用,因为一台个人电脑的体积成本都太过了,此时用“单片机+顺序控制程序+接口电路+执行电路”就是最好的解决方案了,这等于在洗衣现场有一个小小的电脑在控制着整个洗衣过程,单片机是现代全自动洗衣机的核心部分,它的应用大大减低了人的劳动强度。从这个简单的例子中,我们就可以看到单片机的实际意义了!小到温度智能控制,中到通讯控制,大到生产流程控制,都可以见到它的身影。应用范围绝对广泛,只要编写好不同的程序。单片机就可以完成不同的控制工作。这样,我们通过编写不同的控制程序就可以实现器件的万能化!
大致可以通过这些步骤来完成实验及开发工作:
第一步:通过软件编译平台开始写我们的试验程序,这就好比写文章要有笔和纸一样,最常用的是KEIL软件平台,比如点亮一个发光管,点亮多个发光管,点亮流水灯,驱动继电器,驱动数码管......,学用写源程序有2个重点,重点1是学会在KEIL中写源程序,就和用记事本软件编辑文字一样,重点2是学会把写好的源程序通过KEIL软件平台编译成为单片机可以读懂的由0和1构成的机器码,为了简化,通常是生成16进制的*.HEX或者*.BIN文件,不过本质还是0和1。在这里,源程序我们能读懂,但是单片机不能读懂,所以需要把源程序通过编译器编译成最终的*.HEX或者*.BIN文件。在这里,编译平台充当的是一个语言翻译官的角色!
第二步:制作或者购买一个编程器(也有人叫它为烧写器)。
注意,编程器的作用是把我们编译好的机器码文件写入到单片机的程序存储器中,这个设备的作用就好比我们给一个没有记忆的人灌输记忆。通过程序被写入,单片机中就被灌输了我们的设计思想或者是某种控制流程。编程器和单片机可以支持的文件是16进制的,文件属性一般为*.HEX或者*.BIN,它们的本质是二进制,也就是1和0。编程器只是一种写入设备,而源程序还是要由我们来编写和创造的!
第三步:制作或者购买一个实验板,它的作用是完成最终的硬件驱动效果验证。这就好比把一个已经灌输了我们设计思想的单片机连上躯体和四肢,看看这个完整的,已经具备了“头脑+思想+四肢”的设备是不是能真的动起来,动起来的时候看看它的动作是不是和我们设计的程序完全一致?如果不一致就说明我们给他设计的“思想”可能存在问题!此时就需要用编程器中的“擦除”操作给单片机“洗脑”,并且修改程序,然后再次写入和看验证结果。
比如我们用软件写了一个流水灯程序,通过什么来验证它是否可以真正的驱动硬件呢?答案就是实验板。
也许有人会问,为什么没有提到仿真器?因为以前专业化的仿真器太贵了!大家一般都承受不了!
仿真器是做什么的呢?它的作用是调试我们的程序用的,比如我们的程序有100行,假设代表了10个驱动硬件的动作,这时候如果有仿真器的话,我们可以让这10个动作一个个的执行,同时能够观察到在执行这10个动作的过程中,单片机内部的各单元状态是什么样的!也就是可以细致的分析一下整个程序在硬件中的具体工作过程。这样我们就可以了解程序中是不是有问题存在,所以叫做仿真!
仿真分为硬件仿真和软件仿真二种,软件仿真是完全虚拟的,比较抽象,初学者理解起来比较困难。硬件仿真方面,如果硬件仿真器连接了目标设备,就可以看到驱动硬件的效果,还是比较实用的。
看了这么多的文字介绍,大家还是可以来这里看一下上面所说的到底是怎么样的东西,我们应该如何来使用它们,给大家一个感性的认识。
点击进入大量单片机实验视频录像在线观看
总而言之,在你决定学习单片机之前,请做好如下准备工作:
一、硬件准备:计算机一台,编程器,仿真器和实验板。如果你想学单片机,而又不愿做这些投资,很有可能会挫伤你学习的积极性和浪费你的时间,好在这些投资并不算多:)
编程器可以选用“A51编程器”或“多功能编程器”,经常会有朋友这样问我:这两种编程器到底有什么不同,其区别在哪里?
在此,站长也说明一下其不同之处,怎么样的才适合你的使用。“A51编程器”的主要特点就是价格低,性能稳定,支持常用的51芯片,仅烧51的话,用用这个绝对经济实惠,不错了。“多功能编程器”的主要特点是性价比高,支持芯片多,有几百种型号,还能烧写主板BIOS芯片,比目前市场上的同类产品价格都要低。总括来讲,如果你是仅仅用用51系列的,选“A51编程器”肯定OK;如果你想在单片机方面好好发展一下的,那最好还是为以后考虑一下,“多功能编程器”就比较合适了,虽然价格比“A51编程器”高了仅几十元,但长期来看,还是非常值得投资的,以备日后做其它用途使用,而且还有丰富的套餐组合供您选购。至于“TOP系列”的编程器相对来说,价格要稍高于“A51编程器”和“多功能编程器”,但它有漂亮的外壳,看上去比较漂亮,经站长自己使用的经验总结,感觉TOP853、TOP2000BS、TOP2005+(新产品)、TOP2007(新产品)、TOP2048这几款TOP编程器性能比较稳定,使用感觉不错,性价比比较高,其它的TOP系列编程器我们也就不作介绍了。
多功能编程器全套餐A:176元 相应介绍详见这里
A51编程器:98元 相应介绍详见这里
微型51仿真器:128元 相应介绍详见这里
增强型51实验板:148元 相应介绍详见这里
增强型51实验板可选配件:
1602液晶屏:30元 红外线遥控器:25元 步进电机:15元 18B20温度传感器:12元
200米无线遥控发射模块:20元 1000米无线遥控发射模块:35元 无线遥控接收模块:15元
TOP系列编程器—— TOP851 TOP2000BS TOP853 TOP2005+ TOP2007 TOP2048 TOP2049
TOP全系列编程器区别与差异介绍(站长个人使用总结)
推荐单片机学习全套餐C(编程器、仿真器、实验板分体式设计):
A51编程器+微型51仿真器+增强型51实验板+1602液晶屏+红外线遥控器+步进电机+DS18B20温度传感器+200米无线遥控收发模块(包括发射机和接收板)+AT89S51单片机芯片 总价:501+20(邮费)=521元
赠送:
1号光盘:单片机多媒体视频教程+单片机实验视频录像(酷)+实验板原理图+大量实验板配套例程+电子资料手册等 ——此碟为CDROM光盘
2号光盘:单片机权威教程全集,DVD格式,数据量4.3G,内含10CD教程 ——此碟为DVD光盘(相当于价值100元的CD教程光盘)
好消息:从2007年7月5日起,凡购买单片机学习全套餐C的用户,特别赠送价值36元的《C51单片机高效入门》配套教程一本,以便配套学习使用。 关于赠送活动的更详细情况请看这里--->>>
关于单片机学习全套餐C的配套的系列教学资料可以看网站首页的“手把手教你学51单片机”栏目。
您也可以翻阅历年来的《电子制作》杂志,我们刊登了系列连载教程,以便大家进行理论学习以及提高实践动手能力。 历年来有哪些期刊杂志有所介绍呢,原文及详细情况您可以看这里--->>>点击进入
点击进入“单片机学习全套餐C”相关实验视频录像在线观看
现在单片机学习之类的书籍在新华书店一翻就是一大堆,让人看了眼花缭乱,相信大家也有这样的感受,经常会有很多单片机初学者朋友让我来推荐单片机入门的书籍,从这些朋友的要求来看,感觉大家已经厌倦了很多条教式书籍的枯燥与古板,至少站长在大学读书时就有这样的感受,文科的书相对理科的书来说要好些,但对于理科的特点,本来就是比较突出其技术性与特点,要想写出点新鲜感确实有点难;还有一点,相信大家和我也会有一个共识,现在很多书不仅多,而且厚,但到时我们真正所关心的问题是否真的有这么多呢,相信一般我们也不会把整本书全部读完,只是取其一部分对自己有用的内容来阅读,至少有些书对于我来讲有点像字典,需要用的时候去翻一下而已。看完了书,有很多朋友可能还是会说,书我看了一大堆,但到头来还是一团迷茫,而感到无从下手,呵呵,因为我本人也遇到过这样的情况,对于单片机,在此我们必须提到的就是实践动手,否则书就算看10遍甚至20遍还是不能完成具体的应用任务,这等于白学,因为不能做到学以致用。针对以上这些现状,站长萌发了写书的念头,找了很多材料,并将积累的经验,花了无数的日夜写下了这本《C51单片机高效入门》一文,写书的思路是以理论与实践相结合为主导,以我们网站提供的单片机学习全套餐为硬件平台,一一介绍单片机各方面的理论知识与具体实践动手方法,建议初学者朋友先将此书大致翻一遍,对整体有个了解,掌握理论基础知识,然后再对照着书上的实践例子,一个课时一个课时地学习下去,相信看完了此书,你已经跨入了单片机这个领域的大门了。
建议:如果以后想做做单片机开发及产品的,可以将以上套餐中的A51编程器换成TOP853编程器,这样性价比可以高很多,支持的芯片有1500多种,而且是USB接口,使用非常方便,不会出现部分笔记本电脑没有串口而不能使用的尴尬局面,如换成TOP853,补上两种编程器的差价就可以了。
单片机学习全套餐C主要部件实物照片:
单片机学习全套餐C使用的编程器、仿真器、实验板
1602LCD液晶屏
DS18B20温度传感器
6121编码红外线遥控器
微型步进电机
200米无线收发模块
AT89S51单片机芯片——程序烧写使用
赠送的精美配套光盘,含丰富的学习资料与例程
赠送的单片机视频权威教程——DVD光盘
附带的USB线、串口线
赠送的配套学习书本 点击查看书本详细资料-->> 本书是以目前最为流行的8051系列单片机为主体,同时使用C程序设计语言来进行描述的。全书共分为四部分内容:单片机基础知识、C语言程序设计、单片机入门基础实例、单片机高级应用实例。以理论与实践相结合的方式来进行讲解,避免了传统教科书给人枯燥、乏味的感觉。讲解风格通俗易懂、条理清晰、实例丰富、图文并茂,既使是没有任何单片机基础的人,也可以通过本书的学习,踏入单片机世界的大门。 作者为本书的出版开发了相应的学习编程、仿真及实验板,以方便读者朋友进行学习,同时以大量实例照片记录了实验的过程且现象,以激发读者朋友对单片机的兴趣爱好。 本书的配套光盘包含了所有实验的源程序代码、一些常用的电子工具软件、芯片资料、实验过程照片以及试验演示视频录像。因此,通过本书,读者获得的是教程和学习平台的结合,不仅可以用于学习,而且还可以用于工厂、企业的产品研发。 本书可供电子爱好者和大学、中专相关专业学生参考。
单片机学习全套餐C的精美彩色外包装盒,质量、品质的实力体现!
推荐单片机学习全套餐D(编程器、仿真器、实验板一体化设计)豪华配置——多数初学者的选择
51单片机综合学习系统+仿真组件+1602液晶屏+红外线遥控器+步进电机+DS18B20温度传感器+200米无线遥控收发模块(包括发射机和接收板) 总价:563+20(邮费)=583元
2007年我们推出的单片机学习全套餐D,一直受到用户朋友的广泛好评。在这一年中,结合大家在学习中遇到的问题,我们不断总结教学经验,更新产品技术,组织编写与之相配套的书本教材<单片机快速入门>,目前此书已由北京航空航天大学出版社出版发行。
很多用户在于我们的沟通中,都说到自己是初学者,很多人担心自己学不会。我们推出这本书的目的也在于此:让零基础的用户,可以边看书边动手实践。我们希望用我们的力量,为更多的电子爱好者提供适合的学习资源。
我们多年的发展离不开广大用户的支持和信赖,新书推出之际,我们特举行赠书活动。即日起,您在本公司购买单片机学习全套餐D,就可以免费获得价值36元的<单片机快速入门>一书。
赠送:
1号光盘:单片机多媒体视频教程+单片机实验视频录像(酷)+实验板原理图+大量实验板配套例程+电子资料手册等 ——此碟为CDROM光盘
2号光盘:单片机权威教程全集,DVD格式,数据量4.3G,内含10CD教程 ——此碟为DVD光盘(相当于价值100元的CD教程光盘)
3号光盘:本站特别加送清晰版VCD格式“51单片机综合学习系统”实验视频演示光盘一份,使用更直观,学习更高效,对于入门级的学习非常有利。
好消息:从2008年5月8日起,凡购买单片机学习全套餐D的用户,特别赠送价值36元的《单片机快速入门》配套教程一本,以便配套学习使用。 关于赠送活动的更详细情况请看这里--->>>
全套餐组合不仅可以满足初学者的学习用途,还可以供工厂、企业研发人员及电子爱好者做一些技术研究及开发, 有较高的性价比,自投放市场以来,受到了广大用户的好评与支持。
关于单片机学习全套餐C的配套的系列教学资料可以看网站首页的“手把手教你学51单片机”栏目。
您也可以翻阅历年来的《电子制作》杂志,我们刊登了系列连载教程,以便大家进行理论学习以及提高实践动手能力。 历年来有哪些期刊杂志有所介绍呢,原文及详细情况您可以看这里--->>>点击进入
点击进入“单片机学习全套餐D”相关实验视频录像系列--1在线观看
点击进入“单片机学习全套餐D”相关实验视频录像系列--2在线观看
单片机学习全套餐D主要部件实物照片:
单片机全套餐D所有部件图片集
51单片机综合学习系统主机
DS18B20温度传感器
优质超薄型6121编码红外线遥控器
微型步进电机
200米无线收发模块
AT89S51单片机芯片——程序烧写使用
SST89E516仿真模块——程序仿真使用
赠送的单片机视频权威教程——DVD光盘
附带的USB线、串口线、并口线
赠送的配套学习书本 点击查看书本详细资料-->>
精美光盘,含丰富的学习资料 点击查看例程库-->>
单片机学习全套餐D的精美彩色外包装盒,质量、品质的实力体现!
全套餐C与全套餐D的区别在于:
全套餐D为最新设计的学习开发系统,将编程、仿真、实验三者功能进行了整合,同时,可做实验的资源与功能要比全套餐C多很多,如SPI总线、IIC总线、DS1302时钟、AD模数转换等实验资源。全套餐C提供的红外线遥控器为普通黑色的红外线遥控器,全套餐D提供的为时尚超薄型红外线遥控器,此外,对于购买全套餐D的用户,本站特别加送清晰版VCD格式“51单片机综合学习系统”实验视频演示光盘一份,该演示视频光盘只适用于51单片机综合学习系统。用户可以根据自己的需求来选择套餐进行学习,套餐C经济些,便宜些,但其总体功能比套餐C少些,套餐D因为用的是51单片机综合学习系统为硬件平台,免跳线设计,所以操作比较方便、简单些。由于全套餐D的成本要高于全套餐C的成本,所以两种套餐的售价会略有所不同,但从其功能性价比看,我们推荐用户使用全套餐D来进行单片机学习,一般来说,足够学习与开发使用了。
>>> 对于一些本站产品优势以及受欢迎的原因,请点击这里看
单片机学习全套餐C配套的书本教程,点击此处进入了解详细信息。
单片机学习全套餐D配套的书本教程,点击此处进入了解详细信息。
原文:
⑤ 如何防止单片机解密
单片机(MCU)一般都有内部EEPROM/FLASH供用户存放程序和工作数据。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就叫单片机加密。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序这就叫单片机解密。
任何一款单片机从理论上讲,攻击者均可利用足够的投资和时间使用以上方法来攻破。这是系统设计者应该始终牢记的基本原则。因此,作为电子产品的设计工程师非常有必要了解当前单片机攻击的最新技术,做到知己知彼,心中有数,才能有效防止自己花费大量金钱和时间辛辛苦苦设计出来的产品被人家一夜之间仿冒的事情发生。我们根据沪生电子的解密实践提出下面建议:
(1)在选定加密芯片前,要充分调研,了解单片机破解技术的新进展,包括哪些单片机是已经确认可以破解的。尽量不选用已可破解或同系列、同型号的芯片选择采用新工艺、新结构、上市时间较短的单片机,如可以使用ATMEGA88/ATMEGA88V,这种国内目前破解的费用一需要6K左右,另外目前相对难解密的有ST12系列,DSPPIC等;其他也可以和CPLD结合加密,这样解密费用很高,解密一般的CPLD也要1万左右。
(2)尽量不要选用MCS51系列单片机,因为该单片机在国内的普及程度最高,被研究得也最透。
(3)产品的原创者,一般具有产量大的特点,所以可选用比较生僻、偏冷门的单片机来加大仿冒者采购的难度,选用一些生僻的单片机,比如ATTINY2313,AT89C51RD2,AT89C51RC2,motorola单片机等比较难解密的芯片,目前国内会开发使用熟悉motorola单片机的人很少,所以破解的费用也相当高,从3000~3万左右。
(4)在设计成本许可的条件下,应选用具有硬件自毁功能的智能卡芯片,以有效对付物理攻击;另外程序设计的时候,加入时间到计时功能,比如使用到1年,自动停止所有功能的运行,这样会增加破解者的成本。
(5)如果条件许可,可采用两片不同型号单片机互为备份,相互验证,从而增加破解成本。
(6)打磨掉芯片型号等信息或者重新印上其它的型号,以假乱真(注意,反面有LOGO的也要抹掉,很多芯片,解密者可以从反面判断出型号,比如51,WINBOND,MDT等)。
(7)可以利用单片机未公开,未被利用的标志位或单元,作为软件标志位。
(8)利用MCS-51中A5指令加密,其实世界上所有资料,包括英文资料都没有讲这条指令,其实这是很好的加密指令,A5功能是二字节空操作指令加密方法在A5后加一个二字节或三字节操作码,因为所有反汇编软件都不会反汇编A5指令,造成正常程序反汇编乱套,执行程序无问题仿制者就不能改变你的源程序。
(9)你应在程序区写上你的大名单位开发时间及仿制必究的说法,以备获得法律保护;另外写上你的大名的时候,可以是随机的,也就是说,采用某种算法,外部不同条件下,你的名字不同,比如wwwhusooncom1011、wwwhusooncn1012等,这样比较难反汇编修改。
(10)采用高档的编程器,烧断内部的部分管脚,还可以采用自制的设备烧断金线,这个目前国内几乎不能解密,即使解密,也需要上万的费用,需要多个母片。
(11)采用保密硅胶(环氧树脂灌封胶)封住整个电路板,PCB上多一些没有用途的焊盘,在硅胶中还可以掺杂一些没有用途的元件,同时把MCU周围电路的电子元件尽量抹掉型号。
(12)对SyncMos,Winbond单片机,将把要烧录的文件转成HEX文件,这样烧录到芯片内部的程序空位自动添00,如果你习惯BIN文件,也可以用编程器把空白区域中的FF改成00,这样一般解密器也就找不到芯片中的空位,也就无法执行以后的解密操作。
当然,要想从根本上防止单片机被解密,那是不可能的,加密技术不断发展,解密技术也不断发展,现在不管哪个单片机,只要有人肯出钱去做,基本都可以做出来,只不过代价高低和周期长短的问题,编程者还可以从法律的途径对自己的开发作出保护(比如专利)。
⑥ 单片机编程语言一般有哪几种
单片机的编程语言有三种种:机器语言、汇编语言与高级语言。
机器语言是计算机能够看懂的语言。(形式为一段二进制代码)
5.由于计算机只能看懂机器语言所以无论是汇编语言还是高级语言都需要经过编译成为机器语言才能够执行。
拓展资料
单片机的高级语言
51单片机支持三种高级语言,即PL/M,C和BASIC。C语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,并具有良好的程序结构,适用于各种应用的程序设计,是目前使用较广的单片机编程语言。
单片机的C语言采用C51编译器(简称C51)。有C51产生的目标代码短,运行速度高,所需存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言或PL/M51语言目标代码混合使用