单片机AT89S52程序设计与调试.ppt

上传人:M****1 文档编号:571478881 上传时间:2024-08-11 格式:PPT 页数:60 大小:2.88MB
返回 下载 相关 举报
单片机AT89S52程序设计与调试.ppt_第1页
第1页 / 共60页
单片机AT89S52程序设计与调试.ppt_第2页
第2页 / 共60页
单片机AT89S52程序设计与调试.ppt_第3页
第3页 / 共60页
单片机AT89S52程序设计与调试.ppt_第4页
第4页 / 共60页
单片机AT89S52程序设计与调试.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《单片机AT89S52程序设计与调试.ppt》由会员分享,可在线阅读,更多相关《单片机AT89S52程序设计与调试.ppt(60页珍藏版)》请在金锄头文库上搜索。

1、 第第5章章 程序设计与调试程序设计与调试n5.1 汇编语言程序设计汇编语言程序设计n5.2 C51程序设计程序设计n5.3 程序调试方法程序调试方法1 源程序的编辑源程序的编辑 源源程程序序的的编编写写要要依依据据8051汇汇编编语语言言的的基基本本规规则则,特特别别要要用好常用的汇编命令(即伪指令),例如下面的程序段:用好常用的汇编命令(即伪指令),例如下面的程序段: ORG 0040H MOV A,#7FH MOV R1,#44H END 这这里里的的ORG和和END是是两两条条伪伪指指令令,其其作作用用是是告告诉诉汇汇编编程程序序此此汇汇编编源源程程序序的的起起止止位位置置。编编辑辑好

2、好的的源源程程序序应应以以 .ASM或或.A51扩展名存盘扩展名存盘(取决于汇编器要求取决于汇编器要求),以备汇编程序调用。,以备汇编程序调用。 5.1 汇编语言程序设计汇编语言程序设计2 源源程程序序经经过过机机器器汇汇编编后后,形形成成的的若若干干文文件件中中含含有有两两个个主主要要文文件件,一一是是列列表表文文件件,另另一一个个是是目目标标码码文文件件。因因汇汇编编软软件件的的不同,文件的格式及信息会有一些不同。但主要信息如下:不同,文件的格式及信息会有一些不同。但主要信息如下:列表文件主要信息为:列表文件主要信息为: 地地 址址 目标码目标码 汇编程序汇编程序 ORG 0040H 00

3、40H 747F MOV A,#7FH 0042H 7944 MOV R1,#44H END 目标码文件主要信息为:目标码文件主要信息为: 首地址首地址 末地址末地址 目标码目标码 0040H 0044H 747F79443 伪指令指令 伪伪指指令令是是汇汇编编程程序序能能够够识识别别并并对对汇汇编编过过程程进进行行某某种种控控制制的的汇汇编编命命令令。它它不不是是单单片片机机执执行行的的指指令令,所所以以没没有有对对应应的的可可执执行行目目标标码码,汇汇编编后后产产生生的的目目标标程程序序中中不不会会再再出出现现伪伪指令。指令。1、起始地址设定伪指令:、起始地址设定伪指令: ORG格式为:格

4、式为:ORG 表达式表达式 该该指指令令的的功功能能是是向向汇汇编编器器说说明明下下面面紧紧接接的的程程序序代代码码或或常常数数存存放放的的起起始始地地址址(程程序序存存储储器器地地址址)。在在一一个个源源程程序序中中,可可以以多多次次使使用用ORG伪伪指指令令规规定定不不同同程程序序段段或或数数据据段段存存放放的的起起始始地地址址,但但要要求求地地址址值值由由小小到到大大依依序序排排列列,不不允允许许空空间间重叠。重叠。2、汇编结束伪指令:、汇编结束伪指令: END 汇汇编编程程序序遇遇到到END伪伪指指令令后后即即结结束束汇汇编编,处处于于END之之后的程序,汇编程序将不处理。后的程序,汇

5、编程序将不处理。4 ORG和和END例子例子ORG 0 ;该段程序的机器码从地址该段程序的机器码从地址0单元开始存放单元开始存放AJMP STARTORG3;该段程序的机器码从地址该段程序的机器码从地址3单元开始存放单元开始存放AJMP INT0_PROCORG 0100H; 0100H地址单元开始存放地址单元开始存放START: MOV A,#30H ORG 1000H; 1000H地址单元开始存放地址单元开始存放INT0_PROC: CLR IE0 END; 所有汇编程序结束所有汇编程序结束5 标号:标号: DB 字节数据表字节数据表 功功能能是是从从标标号号指指定定的的地地址址开开始始,

