ELAN义隆系列单片机解密
义隆单片机

语法 编码 操作 对标志位影响 说明 举例
BS R,b
0 101b bbrr rrrr 1→R(b) 无 R 寄存器第 b 位置 1 置 C 标志为 1: BS 0X3,0
¾
CALL
子程序调用
语法 编码 操作
对标志位影响 说明
CALL K
1 00kk kkkk kkkk PC+1→[栈顶],K→PC(9::0), R3(7::5)→PC(12::10) 无 当调用子程序时,首先将返回地址入栈,由 K 指定的 10 位地 址装入 PC(9::0),页面选择位 PS2,PS1,PS0 装入 PC(12::10)
深圳市瑞丰汇科技有限公司
TEL:0755-83039202 FAX:0755-83038396
EM78 系列指令系统
目
录
z ......................................................................................................................................... EM78
... 等等。
(3)位操作型指令( bit oriented ): 如
BC,JBS...等等。
(4)常数型指令( constant operation ):如
MOV A, @0x55 ; move 0x55 to A
XOR @0xFF
;Xor A with 0xFF
一般而言,EM78 系列八位微控制器除了對 PC (Program Counter)做 “写” 的指令如 (MOV PC, A),需二个
TEL:0755-83039202 FAX:0755-83038396
义隆单片机指令

这种寻址方式是通过寄存器 R4 来实现的,R4 的 bit0-5 是用来选择寄存器(地 址:00-06,0F-3F) 若是使用者所需要存取的寄存器, 有位址相邻的特性, 使用间接寻址是很方便的。 l 例:写一个程序,將寄存器 0X20~0X3F 的值都填 0。
;设定 A = 0X20。 ;设定间接寻址寄存器(0X04) ;的內含值为 0X20 ;清除 0X04 所指的寄存器。 ;递增间接寻址寄存器(0X04) ;设定 A=0X04 寄存器的值。 ;比较间接寻址的位址是否 ;以到 0X3F。若是则结束。
语 法 编 码 操作內容 受影响的标志 说 明
AND R,A 0 0010 11rr rrrrr A & R --> R Z﹔零标志 將 A 寄存器和 R 寄存器 AND 在一起﹐并将结果存入 R 寄存 器。 AND A,K 1 1010 kkkk kkkk A & K --> A Z﹔零标志 將 A 寄存器和立即值 K﹐AND 在一起﹐并将结果存入 A 寄
3.4.EM78 指令说明 ADD 语 法 编 码 操作內容 受影响的标志 说 明 Add ADD A,R 0 0011 10rr rrrrr A + R --> A Z,C,DC﹔零标志﹐进位标志和辅助进位标志都会受影响 將 A 寄存器的內含值加上 R 寄存器的內含值﹐並且把结果 载入 A 寄存器中。 ADD R,A 0 0011 11rr rrrrr A + R --> R Z,C,DC﹔零标志﹐进位标志和辅助标志都会受影响 將 A 寄存器的內含值加上 R 寄存器的內含值﹐並且把结果 载入 R 寄存器中。 ADD A, k 1 1111 kkkk kkkk K + A --> A Z,C,DC﹔零标志﹐进位标志和辅助标志都会受影响
51单片机的加密与解密 - 单片机

