单片机

单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。

取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。

分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。

计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。

一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。

下面我们将举个实例来说明指令的执行过程:

开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。

例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器,

0000H单元中已存放74H,0001H单元中已存放E0H。当单片机开始运行时,首先是进入取指阶段,其次序是:

1 程序计数器的内容(这时是0000H)送到地址寄存器;

2 程序计数器的内容自动加1(变为0001H);

3 地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中;

4 CPU使读控制线有效;

5 在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。

至此,取指阶段完成,进入译码分析和执行指令阶段。

由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时PC已为0001H。指令译码器结合时序部件,产生74H操作码的微操作系列,使数字E0H从0001H单元取出。因为指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令的执行完毕。单片机中PC=0002H,PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。CPU就是这样一条一条地执行指令,完成所有规定的功能。

围观 354

上机1 发光二极管的闪烁

;开关断开,发光二极管灭;开关闭合,奇偶数发光二极管间隔0.1s交替点亮。

ORG 0

AJMP MAIN

ORG 0100H

MAIN: JB P3.0,DK

BH: MOV P1,#55H

ACALL YS01S

MOV P1,#0AAH

ACALL YS01S

SJMP MAIN

DK: MOV P1,#0FFH

SJMP MAIN

;延时0.1s 

YS01S: MOV R4,#100 

LOOP: MOV R3,#249 

LOOP1: NOP 
       
NOP                          

DJNZ R3,LOOP1        

NOP 
       
DJNZ R4,LOOP        

RET        

END 

上机2 秒表、倒计时 

;(1)可设置初值的秒表          

JS EQU 60

CZ EQU 0    

ORG 0000H    

AJMP MAIN  
 
ORG 0100H 

MAIN:    MOV DPTR,#TAB          

MOV R0,#CZ 

LOOP:  ACALL HBCD    

ACALL DISP    

INC R0 
   
CJNE R0,#JS,LOOP    

MOV R0,#0   
 
SJMP LOOP 
 
HBCD:    MOV A,R0          

MOV B,#10    

DIV AB    

MOV R1,A    

MOV R2,B
   
RET  

DISP:    MOV R3,#10 

LOOP3:   MOV A,R1

MOVC A,@A+DPTR          

MOV P2,A          

MOV P3,#01H    

ACALL YS50MS    

MOV P3,#0   
 
MOV A,R2 
         
MOVC A,@A+DPTR    

MOV P2,A    

MOV P3,#02H    

ACALL YS50MS    

MOV P3,#0    

DJNZ R3,LOOP3   
 
RET 
 

YS50MS:  MOV R4,#50 

LOOP1:   MOV R5,#249 

LOOP2:   NOP          

NOP    

DJNZ R5,LOOP2    

NOP 
   
DJNZ R4,LOOP1   
 
RET

;共阳数码管显示1~9的查表值   

TAB:   DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H     

END 
 
;(2)可设置初值的倒计时,最大初值99          

DJS EQU 0    

CZ EQU 10    

ORG 0000H    

AJMP MAIN   
 
ORG 0100H 

MAIN:    MOV DPTR,#TAB          

MOV R0,#CZ 

LOOP:  ACALL HBCD    

ACALL DISP    

DEC R0 
  
CJNE R0,#DJS,LOOP 
      
ACALL HBCD 

NEXT:    ACALL DISP   
 
SJMP NEXT 
 
HBCD:    MOV A,R0 

MOV B,#10

DIV AB

MOV R1,A

MOV R2,B

RET DISP:

MOV R3,#10

LOOP3: MOV A,R1

MOVC A,@A+DPTR

MOV P2,A

MOV P3,#01H

ACALL YS50MS

MOV P3,#0

MOV A,R2

MOVC A,@A+DPTR

MOV P2,A

MOV P3,#02H

ACALL YS50MS

MOV P3,#0

DJNZ R3,LOOP3

RET

YS50MS:  MOV R4,#50 

LOOP1:   MOV R5,#249 

LOOP2:   NOP          

NOP    

DJNZ R5,LOOP2    

NOP 
   
DJNZ R4,LOOP1   
 
RET 
 
;共阳数码管显示1~9的查表值  
 
TAB:   DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H  

END 

上机3 交通灯的模拟

;模拟十字路口红绿灯          

GREENL EQU 50    

GREENS EQU 6    

YELLOWS EQU 4    

ORG 0    

AJMP MAIN   
 
ORG 0100H 

MAIN:    CLR P1.1          

CLR P1.6   
 
MOV R0,#GREENL 

DXLDL:   ACALL YS05S          

DJNZ R0,DXLDL   
 
MOV R0,#GREENS 