6、在在程程序序存存储储器器中中定定义义字字节节数数据据。字字节节数数据据表表可可以以是是一一个个或或多多个个字字节节数数据据、字字符符串串或或表表达达式式。该该伪伪指指令令将将字字节节数数据据表表中中的的数数据据根根据据从从左左到到右右的的顺顺序序依依次次存存放放在在指指定定的的存存储储单单元元中中。一一个个数数据据占占一一个个存存储储单单元元。例如:例如:ORG 500HDB 8,10,18DB “ABC”汇汇编编后后,500H开开始始顺顺序序存存放放:08H,0AH,12H,41H,42H,43H3、字节数据定义伪指令、字节数据定义伪指令 DB6 标号:标号: DW 字数据表字数据表 功功能

7、能是是从从标标号号指指定定的的地地址址单单元元开开始始,在在程程序序存存储储器器中中定定义义字字数数据据。该该伪伪指指令令将将字字或或字字表表中中的的数数据据根根据据从从左左到到右右的的顺顺序序依依次次存存放放在在指指定定的的存存储储单单元元中中。16位位的的二二进进制制数数,高高8位位存存放在低地址单元,低放在低地址单元,低8位存放在高地址单元。例如:位存放在高地址单元。例如: ORG 1400HDATA:DW 324AH,3CH 汇汇 编编 后后 , ( 1400H) =32H, ( 1401H) = 4AH,(1402H)=00H,(,(1403H)=3CH。4、字数据定义伪指令、字数据

8、定义伪指令 DW7 符号名符号名 EQU 表达式表达式 功功能能是是将将表表达达式式的的值值或或特特定定的的某某个个汇汇编编符符号号定定义义为为一一个个指定的符号名。例如:指定的符号名。例如:LEN EQU 10; 把把BLOCK单元开始存放的单元开始存放的10SUM EQU 21H;个无符号数进行求和个无符号数进行求和BLOCK EQU 22H;并将结果存入并将结果存入SUM单元中单元中 CLR A MOV R7,LEN MOV R0,BLOCKLOOP: ADD A,R0 INC R0 DJNZ R7,LOOP MOV SUM,A END5、赋值伪指令、赋值伪指令 EQU8 符号名符号名

9、DATA 表达式表达式 功功能能是是将将表表达达式式的的值值作作为为内内部部RAM地地址址赋赋给给一一个个指指定定的的符号名。例如:符号名。例如:LEN EQU 10; SUM DATA 21H; 与与EQU不同之处是明确指出不同之处是明确指出BLOCK DATA 22H; 符号名代表内部符号名代表内部RAM地址地址 CLR A MOV R7,LEN MOV R0,BLOCKLOOP: ADD A,R0 INC R0 DJNZ R7,LOOP MOV SUM,A END6、内部、内部RAM地址赋值伪指令地址赋值伪指令 DATA9 符号名符号名 BIT 表达式表达式 功功能能是是将将表表达达式式

10、的的值值作作为为位位地地址址赋赋给给一一个个指指定定的的符符号号名。例如:名。例如:SDABIT P1.0; 数据输出数据输出SCKBIT P1.1; 时钟输出时钟输出SHIFT_OUT:; 移位输出子程序移位输出子程序MOVR6, #8LP:RLC AMOVSDA, CSETB SCKNOPCLRSCKDJNZ R6, LPRET7、位地址赋值伪指令、位地址赋值伪指令 BIT10 ORG 0000HMOV DPTR, #2000H LPCLR: CLR AMOVX DPTR, A ; 0送送(DPTR)INC DPTR ; DPTR+1MOVA, DPHCJNE A, #30H,LPCLR

11、; 地址不到地址不到3000H再清零再清零LOOP: SJMP LOOP例例5.1 将外部将外部RAM2000H2FFFH的内容清零的内容清零11 ORG 0000HMOV R7, #10H ;共要在共要在16个字节中个字节中查找查找 MOV R1, #00H;暂存暂存0的个数的个数 MOV DPTR, #2000HRCMP: MOVX A, DPTR CJNE A, #0, NEXT ;比较取出内容与比较取出内容与00H相等吗相等吗? INC R1 ;相等则相等则0的个数加的个数加1NEXT: INC DPTR DJNZ R7, RCMP ;未完继续取出下一个数比较未完继续取出下一个数比较

12、MOV DPTR,#2100H MOV A,R1 MOVX DPTR,A ;相同数个数送相同数个数送2100HSJMP $例例5.2 在在2000H-200FH中查出有几个字节中查出有几个字节是零,把个数放在是零,把个数放在2100H单元中单元中 12 5.2 C51程序设计程序设计n5.2.1 C51的程序结构的程序结构n5.2.2 C51的数据类型与存储类型的数据类型与存储类型n5.2.3 C51的指针的指针n5.2.4 C51的函数与中断处理程序的函数与中断处理程序n5.2.5 C51程序实例程序实例 13 5.2.1 C51的程序结构的程序结构 与一般与一般C语言的结构相同,以语言的结

13、构相同,以main()函数为程序入函数为程序入口,程序体中包含若干语句还可以包含若干函数。口,程序体中包含若干语句还可以包含若干函数。 预处理语句预处理语句 类型类型 函数名函数名(参数表参数表) 数据说明部分数据说明部分; 执行语句部分执行语句部分; 由于没有操作系统的支持,由于没有操作系统的支持,main()必须设计成循环必须设计成循环结构或以循环结束结构或以循环结束,实际在进入,实际在进入main()之前,先执行了之前,先执行了一个汇编语言的初始化程序一个汇编语言的初始化程序Startup.A51, 完成必须的完成必须的环境初始化,如片内环境初始化,如片内RAM清零等。清零等。14 #i

14、nclude /其中包括其中包括SFR定义,要用到定义,要用到 P1sbit SQW=P10; /定义定义P1.0引脚引脚main() while(1)SQW=!SQW;/在在P1.0引脚上产生方波引脚上产生方波简单例子简单例子115 #include /要用到要用到sfr: P1void delay(void);/声明函数声明函数sbit SQW=P10; main() while(1) /无限循环无限循环 SQW=!SQW; /在在P1.0引脚上产生方波引脚上产生方波 delay(); void delay(void) int i,j ; for(i=0; i1000; i+)for(j=

15、0;j100;j+);简单例子简单例子216 C语言的关键字共有语言的关键字共有32个,根据关键字的作用,可分四类:个,根据关键字的作用,可分四类: (1)数数据据类类型型关关键键字字(12个个):char, double, enum, float, int, long, short, signed, struct, union, unsigned, void; ( 2) 控控 制制 语语 句句 关关 键键 字字 ( 12个个 ) : break, case, continue, default, do, else, for, goto, if, return, switch, while;