51单片机的加密与解密 - 单片机51 单片机的加密与解密单片机在当今的电子技术领域,单片机的应用无处不在。
51 单片机作为一种经典的单片机类型,因其简单易用、性价比高而被广泛采用。
然而,随着其应用的普及,51 单片机的加密与解密问题也逐渐引起了人们的关注。
首先,我们来了解一下为什么要对 51 单片机进行加密。
在许多实际应用中,单片机内部运行的程序往往包含了开发者的核心技术、商业机密或者独特的算法。
如果这些程序被未经授权的人员读取和复制,可能会导致知识产权的侵犯、商业竞争的不公平,甚至可能对产品的安全性和稳定性造成威胁。
因此,为了保护开发者的权益和产品的安全性,对 51 单片机进行加密是非常必要的。
那么,常见的 51 单片机加密方法有哪些呢?一种常见的方法是代码混淆。
通过对程序代码进行复杂的变换和重组,使得代码难以理解和分析。
比如,将关键的变量名、函数名进行重命名,使用复杂的控制流结构等。
这样,即使攻击者获取了代码,也很难理清程序的逻辑和功能。
另一种方法是使用硬件加密模块。
一些 51 单片机芯片本身就提供了硬件加密的功能,例如加密锁、加密密钥存储等。
通过在程序中使用这些硬件加密模块,可以增加破解的难度。
还有一种加密方式是对程序进行加密存储。
将程序在存储时进行加密,只有在单片机运行时通过特定的解密算法进行解密后才能执行。
这样,即使存储介质被读取,攻击者得到的也是加密后的乱码。
然而,尽管有了这些加密手段,51 单片机的解密仍然是可能的。
解密的动机通常是为了获取他人的技术成果用于非法复制或者破解产品限制。
常见的 51 单片机解密方法主要包括以下几种。
逆向工程是一种常见的解密手段。
攻击者通过对单片机的硬件进行分析,包括芯片的引脚、内部电路等,尝试推断出程序的运行方式和存储结构。
此外,通过软件分析也是一种方法。
利用专业的工具对单片机的运行状态进行监测和分析,尝试找出加密算法的漏洞或者获取解密的关键信息。
还有一种比较暴力的方法是通过物理手段破解。
义隆4位单片机红外遥控车原代码

