05AT89s52程序设计与调试课件.ppt

上传人(卖家):ziliao2023 文档编号:7295498 上传时间:2023-11-18 格式:PPT 页数:58 大小:226.50KB
下载 相关 举报
05AT89s52程序设计与调试课件.ppt_第1页
第1页 / 共58页
05AT89s52程序设计与调试课件.ppt_第2页
第2页 / 共58页
05AT89s52程序设计与调试课件.ppt_第3页
第3页 / 共58页
05AT89s52程序设计与调试课件.ppt_第4页
第4页 / 共58页
05AT89s52程序设计与调试课件.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

1、第五章 AT89S52程序设计与调试1第五章第五章 AT89S52程序设计与调试程序设计与调试v5.1 程序设计步骤v5.2 源程序的基本格式及编辑环境v5.3 程序设计方法v5.4 C51基础v5.5 程序调试与下载运行第五章 AT89S52程序设计与调试25.1 程序设计步骤v1拟定设计任务书v2建立数学模型并确定算法v3程序的总体设计及其流程图v4编写源程序v5源程序的汇编与调试v6系统软件的整体运行与测试v7总结归纳进一步编写程序说明文件第五章 AT89S52程序设计与调试35.2 源程序的基本格式及编辑环境v5.2.1.源程序的基本格式5.2.2.源程序的编辑环境第五章 AT89S5

2、2程序设计与调试45.2.1.源程序的基本格式v1AT89S52的中断矢量分配v2程序的起始v3中断服务程序v4程序字节v5伪指令第五章 AT89S52程序设计与调试5ORG 0000HvLJMPMAIN;转向主程序vORG0003HvLJMPINT0;转向外部中断0服务程序vORG000BHvLJMPTIMER0;转向定时器0中断服务程序vvORG002BHvLJMPTIMER2;转向定时器2中断服务程序源程序的基本格式第五章 AT89S52程序设计与调试6v ORG 0040HvMAIN:SETBIT0;主程序从0040H开始vSETBEX0;主程序初始化vSETBEAvvLCALLDIS

3、P;调用显示子程序vLCALLDISPOSE;调用数据处理子程序vvORG3000HvDISP:;显示子程序v第五章 AT89S52程序设计与调试7vDISPOSE:;数据处理子程序vvORG4000HvINT0:;外部中断0中断服务程序vvORG4500HvTIMER0:;定时器0中断服务程序vvORG5000HvTIMER2:;定时器2中断服务程序vv;其它中断服务程序vORG5500HvTABDB:DB12H,56H,3FH;固定表格区段vvEND;程序结束第五章 AT89S52程序设计与调试85.2.2.源程序的编辑环境v用于编写汇编程序的编写环境很广泛,可在许多文字编辑窗口进行输入,

4、如写字板、记事本,或专门的汇编编辑、调试软件如MEDWIN、KEIL C中进行,文件名以.ASM为后缀。v因为编写完成的汇编软件还需要在特定的编译环境下进行语法编译,所以一般情况下,源程序直接在编译或仿真环境下进行编写。v编写前首先在PC机上安装需要的软件如MEDWIN或KEIL C,并进行适当的配置,然后建立工程,就可以编写源程序了。第五章 AT89S52程序设计与调试95.3 程序设计方法v5.3.1顺序结构程序5.3.2分支结构程序5.3.3循环结构程序5.3.4 子程序结构程序5.3.5中断服务程序第五章 AT89S52程序设计与调试105.3.1顺序结构程序v顺序结构程序指程序中没有

5、使用转移类指令的程序段v是程序设计中最基本、最简单的编程结构,所以也称为简单结构或直线结构。第五章 AT89S52程序设计与调试115.3.2分支结构程序v分支结构程序的特点是程序中含有转移指令,使程序具有判断和选择能力。v由于转移指令分无条件转移和有条件转移,所以分支程序也分无条件分支和条件分支两类。v无条件分支程序中含有无条件转移指令(如SJMP、AJMP等),比较简单。条件分支程序中含有条件转移指令,比较复杂。第五章 AT89S52程序设计与调试12例5-2v已知40H(VAR)单元内有一自变量X,按如下条件编写程序求Y(FUN)的值,并存入41H单元。100010XYXX第五章 AT8