16、( 3) 存存 储储 类类 型型 关关 键键 字字 ( 4个个 ) : auto, extern, register, static; (4)其其它它关关键键字字(4个个):const, sizeof, typedef, volatile。标准标准(ANSI) C关键字关键字17 C51扩展的关键字扩展的关键字 18 5.2.2 C51的数据类型与存储类型的数据类型与存储类型1、基本数据类型、基本数据类型19 2、C51扩充定义的数据类型扩充定义的数据类型nsfr : 特殊功能寄存器特殊功能寄存器声明声明nsfr16 : sfr的的16位数据声明位数据声明nsbit : 特殊功能位声明特殊功能

17、位声明nbit : 位变量声明位变量声明 上上述述扩扩充充定定义义的的数数据据类类型型中中,只只有有bit类类型型是是普普通通变变量量类类型型与与int、char功功能能一一样样,可可用用于于定定义义变变量量或或函函数数。其其余余扩扩充充类型均与类型均与SFR有关。有关。 sfr SCON = 0X98; sfr16 T2 = 0xCC; /*T2L0CCH,T2H0CDH*/ sbit OV = PSW2; sbit P1_0=0x900; bit a,b,c; bit function1(void); b= function1(); if (b) return;20 sbit 使使用用关关

18、键键字字sbit可可以以独独立立访访问问可可位位寻寻址址对对象象中中的的某某一一位位,这这个个对对象象除除了了SFR外外,也也可可以以是是bdata区区定定义义的的变变量量。从从这这一点也可以看出一点也可以看出bit和和sbit的区别。例如:的区别。例如:bdata int ibase; *在位寻址区定义一个变量在位寻址区定义一个变量* bdata char array 4 *在位寻址区定义在位寻址区定义 一一 个数组个数组*sbit mybit_0 ibase0;sbit mybit_15ibase 15;sbit Ary07array0 7;sbit Ary37array3 7; 采采用用