; Program for EM55000 series Assember; Program is IR car; Reference program date : April 23,2003; Programmer : w.m.liu; Project : em_rx_1; Project Leader :; Program Approval by : w.m.liu; Program Check sum :; Customer :; Customer order code :; fequency test: p2.2 p2.3 connet to vdd p3.0 out 14 khz fequency; ir input : p2.0; f/b mottor: p3.0 p3.2; l/r mottor: p3.1 p3.3include "define.inc"poweron:stop2mov rate2,#8287mov a,#0000bmov p2s,amov a,#0000bmov p3s,amov p4s,amov p4,amov p2,amov p3,apage1call clr_rampage0call clr_rammov m2,#1100bmov a,p2and a,m2caje m2,test_modemov m13,#0110bmov m3,#0001b;jmp testend;**************************************test_mode:page0mov m4,#0001bmov a,#0001bmov p3,atest_mode_loop:mov a,#0001b;; 1xor a,m4;; 1mov m4,a;; 1mov p3,a;; 1mov a,p2;; 1and a,m2;; 1caje m2,test_mode_loop;; 3 -> 9 KHz 110usjmp poweron;-------------------------------------------init:call cl_128jmp rx_start_init;mov timer,#0 ;0----->.85ms 1---->1.7ms 2----->3.4ms 3----->6.8ms ;--------------------------------receive_loop:page1mov m4,#0mov m5,#0mov m6,#0mov m7,#0mov m8,#0mov m13,#0mov m12,#0mov m15,#0page0mov a,m1caje #0,rx_endrx_end@:page0call udchkmov a,m8caje #0,rx_endjmp rx_start@rx_end:page1mov m4,#0mov m5,#0mov m6,#0mov m7,#0mov m8,#0mov m13,#0mov m12,#0mov m1,#0mov m15,apage0mov m1,#0mov m9,#0mov m5,#0mov a,#0000bmov p3,amov p2,amov m0,amov m5,#0end ;;;;;;;;;;;;;;;;;;;;;;;;rx_start_init:page0mov m3,#0001bmov a,m1and a,m3caje #0,rx_end@mov a,m15caje #2,rx_startcall udchkmov a,m8caje #1,rx_startmov a,#0000bmov p3,amov p2,amov p4,arx_start:call voice2rx_start@:page1mov m4,#0mov m5,#0mov m6,#0mov m7,#0mov m8,#0mov m13,#0mov m12,#0mov m15,#0mov m3,#0001bnopnopnopmov a,p2and a,m3caje m3,rx_start_init nopnopnopmov a,p2and a,m3caje m3,rx_start_init call get_receivecaje #15,receive_loop;------------------------------------------------get_receive:call cl_128call cl_128mov m4,#0mov m5,#0mov m6,#0mov m7,#0mov m8,#0mov m13,#0mov m12,#0mov a,#1000bmov p3,acall hl_waitcaje #0,no_receivemov a,#0100bmov p3,arx_receive:mov a,m4caje #0000b,receive_15bitcaje #0001b,receive_14bitcaje #0010b,receive_13bitcaje #0011b,receive_12bitcaje #0100b,receive_11bitcaje #0101b,receive_10bitcaje #0110b,receive_9bitcaje #0111b,receive_8bitcaje #1000b,receive_7bitcaje #1001b,receive_6bitcaje #1010b,receive_5bitcaje #1011b,receive_4bitcaje #1100b,receive_3bitcaje #1101b,receive_2bitcaje #1110b,receive_1bitcaje #1111b,receive_0bitreceive_15bit:;call cl_128 ;15 call cl_128mov a,p2and a,m3caje #0,zero15one15:mov a,#1000bor a,m5mov m5,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero15:mov a,#0010b mov p3,acall hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_14bit:call cl_128 ;14 ;call cl_128mov a,#0001bmov p3,amov a,p2and a,m3caje #0,zero14one14:mov a,#0100bor a,m5mov m5,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero14:mov a,#0000bmov p3,amov a,m13caje #0,no_receivejmp comp_increceive_13bit:call cl_128 ;13 ;call cl_128mov a,p2and a,m3caje #0,zero13one13:mov a,#0010bor a,m5mov m5,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero13:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_12bit:call cl_128 ;12;call cl_128mov a,p2and a,m3caje #0,zero12one12:mov a,#0001bor a,m5mov m5,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero12:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_11bit:call cl_128 ;11 ;call cl_128mov a,p2and a,m3caje #0,zero11one11:mov a,#1000bor a,m6mov m6,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero11:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_10bit:call cl_128 ;10 ;call cl_128mov a,p2and a,m3caje #0,zero10one10:mov a,#0100bmov m6,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero10:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_9bit:call cl_128 ;9 ;call cl_128mov a,p2and a,m3caje #0,zero12one9:mov a,#0010bor a,m6mov m6,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero9:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_8bit:call cl_128 ;8 ;call cl_128mov a,p2and a,m3caje #0,zero8one8:mov a,#0001bor a,m6mov m6,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero8:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_7bit:call cl_128 ;7 ;call cl_128mov a,p2and a,m3caje #0,zero7one7:mov a,#1000bor a,m7mov m7,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero7:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_6bit:call cl_128 ;6 ;call cl_128and a,m3caje #0,zero6one6:mov a,#0100bor a,m7mov m7,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero6:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_5bit:call cl_128 ;5 ;call cl_128mov a,p2and a,m3caje #0,zero5one5:mov a,#0010bor a,m7mov m7,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero5:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_4bit:call cl_128 ;4 ;call cl_128mov a,p2and a,m3caje #0,zero4one4:mov a,#0001bor a,m7mov m7,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero4:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_3bit:call cl_128 ;3 ;call cl_128mov a,p2and a,m3caje #0,zero3one3:mov a,#1000bor a,m8mov m8,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero3:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_2bit:call cl_128 ;2 ;call cl_128mov a,p2and a,m3caje #0,zero2one2:mov a,#0100bor a,m8mov m8,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero2:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_1bit:call cl_128 ;1 ;call cl_128mov a,p2and a,m3caje #0,zero1one1:mov a,#0010bor a,m8mov m8,acall l_waitmov a,m12caje #0,no_receivejmp comp_inczero1:call hl_waitmov a,m13caje #0,no_receivejmp comp_increceive_0bit:call cl_128 ;0 ;call cl_128mov a,p2and a,m3caje #0,zero0one0:mov a,#0001bor a,m8mov m8,a;call l_wait;mov a,m12;caje #0,no_receivejmp comp_inczero0:;call hl_wait;mov a,m13;caje #0,no_receivejmp comp_inccomp_inc:mov a,m4add a,#1mov m4,acaje #0,receive_okjmp rx_receivereceive_ok:mov a,#0retno_receive:mov a,#15ret;-----------------------------------l_wait:l_chk:page1mov m12,#0mov m3,#0001bmov level_count,#0 mov noise_count,#0 mov over_count,#0l_chk_loop:nopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopmov a,p2and a,m3caje #0,l_chk_endmov noise_count,#0 mov a,level_count incamov level_count,a caje #0,l_chk_flow jmp l_chk_loopl_chk_end:mov a,noise_count incamov noise_count,a caje #1,l_chk_loop ;jmp l_chk_okl_chk_ok:mov m12,#1retl_chk_flow:mov m12,#0ret;=============================== hl_wait:hl_chk:page1mov m13,#0mov m3,#0001bmov level_count,#0 mov noise_count,#0 mov over_count,#0 wait_h_loop:nopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopmov a,p2and a,m3caje m3,wait_h_noise mov noise_count,#0 mov a,level_count incamov level_count,a caje #0,hl_chk_flow jmp wait_h_loop wait_h_noise:mov a,noise_count incamov noise_count,a caje #1,wait_h_loop ;jmp wait_l_start wait_l_start:mov level_count,#0 mov noise_count,#0 mov over_count,#0 wait_l_loop:nopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopmov a,p2and a,m3caje #0,wait_l_noise mov noise_count,#0 mov a,level_count incamov level_count,a caje #0,hl_chk_flow jmp wait_l_loop wait_l_noise:mov a,noise_count incamov noise_count,a caje #1,wait_l_loop jmp hl_chk_okhl_chk_ok:mov m13,#1rethl_chk_flow:mov m13,#0ret;*******************************page1mov timer,#2rsttfmov m12,#0000bmov m3,#0001bl_wait_cnt:mov a,statusmov timer_f,#0100band a,timer_fcaje #0100b,l_wait_endmov a,p2and a,m3caje m3,l_wait_cntnopnopnopmov a,p2and a,m3caje m3,l_wait_cntl_wait_ok:mov m12,#0001bretl_wait_end:mov m12,#0000bret;**************************************;;hl_wait:page1rsttfmov timer,#2mov m13,#0000bmov m3,#0001bhl_wait_cnt:mov a,statusmov timer_f,#0100band a,timer_fcaje #0100b,hl_wait_endmov a,p2and a,m3caje #0,hl_wait_cntnopnopnopmov a,p2and a,m3caje #0,hl_wait_cntll_wait:rsttfmov timer,#2ll_wait_cnt:mov a,statusmov timer_f,#0100band a,timer_fcaje #0100b,hl_wait_endmov a,p2and a,m3caje m3,ll_wait_cntnopnopnopmov a,p2and a,m3caje m3,ll_wait_cnthl_wait_ok:mov m13,#0001brethl_wait_end:mov m13,#0000bret;================================================== cp_chk:page1mov a,m6 ;-----------------m5,m6 port31 caje m5,cp_next_chkjmp receive_loopcp_next_chk:page1mov a,m8 ;-----------------m7,m8 power caje m7,cp_okjmp receive_loopcp_ok:page1mov a,m7mov m3,#0100band a,m3caje #0100b,tonmov a,m5mov m3,#0100band a,m3caje #0100b,toff;mov a,m7;caje #0,cp_ok_exitjmp motcp_ok_exit:page0mov a,m1page1caje #0001b,receive_loopjmp rx_end;-------------------------------mot:page0mov a,m1caje #0,rx_endpage1mov a,#0000bmov p4,amov a,m7caje #0001b,mot_m1caje #0010b,mot_m2caje #0011b,mot_m3mot_next:page1mov m3,#0011bmov a,m5and a,m3caje #0001b,mot_m4caje #0010b,mot_m5caje #0011b,mot_m6jmp mot_n;--------------------------------mot_m1:mov a,m5caje #0010b,m1_addjmp m1_no_addm1_add:mov a,#0001bmov timer_f,#1000bor a,timer_fmov p4,ajmp mot_v1m1_no_add:mov a,#0001bmov p4,ajmp mot_v1;--------------------------------mot_m2:mov a,m5caje #0001b,m2_addjmp m2_no_addm2_add:mov a,#0010bmov timer_f,#0100bor a,timer_fmov p4,ajmp mot_v1m2_no_add:mov a,#0010bmov p4,ajmp mot_n;---------------------------mot_m3:mov a,#0011bmov p4,ajmp mot_v1;--------------------------- mot_m4:mov a,#0100bmov p4,ajmp mot_v1mot_m5:mov a,#1000bmov p4,ajmp mot_nmot_m6:mov a,#1100bmov p4,ajmp mot_v1mot_v1:page1mov a,m5mov m3,#1000band a,m3caje #1000b,jmp_spk_s page0mov a,m0caje #5,rx_start;caje #5,rx_start_wmov m0,#5stop2jmp rx_startjmp rx_start_Wmot_n:page1mov a,m5mov m3,#1000band a,m3caje #1000b,jmp_spk_spage0mov a,m0caje #8,rx_start;caje #8,rx_start_Wstop2mov m0,#8jmp rx_start;jmp rx_start_Wjmp_spk_s:stop2page0mov m0,#4jmp rx_start;-------------------------------tspk:stop2page0mov a,m1caje #0,rx_endpl_spk:play2 h1.wavspk_w:; cjp spk_w; call2 ply_tailpage0mov m0,#3page1mov a,m15caje #0,rx_startjmp rx_start_wton:stop2page0mov m1,#0001bmov m0,#0001bjmp rx_starttoff:stop2page0mov m1,#0mov m4,#0mov m0,#0mov a,#0000bmov p3,amov p2,amov p4,aend ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; udchk ;;;;;;;;;;;; udchk:page0mov timer,#2rsttfmov m10,#0mov m11,#0mov m8,#0udchk_loop:mov a,statusmov timer_f,#0100band a,timer_fcaje #0100b,udchk_cntmov m3,#0001bnopnopnopmov a,p2and a,m3caje #0,udchk_okjmp udchk_loopudchk_cnt:rsttfmov a,m10add a,#1mov m10,acaje #0,udchk_cnt@jmp udchk_loopudchk_cnt@:mov a,m11add a,#1mov m11,acaje #3,udchk_endjmp udchk_loopudchk_end:stop2mov m0,#3mov m8,#0000bretudchk_ok:mov m8,#0001bret;**************************************cl_128:page0mov m10,#0mov m11,#0cl_loop:mov a,m10add a,#1mov m10,acaje #5,cl_cntjmp cl_loopcl_cnt:mov m10,#0mov a,m11mov m11,acaje #2,cl_okjmp cl_loopcl_ok:page1ret;*******************************clr_ram:mov m15,#0mov m14,#0mov m13,#0mov m12,#0mov m11,#0mov m10,#0mov m9,#0mov m8,#0mov m7,#0mov m6,#0mov m5,#0mov m4,#0mov m3,#0mov m2,#0mov m1,#0mov m3,#0ret;@@@@@@####################### voice2 start voice2:page0mov vo_temp,#0010bmov a,statusand a,vo_tempcaje #0010b,voice_retpage0mov a,m0caje #0,for_tailcaje #1,for_headcaje #2,for_startcaje #3,for_idlecaje #4,for_spkcaje #5,for_straightcaje #8,for_idle@jmp voice_retfor_head:stop2mov m0,#2mov m15,#2retfor_tail:mov m15,#1retfor_start:play2 wstart.wavmov m0,#3mov m15,#2retfor_idle:play2 widle.wavmov m0,#3mov m15,#2retfor_idle@:play2 widle.wavmov m0,#8mov m15,#3retfor_straight:play2 wstraight.wavmov m0,#5mov m15,#3retfor_spk:play2 h1.wavh1_wait:mov timer_f,#0010band a,timer_fcaje #0010b,h1_waitmov a,m1caje #1,spk_idlejmp spk_tailspk_idle:mov m0,#3mov m15,#3retspk_tail:mov m0,#0mov m15,#2voice_ret:ret;------------------------;d_4ms:mov timer,#3 ;0----->.85ms 1---->1.7ms 2----->3.4ms 3----->6.8ms rsttfd_4ms_wait:mov a,statusmov timer_f,#0100band a,timer_fcaje #0100b,d_4ms_exitjmp d_4ms_waitd_4ms_exit:ret;===========================rx_delay:page0mov m10,#0mov m11,#0mov timer,#3rsttfrx_delay_loop:mov a,statusmov timer_f,#0100band a,timer_fcaje #0100b,rx_delay_cntjmp rx_delay_looprx_delay_cnt:rsttfmov a,m10add a,#1mov m10,acaje#0,rx_delay_incjmp rx_delay_looprx_delay_inc:mov a,m11add a,#1mov m11,acaje#2,rx_delay_retjmp rx_delay_looprx_delay_ret:ret;-------------------------------------------delay:nopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopnopret;-------------------------------rx_start_w----------rx_start_w:page0mov m10,#0mov m11,#0mov m9,#0mov timer,#2rsttfrx_w_loop:mov a,statusmov timer_f,#0100band a,timer_fcaje timer_f,rx_w_cntmov m3,#0001bmov a,p2and a,m3caje #0,rx_startjmp rx_w_looprx_w_cnt:rsttfmov a,m10incamov m10,acaje #0,rx_w_cnt@jmp rx_w_looprx_w_cnt@:mov a,m11incamov m11,acaje #3,rx_w_endjmp rx_w_looprx_w_end:mov m0,#3mov a,#0000bmov p3,amov p2,amov a,m1caje #0001b,rx_start_initpage0mov m5,#0jmp rx_endtest:mov a,#1111bmov p3,acall cl_128call cl_128mov a,#0000bmov p3,acall d_4mscall d_4msjmp test。
义隆单片机和MCS—51单片机的区别