6、9S52程序设计与调试13 ORG 2000H VAR DATA 40H FUN DATA 41HXY:MOV A,VARJZ DONEJNB ACC.7,POSMOV A,#0FFHSIMP DONEPOS:MOV A,#01HDONE:MOV FUN,A RET第五章 AT89S52程序设计与调试14 ORG 2000H VAR DATA 40H FUN DATA 41HXY:MOV A,VAR JZ ZERO MOV FUN,#0FFH JB ACC.7,DONE MOV FUN,#01H SJMP DONE ZERO:MOV FUN,#00HDONE:RET第五章 AT89S52程序设

7、计与调试15例5-3v通过键盘扫描程序KEYSCAN读入键值09至累加器A,键值不同功能不同,设计程序根据键值分别转入键控程序KEY0KEY9。即要求:v当(A)=0时,转键控程序KEY0;v当(A)=1时,转键控程序KEY1;vv当(A)=9时,转键控程序KEY9;第五章 AT89S52程序设计与调试16ORG2000HvACALLKEYSCANRLAMOV DPTR,#JMPTBLvJMPA+DPTRvJMPTBL:AJMP KEY0 AJMP KEY1v AJMP KEY9KEY0:KEY1:vv KEY9:第五章 AT89S52程序设计与调试175.3.3循环结构程序v循环结构就是多次

8、重复执行某一程序段,直到满足结束条件,再向下顺序执行。该程序段通常称为循环体。循环结构通常由四部分组成:v1循环初始化v2循环处理v3循环控制 v4循环结束 第五章 AT89S52程序设计与调试18v循环程序有两种编制方法 初始化循环处理循环控制循环结束完成?YN(a)先处理后判断初始化循环处理循环控制循环结束完成?YN(b)先判断后处理第五章 AT89S52程序设计与调试19v例5-5 AT89S52的晶振为12MHz,设计10ms延时程序。v解:12MHz晶振的机器周期为1s,可用双重循环写出延时程序。根据指令的执行周期计算延时时间。vORG2000HvDEL:MOVR7,#40;单周期,

9、1svDEL1:MOVR6,#125;单周期,1svDEL2:DJNZ R6,DEL2;双周期2sv ;1252=250svDJNZ R7,DEL1;双周期2sv ;0.2540=10msvRET第五章 AT89S52程序设计与调试20vORG2000HvDEL:MOV R7,#40;单周期,1svDEL1:MOV R6,#123;单周期,1svNOP;单周期,1svDEL2:DJNZR6,DEL2;双周期 v ;2s1232+2=248svDJNZR7,DEL1;双周期v ;2s(248+2)40+1=10.001msvRET第五章 AT89S52程序设计与调试215.3.4 子程序结构程序

10、v子程序是一种能完成某确定任务的程序段,其资源需要为所有调用程序共享v因此,子程序在结构上应具有通用性和独立性。第五章 AT89S52程序设计与调试221.子程序编写时应注意的问题。v(1)保护现场和恢复现场v(2)主程序和子程序之间的参数传递v参数的传递方法主要有以下几种:v用寄存器或累加器传递参数 v利用寄存器传递参数地址v利用堆栈传递参数v利用位地址传递参数第五章 AT89S52程序设计与调试232.子程序编写的原则v(1)子程序的第一条语句前必须有标号v(2)标明子程序的入口参数和出口参数v(3)子程序的结尾必须有RET指令v(4)子程序中使用相对转移指令v(5)注意堆栈区要满足要求v