DXLDS:   CPL P1.1          

ACALL YS05S    

DJNZ R0,DXLDS    

SETB P1.1 
  
MOV R0,#YELLOWS  

DXHDS:   CPL P1.2          

ACALL YS05S    

DJNZ R0,DXHDS   
 
SETB P1.2 

SETB P1.6

CLR P1.4

CLR P1.3

MOV R0,#GREENL

NBLDL: ACALL YS05S

DJNZ R0,NBLDL

MOV R0,#GREENS

NBLDS: CPL P1.4

ACALL YS05S

DJNZ R0,NBLDS

SETB P1.4

MOV R0,#YELLOWS

NBHDS: CPL P1.5

ACALL YS05S

DJNZ R0,NBHDS

SETB P1.5

SETB P1.3

SJMP MAIN

YS50MS: MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H

SETB TR0 

LOOP:    JBC TF0,NEXT          

SJMP LOOP 

NEXT:  RET  

YS05S:   MOV R1,#10 

LOOP1:   ACALL YS50MS         

 DJNZ R1,LOOP1    

RET    

END 

附:带数字显示的交通灯模拟 

;模拟带数字显示的十字路口红绿灯

GREENL EQU 25

GREENS EQU 3

YELLOWS EQU 2

REDL EQU 30

ORG 0

AJMP MAIN

ORG 0100H

MAIN: MOV DPTR,#TAB

MOV P3,#0

MOV R0,#GREENL

MOV R1,#REDL

CLR P1.1

CLR P1.6

DXLDL: ACALL DISP05S

ACALL DISP05S

DEC R1

DJNZ R0,DXLDL

MOV R0,#GREENS

DXLDS: CPL P1.1

ACALL DISP05S

CPL P1.1

ACALL DISP05S     

DEC R1 
   
DJNZ R0,DXLDS    

SETB P1.1 
  
MOV R0,#YELLOWS 

DXHDS:   CPL P1.2          

ACALL DISP05S   
 
CPL P1.2 
         
ACALL DISP05S     

DEC R1 
   
DJNZ R0,DXHDS    

SETB P1.2   
 
SETB P1.6 
   
MOV R0,#REDL       

MOV R1,#GREENL       

CLR P1.4       

CLR P1.3  
  
NBLDL:   ACALL DISP05S          

ACALL DISP05S    

DEC R0 
  
DJNZ R1,NBLDL  
  
MOV R1,#GREENS 

NBLDS:   CPL P1.4          

ACALL DISP05S   
 
CPL P1.4 
         
ACALL DISP05S     

DEC R0    

DJNZ R1,NBLDS    

SETB P1.4 
  
MOV R1,#YELLOWS 

NBHDS:   CPL P1.5          

ACALL DISP05S   
 
CPL P1.5 
        
ACALL DISP05S     

DEC R0 
   
DJNZ R1,NBHDS    

SETB P1.5    SETB P1.3   

AJMP MAIN 
 
DISP05S: MOV R2,#10 

LOOP:    MOV 20H,R0  
     
ACALL HBCD 

ACALL DXDISP       

MOV 20H,R1       

ACALL HBCD       

ACALL NBDISP    

DJNZ R2,LOOP   
 
RET 
 
HBCD:    MOV A,20H          

MOV B,#10       

DIV AB       

MOV 21H,A       

MOV 22H,B  
     
RET 

;东西路口显示 

DXDISP:  MOV A,21H          

MOVC A,@A+DPTR       

MOV P2,A       

SETB P0.5      

CLR P0.4       

ACALL YS12MS5       

CLR P0.5  
     
MOV A,22H 

MOVC A,@A+DPTR      

MOV P2,A       

SETB P0.4       

CLR P0.5       

ACALL YS12MS5       

CLR P0.4  
     
RET  

;南北路口显示 

NBDISP:  MOV A,21H          

MOVC A,@A+DPTR       

MOV P3,A       

SETB P0.7       

CLR P0.6       

ACALL YS12MS5       

CLR P0.7  
     
MOV A,22H 
         
MOVC A,@A+DPTR       

MOV P3,A       

SETB P0.6       

CLR P0.7       

ACALL YS12MS5  
     
CLR P0.6 

RET            
 
;延时12.5MS 

YS12MS5: MOV TMOD,#01H          

MOV TH0,#0CFH         

MOV TL0,#2CH  
     
SETB TR0 

LOOP1:   JBC TF0,NEXT          

SJMP LOOP1 

NEXT:    RET  

;共阳极0~F的数值 

TAB:   DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H        

DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH  
   
END

来源:互联网

围观 268

(MCU测试部分)