义隆单片机和MCS—51单片机的区别
义隆单片机的汇编语言和MCS-51单片机很相似,但两者是完全不停体系结构。
我总结的,首先从堆栈结构去看。
MCS-51单片机堆栈开辟在RAM空间,实现要用户根据程序调用情况估算堆栈的使用量,让后定义堆栈指针的栈顶地址,当用户读写操作改变堆栈区数据会导致程序跑飞。
义隆和pic 单片机的堆栈是独立固定的深度,用户无法直接对堆栈区进行读写操作,只有当发生程序调用时,才会有保护现场的地址压入堆栈,所以不会跑飞,但深度还是有限的所以不宜太多嵌套调用函数。
1,义隆单片机内部结构和PIC单片机是一样的,MCS-51单片机的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据吞吐率。
正因为在PIC单片机中采用了哈佛双总线结构,所以与常见的微控制器不同的一点是:程序和数据总线可以采用不同的宽度。
数据总线都是8位的,但指令总线位数分别位12、14、16位。
2,MCS-51单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条指令;而PIC的取指和执行采用双指令流水线结构,当一条指令被执行时,允许下一条指令同时被取出,这样就实现了单周期指令。
3,PIC单片机的所有寄存器,包括I/O口,定时器和程序计数器等都采用RAM结构形式,而且都只需要一个指令周期就可以完成访问和操作;而MCS-51单片机需要两个或两个以上的周期才能改变寄存器的内容。
单片机芯片解密的一般过程