11、(6)保护现场和恢复现场第五章 AT89S52程序设计与调试243.子程序编写举例v例 5-6 编写存取共阴极数码管对应显示代码子程序。v解:;程序名称:SEGDISCv;功能:取得共阴极数码管对应显示代码程序v;入口参数:(R3)=要显示的数字如,0、1等v;出口参数:(R4)=显示数字的代码第五章 AT89S52程序设计与调试25ORG6000HvSEGDISC:PUSHACC MOVA,R3 MOVDPTR,#SEGTAB MOVCA,A+DPTR MOVR4,A POPACC RET ORG8000HvSEGTAB:DB3FH,06H,5BH,4FH,66Hv DB6DH,7DH,07

12、H,7FH,67H 第五章 AT89S52程序设计与调试26v主程序可如下编写:vORG 0000HvLJMP MAINv0RG0050HvMAIN:MOV SP,#70H;设置堆栈指针vACALLSEGDISC;调子程序vvEND第五章 AT89S52程序设计与调试275.3.5中断服务程序v中断服务程序对实时事件请求作必要的处理,使系统能实时地并行完成各个操作v中断服务程序必须包括现场保护、中断服务、现场恢复、中断返回等四个部分v中断服务程序编写方法与子程序类似,再注意以下问题:第五章 AT89S52程序设计与调试28v(1)在中断程序的结尾一定要使用RETI,以便返回到主程序调用处。v(

13、2)中断服务程序中要清除中断标志,以免重复进入。具体标志和清除方法参见各中断部分。v(3)中断服务程序的长度尽量短小,以免执行时占用CPU过多时间。所以主程序与中断服务程序之间的数据交换多采用标志位。v(4)中断嵌套深度受堆栈区的影响。系统复位后,栈指针SP的初始值为07H,与工作寄存器区重叠,所以程序中一般要重新定义。AT89S52内部虽有256B的RAM,但堆栈区需利用低128B开辟,所以其堆栈深度有限。第五章 AT89S52程序设计与调试295.4 C51基础v5.4.1 C51的程序结构及编译环境5.4.2 C51的数据类型与存储类型5.4.3 AT89S52结构的C51定义5.4.4

14、 C51和汇编语言的混合编程5.4.5 C51程序设计举例第五章 AT89S52程序设计与调试305.4.1 C51的程序结构及编译环境v1C51的程序结构vC51 的程序结构与一般的C语言程序基本相同。vC51程序基本由预处理器命令、变量定义、函数组成。vC编程时,一般在程序的开始都要引入头文件。除了包含C语言标准的头文件外,一般还要包含与单片机硬件有关的头文件,如#include 语句 第五章 AT89S52程序设计与调试312C51的编译环境及开发过程v许多公司都开发了C51的集成开发环境(IDE)及开发系统,常用的C51集成开发环境有Keil C51 Vision 和MEDWIN等软件

15、。vKeil C51 Vision是Keil Software,Inc/Keil Elektronik GmbH开发的基于51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成从工程建立和管理、编译、链接、目标代码的生成、软件仿真及硬件仿真等完整的开发流程。vMedwin是南京万利电子(南京)有限公司推出的配合其Insight仿真器的集成开发环境。第五章 AT89S52程序设计与调试325.4.2 C51的数据类型与存储类型v1C51的数据类型vC51的数据类型与一般C语言相同。有以下几种数据类型:v位型bit、无符号字符型(unsigned char)、有符号字符型(s

16、igned char)、无符号整型(unsigned int)、有符号整型(signed int)、无符号长整型(unsigned long)、有符号长整型(signed long)、浮点型(float)和指针型。第五章 AT89S52程序设计与调试33C51的数据类型数据类型长度长度值域范围bit10,1unsigned char810255signed char81-128127unsigned int162065535signed int162-3276832767unsigned long32404294967295signed long324-21474836482147483647

17、float3241.176E-383.4E+38(6位数字)double6481.176E-383.4E+38(10位数字)一般指针243存储空间065535第五章 AT89S52程序设计与调试342C51数据的存储类型vC51编写程序时数据的定义除了前面加上数据类型外,还需要额外增加数据存储空间的说明。v根据单片机硬件结构的特点,C51定义了6种存储类型:data,bdata,idata,pdata,xdata,code 第五章 AT89S52程序设计与调试35存储类型存储类型与单片机存储空间的对应关系data直接寻址片内数据存储区,访问速度快bdata可位寻址片内数据存储区,允许位与字节混