一.MCU测试

1.mcu工作电压及电流,
测试MCU工作电压是否在工作电压范围,电压过高会影响MCU的正常工作甚至烧坏,工作电压过低会影响MCU的外围电路驱动能力,甚至导致外围电路不能正常工作。

2. mcu静态电流
静态电流是衡量MCU性能的主要参数之一,静态电流越小越好,根据MCU规格书测试静态电流是否符合要求,一旦MCU有损坏的话,静态电流就会变大,会增加产品的静耗,致使产品整体功耗增加。

3.mcu的振荡频率
如MCU为外接晶振型的,需要检测其正常工作时MCU的晶振输入脚的振荡频率是否正确,如果晶振振荡频率不符合要求则会影响产品的定时及延时,甚至不能正常工作。

二..产品的组合功能测试(MCU在线系统测试)

1.测试单片机软件功能的完善性。这是针对所有单片机系统功能的测试,测试软件是否写的正确完整。

2.上电、掉电测试。在使用中用户必然会遇到上电和掉电的情况,可以进行多次开关电源,测试单片机系统的可靠性。

3.老化测试。测试长时间工作情况下,单片机系统的可靠性。必要的话可以放置在高温,高压以及强电磁干扰的环境下测试。

4、ESD和EFT等测试。可以使用各种干扰模拟器来测试单片机系统的可靠性。例如使用静电模拟器测试单片机系统的抗静电ESD能力;使用突波杂讯模拟器进行快速脉冲抗干扰EFT测试等等。
还可以模拟人为使用中,可能发生的破坏情况。例如用人体或者衣服织物故意摩擦单片机系统的接触端口,由此测试抗静电的能力。用大功率电钻靠近单片机系统工作,由此测试抗电磁干扰能力等

来源:百度文库

围观 548

本文介绍了单片机内部密码破解的常用方法,重点说明了侵入型攻击 / 物理攻击方法的详细步骤,最后,从应用角度出发,提出了对付破解的建议。 

1、引言 

单片机(Microcontrollers)一般都有内部 ROM / EEPROM / FLASH供用户存放程序。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就是所谓拷贝保护或者说锁定功能。事实上,这样的保护措施很脆弱,很容易被破解。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序。因此,作为电子产品的设计工程师非常有必要了解当前单片机攻击的最新技术,做到知己知彼,心中有数,才能有效防止自己花费大量金钱和时间辛辛苦苦设计出来的产品被人家一夜之间仿冒的事情发生。  

2、单片机攻击技术 

目前,攻击单片机主要有四种技术,分别是:
 
(1)软件攻击 

该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期某系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。 

(2)电子探测攻击 

该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。

(3)过错产生技术 

该技术使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止保护电路工作或强制处理器执行错误操作。时钟瞬态跳变也许会复位保护电路而不会破坏受保护信息。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行。 

(4)探针技术  

该技术是直接暴露芯片内部连线,然后观察、操控、干扰单片机以达到攻击目的。 

为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理攻击),这类攻击需要破坏封装,然后借助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。所有的微探针技术都属于侵入型攻击。另外三种方法属于非侵入型攻击,被攻击的单片机不会被物理损坏。在某些场合非侵入型攻击是特别危险的,这是因为非侵入型攻击所需设备通常可以自制和升级,因此非常廉价。 

大部分非侵入型攻击需要攻击者具备良好的处理器知识和软件知识。与之相反,侵入型的探针攻击则不需要太多的初始知识,而且通常可用一整套相似的技术对付宽范围的产品。因此,对单片机的攻击往往从侵入型的反向工程开始,积累的经验有助于开发更加廉价和快速的非侵入型攻击技术。  

3、侵入型攻击的一般过程 

侵入型攻击的第一步是揭去芯片封装。有两种方法可以达到这一目的:第一种是完全溶解掉芯片封装,暴露金属连线。第二种是只移掉硅核上面的塑料封装。第一种方法需要将芯片绑定到测试夹具上,借助绑定台来操作。第二种方法除了需要具备攻击者一定的知识和必要的技能外,还需要个人的智慧和耐心,但操作起来相对比较方便。 

芯片上面的塑料可以用小刀揭开,芯片周围的环氧树脂可以用浓硝酸腐蚀掉。热的浓硝酸会溶解掉芯片封装而不会影响芯片及连线。该过程一般在非常干燥的条件下进行,因为水的存在可能会侵蚀已暴露的铝线连接。 

接着在超声池里先用丙酮清洗该芯片以除去残余硝酸,然后用清水清洗以除去盐分并干燥。没有超声池,一般就跳过这一步。这种情况下,芯片表面会有点脏,但是不太影响紫外光对芯片的操作效果。
 