单片机芯片解密的一般过程侵入型攻击的第一步是揭去芯片封装(简称开盖有时候称开封,英文为DECAP,decapsulation)。
有两种方法可以达到这一目的:第一种是完全溶解掉芯片封装,暴露金属连线。
第二种是只移掉硅核上面的塑料封装。
第一种方法需要将芯片绑定到测试夹具上,借助绑定台来操作。
第二种方法除了需要具备攻击者一定的知识和必要的技能外,还需要个人的智慧和耐心,但操作起来相对比较方便。
芯片上面的塑料可以用小刀揭开,芯片周围的环氧树脂可以用浓硝酸腐蚀掉。
热的浓硝酸会溶解掉芯片封装而不会影响芯片及连线。
该过程一般在非常干燥的条件下进行,因为水的存在可能会侵蚀已暴露的铝线连接(这就可能造成解密失败)。
接着在超声池里先用丙酮清洗该芯片以除去残余硝酸,然后用清水清洗以除去盐分并干燥。
没有超声池,一般就跳过这一步。
这种情况下,芯片表面会有点脏,但是不太影响紫外光对芯片的操作效果。
最后一步是寻找保护熔丝的位置并将保护熔丝暴露在紫外光下。
一般用一台放大倍数至少100倍的显微镜,从编程电压输入脚的连线跟踪进去,来寻找保护熔丝。
若没有显微镜,则采用将芯片的不同部分暴露到紫外光下并观察结果的方式进行简单的搜索。
操作时应用不透明的纸片覆盖芯片以保护程序存储器不被紫外光擦除。
将保护熔丝暴露在紫外光下5~10分钟就能破坏掉保护位的保护作用,之后,使用简单的编程器就可直接读出程序存储器的内容。
对于使用了防护层来保护EEPROM单元的单片机来说,使用紫外光复位保护电路是不可行的。
对于这种类型的单片机,一般使用微探针技术来读取存储器内容。
在芯片封装打开后,将芯片置于显微镜下就能够很容易的找到从存储器连到电路其它部分的数据总线。
由于某种原因,芯片锁定位在编程模式下并不锁定对存储器的访问。
利用这一缺陷将探针放在数据线的上面就能读。
EMC(义隆)8K烧写器 说明书