19、这这种种方方法法定定义义可可位位寻寻址址变变量量时时要要求求基基址址对对象象的的存存储储器器类类型型为为bdata,操操作作符符“”后后面面的的位位位位置置的的最最大大值值取取决决于于指指定定的的基基址址类类型型,对对于于char来来说说是是07;对对于于int来来说说是是015;对于;对于long来说是来说是031。21 头文件头文件n所所有有特特殊殊功功能能寄寄存存器器的的定定义义都都在在C51的的头头文文件件中中定定义义,如如reg52.h,使使用用#include 语语句句包包含含需需要要的的头头文文件件即即可可直直接接使使用用定定义义完完成成的的特特殊殊功功能能寄寄存存器器或或位名称

20、;位名称;n参参看看文文件件reg51.h,reg52.h,at89x52.h等等,所所有有头头文件在文件在keilC51inc目录下。目录下。n常常用用头头文文件件有有:reg51.h math.h ctype.h stdio.h stdlib.h absacc.h。 reg51.h和和 reg52.h 定定义义特特殊殊功功能寄存器和位寄存器,能寄存器和位寄存器,math.h定义常用数学运算。定义常用数学运算。22 3、C51数据的存储类型数据的存储类型由由于于MCS-51结结构构的的特特殊殊性性,C51通通过过存存储储类类型型来来声声明明将变量定义在哪一个存储空间,存储类型如下表:将变量定

21、义在哪一个存储空间,存储类型如下表:23 对于非指针的普通变量,对于非指针的普通变量,定义格式为:定义格式为:存储类型存储类型 数据类型数据类型 变量名;变量名;也可写为:也可写为: 数据类型数据类型 存储类型存储类型 变量名;变量名;例如:例如:data char i, j, k; idata unsigned char display16; xdata unsigned int buf100;code unsigned char bcd_seg_tab10=0x40,0x7c, 0x12,0x18,0x2c,0x41,1,0x5c,0,0x8; /共阴共阴7段码段码 char data m

22、,n; unsigned int xdata len;float idata x,y,z; 变量的定义方法变量的定义方法24 变量的定义方法变量的定义方法 由由于于大大多多数数情情况况下下使使用用无无符符号号数数,为为了了书书写写简简便便,通通常常在在文件开头用文件开头用#define定义几种常用数据类型,如:定义几种常用数据类型,如:#define uchar unsigned char#define uint unsigned int#define ulong unsigned longdata uchar i,j, k;idata uint m,n;如有必要如有必要,可以用关键字:,可以

23、用关键字:_at_ 对对变量绝对定位变量绝对定位格式:格式: 存储类型存储类型 数据类型数据类型 变量名变量名 _at_ constant;Constant为定位的地址为定位的地址如:如:data char musich _at_ 0x29, musicl _at_ 0x2a; idata char buf8 _at_ 0x30;25 4、C51的存储模式的存储模式 定定义义C51变变量量时时,也也可可以以不不用用显显式式声声明明该该变变量量的的存存储类型,如:储类型,如:int i, j, k;unsigned char num; 一般使用小模式(缺省即是),当需要使用一般使用小模式(缺省即

24、是),当需要使用xdata或或pdata区时,通过显式声明变量的存储类型实现。区时,通过显式声明变量的存储类型实现。 在在这这种种情情况况下下,使使用用默默认认的的(缺缺省省)的的存存储储类类型型,而而默默认认的的存存储储类类型型与与C51编编译译器器使使用用的的存存储储模模式式有有关关,C51定义了三种存储模式,如下表:定义了三种存储模式,如下表:26 5.2.3 C51的指针的指针1、通用指针、通用指针定定义义时时不不用用指指明明指指针针所所指指向向数数据据的的存存储储空空间间,指指针针本本身身占占3个个字字节节。由由于于指指针针本本身身也也是是一一个个变变量量,因因此此可可以声明该变量的

25、存储类型。以声明该变量的存储类型。定义格式:定义格式: 存储类型存储类型 数据类型数据类型 *指针名;指针名;例如:例如:char *p; /占占3字节,由存储模式确定存储类型字节,由存储模式确定存储类型idata int *pm,*pn; /占占idata区区3字节字节bdata long *p2; /占占bdata区区3字节字节xdata unsigned char *px /占占xdata区区3字节字节data char buf10;p=buf;27 2、专用指针、专用指针 定义时要指明指针所指向数据的存储类型,指针本身定义时要指明指针所指向数据的存储类型,指针本身只占只占1个或个或2个