最后一步是寻找保护熔丝的位置并将保护熔丝暴露在紫外光下。一般用一台放大倍数至少100倍的显微镜,从编程电压输入脚的连线跟踪进去,来寻找保护熔丝。若没有显微镜,则采用将芯片的不同部分暴露到紫外光下并观察结果的方式进行简单的搜索。操作时应用不透明的纸片覆盖芯片以保护程序存储器不被紫外光擦除。将保护熔丝暴露在紫外光下5—10分钟就能破坏掉保护位的保护作用,之后,使用简单的编程器就可直接读出程序存储器的内容。
 
对于使用了防护层来保护 EEPROM 单元的单片机来说,使用紫外光复位保护电路是不可行的。对于这种类型的单片机,一般使用微探针技术来读取存储器内容。在芯片封装打开后,将芯片置于显微镜下就能够很容易的找到从存储器连到电路其它部分的数据总线。由于某种原因,芯片锁定位在编程模式下并不锁定对存储器的访问。利用这一缺陷将探针放在数据线的上面就能读到所有想要的数据。在编程模式下,重启读过程并连接探针到另外的数据线上就可以读出程序和数据存储器中的所有信息。 

还有一种可能的攻击手段是借助显微镜和激光切割机等设备来寻找保护熔丝,从而寻查和这部分电路相联系的所有信号线。由于设计有缺陷,因此,只要切断从保护熔丝到其它电路的某一根信号线,就能禁止整个保护功能。由于某种原因,这根线离其它的线非常远,所以使用激光切割机完全可以切断这根线而不影响临近线。这样,使用简单的编程器就能直接读出程序存储器的内容。 

虽然大多数普通单片机都具有熔丝烧断保护单片机内代码的功能,但由于通用低档的单片机并非定位于制作安全类产品,因此,它们往往没有提供有针对性的防范措施且安全级别较低。加上单片机应用场合广泛,销售量大,厂商间委托加工与技术转让频繁,大量技术资料外泻,使得利用该类芯片的设计漏洞和厂商的测试接口,并通过修改熔丝保护位等侵入型攻击或非侵入型攻击手段来读取单片机的内部程序变得比较容易。  

4、应对单片机破解的几点建议 

任何一款单片机从理论上讲,攻击者均可利用足够的投资和时间使用以上方法来攻破。所以,在用单片机做加密认证或设计系统时,应尽量加大攻击者的攻击成本和所耗费的时间。这是系统设计者应该始终牢记的基本原则。

围观 512

先说一个概念:调试,在企业程序设计里(我把企业商务类型的软件开发叫企业程序设计,把单片机与驱动程序这样接触底层汇编与硬件相关的程序设计叫底层程序设计),调试一般都用来跟踪变量的赋值过程,以及查看内存堆栈的内容,查看这些内容的目的在于观察变量的赋值过程与赋值情况从而达到调试的目的。由于企业程序的宿主就是开发它的计算机本身,因此企业程序设计比起底层程序设计,特别是单片机的程序设计调试来的更直观,调试也更方便。

单片机的程序设计调试分为两种,一种是使用软件模拟调试,意思就是用开发单片机程序的计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的,但是软件调试存在一些问题,如计算机本身是多任务系统,划分执行时间片是由操作系统本身完成的,无法得到控制,这样就无法时时的模拟单片机的执行时序,也就是说 ,不可能像真正的单片机运行环境那样执行的指令在同样一个时间能完成(往往要完成的比单片机慢)。为了解决软件调试的问题,第二种是硬件调试,硬件调试其实也需要计算机软件的配合,大致过程是这样的:计算机软件把编译好的程序通过串行口、并行口或者USB口传输到硬件调试设备中(这个设备叫仿真器),仿真器仿真全部的单片机资源(所有的单片机接口,并且有真实的引脚输出),仿真器可以接入实际的电路中,然后与单片机一样执行。同时,仿真器也会返回单片机内部内存与时序等情况给计算机的辅助软件,这样 就可以在软件里看到真实的执行情况。不仅如此,还可以通过计算机断的软件实现单步、全速、运行到光标的常规调试手段。


图1:仿真器

总结一下两者的不同与相同:

相同点:

1:都可以检测单片机执行时序下的片内资源情况(如R0-R7 、PC计数器等)

2:可以实现断点、全速、单步、运行到光标等常规调试手段。

不同:

1:软件调试无法实现直接连接硬件电路的调试,只能通过软件窗口虚拟硬件端口的电平输出情况而仿真器可以实现与单片机一样的功能的硬件连接,从某种意义上说这个时候仿真器就是一个单片机。