18、合访问idata间接寻址片内数据存储区,可访问片内全部RAM地址空间pdata分页寻址片外数据存储区,由MOVX R0访问xdata片外数据存储区,由MOVX DPTR访问code程序代码存储区,由MOVC A+DPTR访问第五章 AT89S52程序设计与调试36数据类型举例vunsigned char data var1;vbit bdata flag;vfloat idata a,b,c;vunsigned int pdata temp;vunsigned char xdata array110;vunsigned int code array212;第五章 AT89S52程序设计与调试3

19、73C51的存储模式vC51有三种存储模式SMALL、COMPACT和LARGEv存储模式决定了变量默认的存储类型、参数传递区和无明确存储类型的说明 第五章 AT89S52程序设计与调试38存储模式存储模式 参数及局部变量传递区域范围默认存储类型特点SMALL可直接寻址的片内存储区128字节DATA访问方便,所有对象(包括堆栈)都必须嵌入片内RAMCOMPACT分页片外存储区256字节/页PDATA通过Ri间接寻址,堆栈位片内RAMLARGE片外存储区64K字节XDATA通过DPTR间接寻址,效率较低,数据指针不能对称操作第五章 AT89S52程序设计与调试395.4.3 AT89S52结构的

20、C51定义vC51中引入了两个关键字“sfr”和“sbit”进行相应的定义。v1关键字“sfr”v语法:sfrsfr_name=int constant;第五章 AT89S52程序设计与调试40v例:利用sfr定义P0、P1、PSW、ACC、B、SP、DPL、DPH。v解:sfr P0 =0 x80;vsfr P1 =0 x90;vsfr PSW =0 xD0;vsfr ACC =0 xE0;vsfr B =0 xF0;vsfr SP =0 x81;vsfr DPL =0 x82;vsfr DPH =0 x83;第五章 AT89S52程序设计与调试41v2关键字“sbit”v语法:sbit s

21、bit_name=bit address;v(1)sbit sbit_name=sfr_name int_constant;v例如:vsfr PSW=0 xD0;/*定义PSW地址为0 xD0*/vsbit OV=PSW 2;/*定义OV位为PSW.2*/vsbit Cy=PSW 7;/*定义Cy位为PSW.7*/第五章 AT89S52程序设计与调试42(2)sbit sbit_name=int_constant int_constant;v例如:sbit OV =0 xD0 2;/*定义OV位地址为0 xD2*/sbit Cy =0 xD0 7;/*定义Cy位地址为0 xD7*/(3)sbi

22、t sbit_name=int_constant;v例如:sbit OV =0 xD2;/*定义OV位地址为0 xD2*/sbit Cy =0 xD7;/*定义Cy位地址为0 xD7*/第五章 AT89S52程序设计与调试43例59编写AT89S52部分寄存器及位定义的头文件v/*-vAT89S52.Hv-*/v/*-vByte Registersv-*/vsfr P0 =0 x80;vsfr SP =0 x81;vsfr DPL =0 x82;vsfr DPH =0 x83;第五章 AT89S52程序设计与调试44vsfr PCON =0 x87;vsfr TCON =0 x88;vsfr

23、TMOD =0 x89;vsfr ACC =0 xE0;vv/*-vP0 Bit Registersv-*/vsbit P0_0=0 x80;vsbit P0_1=0 x81;vsbit P0_2=0 x82;vsbit P0_3=0 x83;vsbit P0_4=0 x84;vsbit P0_5=0 x85;vsbit P0_6=0 x86;vsbit P0_7=0 x87;/*-Interrupt Vectors:Interrupt Address=(Number*8)+3-*/#define IE0_VECTOR0 /*0 x03 外部中断0*/#define TF0_VECTOR1 /