26、字节。个字节。定义格式:定义格式: 存储类型存储类型 数据类型数据类型 存储类型存储类型 *指针名;指针名;例如:例如:char data *p; /占占1字节,由存储模式确定存储类型字节,由存储模式确定存储类型int xdata *px=0x2000; /占占2字节,缺省占字节,缺省占data区区unsigned char code *p1; /占占2字节,缺省占字节,缺省占data区区int idata *p=0x30; /占占1字节,缺省占字节,缺省占data区区idata int xdata *pm,*pn; /占占idata区区2字节字节bdata long data *p2; /占

27、占bdata区区1字节字节xdata unsigned char code *px/占占xdata区区2字节字节28 比较专用指针和通用指针比较专用指针和通用指针 29 5.2.4 C51的函数与中断处理程序的函数与中断处理程序1、 Keil C51函数格式函数格式return_type function_name(args) small|compact|large reentrant using m nsmall|compact|large:存储模式:存储模式nreentrant:重入函数(可被多个进程同时调用执行,并:重入函数(可被多个进程同时调用执行,并且函数自身可以递归调用)且函数自身

28、可以递归调用)nusing m:使用的工作寄存器组。:使用的工作寄存器组。m=0-3例:例:bit receive(unsigned char *buf, unsigned char len);void delay(void);30 2、Keil C51中断处理程序的格式中断处理程序的格式中断号中断号012345-中断源中断源 外中断外中断0 T0溢出溢出 外中断外中断1 T1溢出溢出 串行中断串行中断格式:格式:void function_name( ) small|compact|large interrupt n using minterrupt n:中断号。:中断号。n=0-4,5-u

29、sing m:使用的工作寄存器组。:使用的工作寄存器组。m=0-3 例如:例如:void key(void) interrupt 0 31 main( ) int i; unsigned char xdata *p=0x2000; /* 指针指向外部指针指向外部RAM 2000H单元单元 */ for(i=0; i0x1000; i+) *p+=0; /* 清零清零2000H-2FFFH单元单元 */ while(1);/*以循环结束以循环结束*/ 5.2.5 C51程序实例程序实例例例5.3 将外部将外部RAM2000H2FFFH的内容清零的内容清零32 #define uchar unsi

30、gned charmain ( ) uchar xdata *p=0x2000; /*指针指针p指向指向2000H单元单元*/ int n=0,i; for(i=0; i16; i+) if(*p=0) n+; /* 若该单元内容为零,则若该单元内容为零,则n+1 */ p+; /* 指针指向下一单元指针指向下一单元 */ p=0x2100;/* 指针指针p指向指向2100H单元单元 */ *p=n; /* 把个数放在把个数放在2100H单元中单元中 */ for(;);/*以循环结束以循环结束*/例例5.4 在在2000H-200FH中中查查出出有有几几个个字字节节是零,把个数放在是零,把个

31、数放在2100H单元中单元中33 #include /定义了直接对应汇编语言的函数定义了直接对应汇编语言的函数#define somenop() _nop_(); _nop_(); _nop_(); _nop_();unsigned char code sin_tab200=0, 1, , 0xff, , 1, 0;main () unsigned char i ; unsigned char xdata *p=0x2000; for(;)/无限循环作为无限循环作为main的结束的结束 for( i=0; i200; i+) *p=sin_tabi; somenop(); /延时延时4个个Tm

32、 /end of for(;)/end of main例子例子5.5 设程序存储区定义了一个大小为设程序存储区定义了一个大小为200字节的正字节的正弦函数表,设外部弦函数表,设外部RAM地址地址2000H处为处为D/A转换器端转换器端口,试将口,试将200字节的数据循环复制到字节的数据循环复制到2000H处。处。方法方法134 #include #include /定义了绝对地址访问的方法定义了绝对地址访问的方法#define somenop() _nop_(); _nop_(); _nop_(); _nop_();unsigned char code sin_tab200=0, 1, , 0

33、xff, , 1, 0;main () unsigned char i ; do for( i=0; i200; i+) XBYTE 0x2000=sin_tabi; /XBYTE somenop(); /延时延时4个个Tm while(1);/无限循环作为无限循环作为main的结束的结束方法方法235 #include /定义了直接对应汇编语言的函数定义了直接对应汇编语言的函数#define somenop() _nop_(); _nop_(); _nop_(); _nop_();unsigned char code sin_tab200=0, 1, , 0xff, , 1, 0;main

34、() unsigned char i,*p1, *p2 ; p1=(unsigned char xdata *)0x2000; /须指出须指出0x2000类型类型 p2=sin_tab; /p2指向指向code区区 while(1) /无限循环作为无限循环作为main的结束的结束 for( i=0; i200; i+) *p1=*p2+; somenop(); /延时延时4个个Tm p2=sin_tab;/指针回到初值指针回到初值方法方法336 例例5.6 计算计算RAM 30开始的开始的16字节无符号数的和,若字节无符号数的和,若为为0,点亮,点亮P1.7接的绿色接的绿色LED,为,为FFH