EMC(义隆)8K 烧写器使用手册书 EMC(义隆)烧写器 DWTR 8K 使用手册(V.HUSOON20100817) 前言 我们做过很多义隆(EMC)的芯片解密和破解,样片客户确认正确后,到客户自己 烧写芯片的时候,我们发现很多客户不怎么会使用 EMC 的编程器。
针对 EM78 系 列单片机一次性烧写 (OTP) 芯片, 义隆公司推出了高性能带液晶显示介面的 EM78 全系列烧录器:DWRITER。
它可以烧入目前义隆公司生产的 EM78 系列 OTP 单片 机:EM78P153/156/447/458/459/451 等。
但由于 EMC 的专用烧录器“DWTR 8K” 说明书不详细,并且都是英文的,界面不是很友好,客户使用比较困难,比 5K ,经常会出现一些问题,所以下面我 的还难用(DWTR 5K 使用说明下载地址) 们以图文形式讲解一下 EMC 的 8K 专用烧录器“DWTR 8K”的使用流程. 单片机解密热线:021-******** 56311936 企业 QQ:800015035沪生电子 陈金林 2010.8.18上海沪生电子-单片机解密专家 021-******** 021-******** EMC(义隆)8K 烧写器使用手册书 DWTR 8K 是在 5K 的基础上升级的一款专业用于 EMC 系列单片机烧写的编程 器。
相对于 5K,8K 编程器支持的功能和型号更多,运用更广泛,检测性能更 强大。
目前我们解密 EMC 系列单片机提供的也都是 DWTR 8K 的熔丝配置位 (5K 编程器于 2010 年已经停产) 。
DWTR 8K 分为工规和商规两种规格(工规和商规两种主控芯片不同,通过更换 主芯片来实现工规和商规的变换,不需要换编程器) ,分别用于工业级和商业级 单片机的烧写;商业级和工业级的单片机的区别简单的理解为就是工业级的后 面带有 N 字样,例如:EM78P156E 的是商业级,EM78P156N 就是工业级的。
NEC单片机解密