2:软件调试执行单片机指令的时间无法与真实的单片机执行时间画上等号,也就是说如果一个程序在单片机中要执行300us,可能在计算机中执行的时间可能会比这个长很多,而且无法预料。仿真器则是完全与单片机相同。

3:软件调试只能是一种初步的,小型工程的调试,比如一个只有几百上千行的代码的程序,软件调试能很好的完成,如果是一个协调系统,可能还需要借助几个单片机仿真器和相关的仪器才能解决。

4:软件仿真不需要额外花钱,而硬件需要,一个仿真器一般都上千元,同时可以仿真许多种单片机的工作。

最后,调试一般都是在发生错误与意外的情况下使用的,如果程序能正常执行调试很多时候是用不上的,所以最高效率的程序开发还是程序员自己做好规范,而不是指望调试来解决问题。

下面将具体介绍如何使用Keil uVision 来软件调试单片机程序。

首先:打开一个已经编译通过的单片机项目(如何新建与编译单片机程序项目这里省略)

选择Debug下面的Start/Stop Debug Session,这个选项可以打开调试也可以关闭调试

接下来看到的窗口就是调试窗口了:

下面具体说说相关子窗口的功能:

1:左侧的ProjectWorkspace

Regs是片内内存的相关情况值,Sys是系统一些累加器、计数器等。Regs很简单就不多说。具体介绍一下Sys

a 累加器ACC,往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。

b 寄存器B ,主要用于乘法和除法操作

sp

sp_max

dptr 数据指针DPTR

PC $

states 执行指令的数量

sec 执行指令的时间累计(单位 秒)

psw 程序状态标志寄存器PSW,八位寄存器,用来存放运算结果的一些特征,如有无进位、借位等。

p 奇偶标志P。反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个1(如11001100B,其中有4个1),则P为0,否则,P=1。

f1

ov 溢出标志位OV。MCS-51反映带符号数的运算结果是否有溢出,有溢出时,此位为1,否则为0。

rs

f0

ac 辅助进位标志AC。又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1状态,否则为0。

cy 进位标志CY(PSW7)。它表示了运算是否有进位(或借位)。如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0

由于PSW存放程序执行中的状态,故又叫程序状态字?运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(又称布尔处理机)

根据指令执行的不同上述值会有相应的变化,也正是为了监测这些在单片机中看不到的值而达到调试的目的。

虽然软件调试无法实现硬件调试那样的信号输出,但是可以通过软件窗口的模拟监测输出信号的高低电平以及单片机相关端口的变化。

上图所示,Port0,Port1,Port2,Port3就对应于单片机的四个P0,P1,P2,P3 口,共32个针脚。

这是全部打开后的效果。

有了输出,就应该有输入的设置:

这个按钮可以打开输入预设窗口,输入值窗口如下:

选择不同的Int Source 会有不同的 Selected Interrupt的变化,通过选择与赋值达到模拟输入的目的。

接下来是串口的设置:


这是设置串口的窗口

监测窗口数据还有一个窗口:

点击:

将会出现,这个窗口可以监测从串口输出的ASCII代码。

关于串口的问题,以后我会有专门的文章介绍,这里就这样大致介绍一下。

最下面还有一个定时器的设置:

3个定时器与一个看门狗,设置定时器的数量与工程选择的单片机种类有关系,如果是8051就只有2个定时器,如果是选择8052 就有3个定时器了。

定时器的设置很简单:

参考的数很多,这里暂时省略了,以后以专门的篇幅介绍。

下面再介绍一下一些常用的调试按钮:

就是Reset ,相当于单片机最简系统的复位按钮,按下后,所有的系统状态将变成初始状态

这是全速运行,相当于单片机的通电执行。

这个就是停止全速运行的按钮。

step into 逐语句;进入并单步执行;单步执行

step over 逐过程

step out 跳出

执行到断点处

可以在代码所在窗口的最左边右击按钮插入一个断点,如下图所示:

有了这个功能,你就可以控制监控要执行到某位置时系统的状态。

最后在介绍一下一个很实用的功能:

这个是Disassembly Windows,按下后可以把C51 Disassembly 为相应的汇编语言,如果你有 相应的汇编知识的话就可以对比C51 与汇编的对比了。由于汇编的效率高很多,这也可以作为查看C51执行效率的一个方法。

上图中就可以看出,C51 代码是如何被解释为汇编的。

其实调试还有很多的功能,我这里只是介绍了一小部分,希望能起到抛砖引玉的作用,更多的细节需要你自己去发掘与学习。

文章来源:博客园

围观 296

页面

订阅 RSS - 单片机