35、点亮点亮P1.6接的红接的红色色LED,其它值则点亮,其它值则点亮P1.5接的黄色接的黄色LED。37 #include /* 包含对包含对P1等等SFR的定义的定义 */sbitGreen=P17;sbitRed=P16;sbitYellow=P15; main( ) unsigned char i, sum=0; unsigned char data *p=0x30; for(i=0; i16; i+) sum+=*p+; if (sum=0) Green=0; Red=1; Yellow=1; else if (sum=0xff)Green=1; Red=0; Yellow=1; els

36、e Green=1; Red=1; Yellow=0; while(1);/*以循环结束以循环结束*/ 编程实现编程实现 38 5.3 程序调试方法程序调试方法n5.3.1 单片机开发系统单片机开发系统n5.3.2 源程序调试源程序调试n5.3.3 程序下载运行程序下载运行39 5.3.1 单片机开发系统单片机开发系统n单单片片机机开开发发系系统统的的作作用用是是用用来来调调试试目目标标系系统统(用用户户系系统统)的硬件和软件,最终得到硬件和软件都正确的目标系统。的硬件和软件,最终得到硬件和软件都正确的目标系统。n从从硬硬件件上上看看,单单片片机机开开发发系系统统由由计计算算机机和和仿仿真真器

37、器组组成成,二二者者之之间间通通过过RS-232串串口口、并并口口或或USB连连接接,实实现现双双向向通信交互;通信交互;n从从软软件件上上看看,单单片片机机开开发发系系统统由由集集成成调调试试环环境境(IDE)构构成成,在在该该环环境境下下可可以以进进行行编编辑辑、汇汇编编、编编译译、模模拟拟、仿真、下载等工作;仿真、下载等工作;40 单片机开发系统和目标系统连接示意图单片机开发系统和目标系统连接示意图41 42 仿真器与目标系统连接仿真器与目标系统连接43 44 45 使使用用Keil 的的开开发发工工具具其其项项目目开开发发周周期期和和任任何何软软件件开发项目都大致一样:开发项目都大致一

38、样:1. 创建创建C 或汇编语言的源程序;或汇编语言的源程序;2. 编译或汇编源文件;编译或汇编源文件;3. 纠正源文件中的错误;纠正源文件中的错误;4. 从编译器和汇编器连接目标文件;从编译器和汇编器连接目标文件;5. 测试连接的应用程序。测试连接的应用程序。开发流程开发流程46 开发流程示意图开发流程示意图47 德国德国Keil 软件公司的软件公司的8051 单片机软件开发工具可用单片机软件开发工具可用于众多的于众多的8051 派生器件的应用开发,工具清单如下:派生器件的应用开发,工具清单如下: C51 优化优化C 编译器编译器 A51 宏汇编器宏汇编器 8051 工具(连接器工具(连接器

39、/目标文件转换器目标文件转换器/库管理器)库管理器) dScope 源程序级调试器源程序级调试器/模拟器模拟器 Vision 集成开发环境集成开发环境Keil公司公司8051 单片机单片机软件软件开发工具开发工具48 Keil 8051 开发环境开发环境 49 Vision/51 是是一一个个集集成成的的软软件件开开发发平平台台,包包括括全全功功能能编编辑辑器器、项项目目管管理理器器、程程序序生生成成工工具具和和环环境境控控制制。当当用用户户使使用用Vision/51 时时,就就不不再再需需要要学学习习任任何何一一个个工工具具的的命命令令语语句句。Vision/51 提提供供以以下下特特性性可

40、可加加速速用用户户的的应应用用开开发:发: 标准标准Windows 用户界面用户界面 所有环境的对话框和开发工具设置所有环境的对话框和开发工具设置 多文件编辑能力多文件编辑能力 用户可自定义密码序列的全功能编辑器用户可自定义密码序列的全功能编辑器 将外部程序加入下拉式菜单的应用管理器将外部程序加入下拉式菜单的应用管理器 创建和保存项目的项目管理器创建和保存项目的项目管理器 从项目中建立目标程序的集成程序生成工具从项目中建立目标程序的集成程序生成工具 在线帮助系统在线帮助系统Vision/51 50 dScope-51 是是一一个个源源程程序序级级的的调调试试器器和和模模拟拟器器,可可调调试试/