1. V850ES/Sx1/2 型号命名规则:70F32** 汽车仪表盘
uPD703200,uPD703201,uPD703204, uPD70F3201,uPD70F3204,
uPD703249,uPD703260,uPD703261,uPD703262,uPD703263, uPD70F3261,uPD70F3263
uPD789462,uPD789464,uPD789466,uPD789467, uPD78F9468
uPD789477,uPD789478,uPD789479,uPD789488,uPD789489, uPD78F9478,uPD78F9479, uPD78F9488,uPD78F9489,
uPD703101,uPD703102, uPD70F3102
3. 78K0/Kx1+ 型号命名规则:78F01**H 或 7801**H
uPD780101H,uPD780102H,uPD780103H, uPD78F0103H,
uPD780111H,uPD780112H,uPD780113H,uPD780114H, uPD78F0114H,
uPD780131H,uPD780132H,uPD780133H,uPD780134H,uPD780136H,uPD780138H, uPD78F0134H,uPD78F0138H,
uPD780111,uPD780112,uPD780113,uPD780114, uPD78F0114,
uPD780131,uPD780132,uPD780133,uPD780134,uPD780136,uPD780138, uPD78F0134,uPD78F0138,
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ELAN义隆系列单片机解密
由台湾ELAN 设计、制造的EM78系列8位元单片机以它低价为优势,广泛应用于:大小家电类、通讯类、玩具游戏类、计算机及周边类、智能卡类、汽车及防盗类、医用保健类、仪表类、灯光控制类、音响类、手机及周边类等。
ELAN义隆EM78P、EM78系列单片机解密型号:
HOLTEK合泰系列单片机解密
HOLTEK单片机:台湾盛扬半导体的单片机,价格便宜,种类较多,但抗干扰较差,适用于消费类产品. HOLTEK 合泰HT46/47/48/49、HT其它单片机解密型号:
MICON麦肯系列单片机解密
由台湾MICON 麦肯公司设计的OTP/MASK掩膜型8 位单片机自1997 年推向市场以来深受广大用户欢迎,MDT 系列单片机与PIC 相比最大特点是温度范围为工业级最大工作频率可达到20MHz 不分型号和后缀及售价十分便宜
SONIX松翰系列单片机解密
应用领域:
电子玩具产品:发声玩具、遥控玩具、音乐玩具、早教机、电子词典、电子故事书等小家电产品:电风扇、电暖器、消毒柜、微波炉、电磁炉、电饭煲、电子炖盅等
遥控器:电视、空调、VCD、DVD、机顶盒遥控器
充电器:锂电、镍氢、镍铬等智能充电器
电子称:厨房称、人体称、口袋称、脂肪称
松翰(SONIX)SN8P全系列单片机解密型号:
PORTEK普泰系列单片机解密
普泰半导体凭借着对产业趋势的掌握及卓越技术之极致深耕,在半导体产业界占一席之地。
从各项消费性电子产品的研发设计,兼顾客户多样化不同的需求;普泰提供了长期及稳定的产品,让客户快速进入市场以确保产品竞争优势,更降低了客户生产成本。
普泰(PORTEK)PTK87XX全系列单片机解密型号:
TENX十速系列单片机解密
八位单片机可兼容PIC/EMC等芯片,其具备相等或更优越抗干扰功能,适用于频道选择器、天线控制系统、功率放大器、智能型芳香机、超声波测距仪、遥控风扇、负离子风扇、遥控器、电卷发器、电动窗帘、按摩器、按摩椅、按摩鞋、按摩棒、雾化器、豆浆机、打蛋机、咖啡壶、小家电、密码锁、定时器等消费产品应用;四位单片机可实现定时、时钟、温度、湿度、倒计时等不同功能及组合,具标准芯片及依客户所需选择最佳性价比之四位单片机母体设计;USB控制芯片可兼容赛普拉斯( Cypress )系列芯片,适用于游戏机、跳舞毯、功夫机、手柄、鼠标、个人音箱等USB产品,具备优越之性价比。
十速(TENX)TM58P、TP66P全系列单片机解密:
NTK中颖系列单片机解密
中颖(NTK)系列MCU单片机IC芯片解密:
SH69P25SH69P26SH69P31SH69P42SH69P43 SH69P44SH69P46SH69P48SH69P56SH69P461 SH69P561SH69P801SH69P802SH69P822SH69P842/862
不断更新中……
SST89CXX系列单片机解密
SST89CXX系列单片机解密型号:
ZILOG系列单片机解密
Z8单片机是Zilog公司的产品,采用多累加器结构,有较强的中断处理能力,开发工具价廉物美.Z8单片机以低价位面向低端应用.我想很多人都知道Z80单板机,直到90年代后期,很多大学的微机原理还是讲述Z 80.
ISSI系列单片机芯片解密
IS89C51IS89C52IS89C54IS89C58IS89C51A IS89C52A IS89C64IS89E54IS89E58IS89E64 IS89C5x IS89C6x IS89Exx
不断更新中……。