24、*0 x0B定时器0*/#define IE1_VECTOR2 /*0 x13 外部中断1*/#define TF1_VECTOR3 /*0 x1B 定时器1*/#define SIO_VECTOR4 /*0 x23 串行口*/#define TF2_VECTOR5 /*定时器2*/#endif第五章 AT89S52程序设计与调试45vsbit除了上述特殊位地址定义外,在实际编程中还可以用来定义位。v例如:unsigned char bdata flag;/*定义flag为bdata无符号字符型变量*/vsbit flag1=flag1;/*flag1定义为flag的第1位*/vsbit fl

25、ag2=flag2;/*flag2定义为flag的第2位*/v如此定义的flag1、flag2则可以在程序中做标志位使用。第五章 AT89S52程序设计与调试465.4.4 C51和汇编语言的混合编程vC51中直接插入汇编指令方式v(1)使用“asm”功能v格式:_asmv“Assembler Code Here”;v(2)使用“#pragma ASM”功能v格式:#pragma ASMv Assembler Code Herev#pragma ENDASM第五章 AT89S52程序设计与调试47编写程序从P1.0口输出方波。要求KEIL C环境下C51程序中嵌入汇编程序段。v解:程序如下:v

26、#include vsbit P10=P10;/*定义位变量P10*/vvoid main(void)/*主函数*/vvwhile(1)vP10=!P10;/*P1口输出取反*/v#pragma ASM/*汇编程序段开始*/v MOV R4,#18第五章 AT89S52程序设计与调试48vDJNZR4,$/*延时等待*/v#pragma ENDASM/*汇编程序段结束*/v v/*程序结束*/第五章 AT89S52程序设计与调试49例5-11 利用C51编写(例5-3)键盘散转程序。v解:程序清单:v#include v#define uchar unsigned charvvoid key_

27、data);vvoid keyjmp(uchar key0_dispose(void);vvoid key1_dispose(void);vvoid key2_dispose(void);第五章 AT89S52程序设计与调试50vvoid key0_dispose(void)vv/*键0处理内容*/vvvoid key1_dispose(void)vv/*键1处理内容*/vvvoid key2_dispose(void)vv/*键2处理内容*/v第五章 AT89S52程序设计与调试51/*键散转子程序,入口参数:键值key_data,返回参数:无*/void keyjmp(uchar key_

28、data)uchar key_temp;key_temp=key_data;switch(key_data)case 0:key0_dispose();break;/*键处理子程序*/case 1:key1_dispose();break;case 2:key2_dispose();break;default:break;第五章 AT89S52程序设计与调试52void main(void)/*主程序*/keyjmp(0);第五章 AT89S52程序设计与调试535.5 程序调试与下载运行v5.5.1单片机开发系统(装置)5.5.2 源程序调试5.5.3程序下载运行第五章 AT89S52程序设

29、计与调试54源程序编译有错误?单步或断点运行N修改源程序有错误?NYY仿真调试有错误?Y程序下载运行有错误?软件编写、调试结束NYN图5.5.1 源程序的调试仿真流程图第五章 AT89S52程序设计与调试555.5.1单片机开发系统(装置)图5.5.2 开发系统与目标系统连接图计算机仿真器目标系统电缆1适配器第五章 AT89S52程序设计与调试56v开发系统一般都应具有以下功能 v1.模拟仿真功能v2.在线仿真功能v3.调试功能v4辅助设计功能v5用户操作界面第五章 AT89S52程序设计与调试575.5.2 源程序调试v1模拟调试v模拟调试是源程序调试必须经过的过程。一般经过两个步骤:v(1)编译程序,检查汇编语言的语法是否正确v(2)模拟运行程序,观察程序的执行是否符合要求v2仿真调试 第五章 AT89S52程序设计与调试585.5.3程序下载运行v程序调试通过后,进入到程序下载阶段。程序下载指的是利用编程器(烧写器或固化器)将调试正确的汇编程序的目标代码写入到FLASH或EPROM中,以便单片机能够独立运行。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(05AT89s52程序设计与调试课件.ppt)为本站会员(ziliao2023)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|