41、模模拟拟由由Keil C51 编译器和编译器和A51 汇编器所创建的程序;汇编器所创建的程序; dScope-51 是是一一个个纯纯软软件件产产品品它它可可使使用用户户在在没没有有目目标标硬硬件件的的情情况况下下模模拟拟8051 的的特特性性,用用户户可可在在硬硬件件准准备备之之前前用用dScope-51 调试自己的应用程序;调试自己的应用程序;dScope-51 可可模模拟拟许许多多8051 的的外外围围功功能能包包括括内内部部串串行行口口、外部外部I/O 口和定时器口和定时器/计数器;计数器;dScope-51 通通过过Monitor-51目目标标调调试试器器实实现现对对目目标标系系统统(

42、用用户应用系统)的在线仿真调试(户应用系统)的在线仿真调试(In-Circuit Emulator););调调试试命命令令:参参看看html在在线线帮帮助助uVision2 Debug Commands,如如e char d:0x90=0, d char i:0x80, d int x:0xc000等。等。dScope-51 51 n C51 编译器和编译器和A51 汇编器汇编器 由由Vision2 IDE 创创建建的的源源文文件件,可可以以被被 C51 编编译译器器或或A51 汇汇编编器器处处理理,生生成成可可重重定定位位的的object 文文件件。Keil C51 编编译译器器遵遵照照AN

43、SI C 语语言言标标准准,支支持持C 语语言言的的所所有有标标准准特特性性。另另外外,还还增增加加了了几几个个可可以以直直接接支支持持80C51 结结构构的的特特性性。Keil A51 宏汇编器支持宏汇编器支持80C51 及其派生系列的所有指令集。及其派生系列的所有指令集。n LIB51 库管理器库管理器 LIB51库库管管理理器器可可以以从从由由汇汇编编器器和和编编译译器器创创建建的的目目标标文文件件建建立立目目标标库库。这这些些库库是是按按规规定定格格式式排排列列的的目目标标模模块块,可可在在以以后后被被链链接接器器所所使使用用。当当链链接接器器处处理理一一个个库库时时,仅仅仅仅使使用用

44、了了库库中程序使用了的目标模块而不是全部加以引用。中程序使用了的目标模块而不是全部加以引用。C51、A51和和 LIB51 52 n BL51 链接器链接器/定位器定位器 BL51 链链接接器器使使用用从从库库中中提提取取出出来来的的目目标标模模块块和和由由编编译译器器、汇汇编编器器生生成成的的目目标标模模块块,创创建建一一个个绝绝对对地地址址目目标标模模块块。绝绝对对地地址址目目标标文文件件或或模模块块包包括括不不可可重重定定位位的的代代码码和和数数据据。所所有有的代码和数据都被固定在具体的存储器单元中。的代码和数据都被固定在具体的存储器单元中。n RTX51 实时操作系统实时操作系统(高级

45、应用,了解)(高级应用,了解) RTX51实实时时操操作作系系统统是是针针对对80C51微微控控制制器器系系列列的的一一个个多多任任务务内内核核。RTX51实实时时内内核核简简化化了了需需要要对对实实时时事事件件进进行行反反应应的的复复杂杂应应用用的的系系统统设设计计、编编程程和和调调试试。这这个个内内核核完完全全集集成成在在C51 编编译译器器中中,使使用用非非常常简简单单。任任务务描描述述表表和和操操作作系系统统的的一致性由一致性由BL51 链接器链接器/定位器自动进行控制定位器自动进行控制。 BL51和和RTX51 53 5.3.2 源程序调试源程序调试n模拟调试(软件模拟)模拟调试(软

46、件模拟) 在在纯纯软软件件环环境境下下,由由PC机机模模拟拟8051运运行行,调调试试用用户户程程序序。Vision2的的调调试试器器dScope可可以以配配置置成成软软件件模模拟拟方方式式,调调试试器器包包括括一一个个高高速速模模拟拟器器,可可以以模模拟拟整整个个80C51 系系统统,包包括括片片上上外外围围器器件件和和外外部部硬硬件件,能能进进行行快快速速、可可靠靠的的程程序序调调试试。 当当从从器器件件库库选选择择器器件件时时,这这个个器器件件的的属属性会被自动配置。性会被自动配置。 这这种种方方式式快快速速高高效效,除除了了不不能能直直观观看看到到外外部部引引脚脚控控制制结结果果外外,

47、可可以以实实现现所所有有功功能能模模拟拟,发发现现软软件件错错误误。可可以以在用户系统还没有完成的情况下,提前进行软件设计。在用户系统还没有完成的情况下,提前进行软件设计。 建建议议所所有有实实验验前前先先预预习习,用用软软件件模模拟拟排排除除语语法法错错误误、逻逻辑错误,观察变量结果、存储空间及辑错误,观察变量结果、存储空间及SFR的变化等。的变化等。54 TKSMonitor51 仿仿真真器器实实际际是是一一个个P87C52X2单单片片机机应应用用系系统统,该该单单片片机机扩扩展展片片外外存存储储器器,有有32KB FLASH和和32KB SRAM,仿仿真真器器提提供供了了几几种种在在实实

48、际际目目标硬件上测试程序的方法:标硬件上测试程序的方法:直直接接将将汇汇编编、编编译译、连连接接生生成成的的.hex文文件件下下载载到到TKSMonitor51 仿真器的仿真器的FLASH中运行,观察结果;中运行,观察结果;先先下下载载一一个个监监控控程程序序MON51.hex 到到TKSMonitor51 仿仿真真器器的的FLASH中中,再再通通过过Vision2 的的dScope在在线线调调试试用用户户程程序序,通通过过人人机机交交互互环环境境指指挥挥连连接接的的硬硬件件完完成操作(用户程序被装入成操作(用户程序被装入SRAM中)。中)。硬件调试器(硬件仿真)硬件调试器(硬件仿真)55 T

49、KSMonitor51 仿真器有两种工作方式:仿真器有两种工作方式:u 下载工作方式下载工作方式 (load) 把拨动开关拨到把拨动开关拨到LOAD 一边就进入下载工作方式了。在一边就进入下载工作方式了。在该工作方式下,用户可以下载程序到该工作方式下,用户可以下载程序到FLASH 中。中。u 运行工作方式运行工作方式 (run) 把拨动开关拨到把拨动开关拨到RUN 一边就进入运行工作方式了。在该一边就进入运行工作方式了。在该工作方式下用户可以运行下载到工作方式下用户可以运行下载到FLASH 中的程序。如果下载中的程序。如果下载到到FLASH 中的程序是中的程序是MON51.HEX,则可以在,则

50、可以在Vision2下用下用调试器调试器dScope 来在线调试用户程序。来在线调试用户程序。 实验开始前我们已经把实验开始前我们已经把MON51.HEX下载到了下载到了FLASH中,中,可以直接在可以直接在Keil软件环境下进行在线调试,因此实验中要保软件环境下进行在线调试,因此实验中要保证拨动开关总在证拨动开关总在RUN的位置。的位置。 TKSMonitor51 仿真器仿真器56 MON51运行状态下片外存储空间分配图运行状态下片外存储空间分配图 TKSMonitor51 仿仿真真器器内内的的单单片片机机P87C52X2 运运行行MON51 监监控控程程序序,而而把把用用户户的的应应用用程

51、程序序装装载载到到外外部部SRAM 中中,从从而而实实现现运运用用Keil C51集集成成开开发发环环境境所所提提供供的的所所有有调调试命令来调试用户的应用程序。试命令来调试用户的应用程序。57 普通程序运行状态下片外存储器模型普通程序运行状态下片外存储器模型 当当TKSMonitor51 仿仿真真器器处处于于运运行行状状态态时时,将将全全速速执执行行FLASH中中的的用用户户程程序序,由由于于没没有有MON51 监监控控程程序序,将将不不能与能与uVision相连进行调试。相连进行调试。 58 5.3.3 程序下载运行程序下载运行n下载到仿真器运行下载到仿真器运行 如如前前所所述述,TKSM

52、onitor51 仿仿真真器器内内部部有有32KB FLASH,可可以以将将调调试试通通过过的的程程序序(.hex文文件件)下下载载到到该该FLASH中中,用用户户将将仿仿真真头头插插入入锁锁紧紧座座就就相相当当于于在在锁锁紧紧座座上上插插入入了了一一块块烧写好程序的单片机。烧写好程序的单片机。 由由于于下下载载用用户户程程序序到到仿仿真真器器会会破破坏坏原原来来下下载载的的MON51 监监控控程程序序,使使仿仿真真器器无无法法与与uVision相相连连进进行行在在线线调调试试,因因此实验中我们不用这种方式。此实验中我们不用这种方式。59 KeilKeil开发环境演示开发环境演示实验一实验一 KeilKeil开发环境的使用开发环境的使用( (http:/59.64.74.100http:/59.64.74.100布置布置) ) 60

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号