1、单片机应用技术1/38第第5 5章章 汇编语言程序设计及仿真调试汇编语言程序设计及仿真调试 单片机应用技术2/385.15.1.1 .1 伪指令伪指令 一般来说,在汇编语言源程序中用一般来说,在汇编语言源程序中用MSC-51MSC-51指令助记指令助记符编写的程序,都可以一一对应的产生目标程序。但还符编写的程序,都可以一一对应的产生目标程序。但还有一些指令,例如指定目标程序或数据存放的起始地址,有一些指令,例如指定目标程序或数据存放的起始地址,给一些指定的标号赋值,在内存中予留工作单元,表示给一些指定的标号赋值,在内存中予留工作单元,表示源程序结束等等。这些指令并不产生目标程序,不影响源程序结
2、束等等。这些指令并不产生目标程序,不影响程序的执行,仅仅产生供汇编用的某些指令,以便在汇程序的执行,仅仅产生供汇编用的某些指令,以便在汇编时执行一些特殊操作,称之为伪指令。编时执行一些特殊操作,称之为伪指令。 5.1 5.1 汇编语言程序设计基础知识汇编语言程序设计基础知识单片机应用技术3/381 1、设置起始地址、设置起始地址ORGORG ORG ORG nnnn ORG ORG伪指令总是出现在每段源程序或数据块的开始。它可使程序伪指令总是出现在每段源程序或数据块的开始。它可使程序员把程序、子程序或数据块存放在存贮器的任何位置。员把程序、子程序或数据块存放在存贮器的任何位置。 ORG 200
3、0H ORG 2000H MOV A, 20H MOV A, 20H 表示后续目标程序从表示后续目标程序从20002000H H单元开始存放。一般要求单元开始存放。一般要求ORGORG定义空间定义空间地址由小到大,且不能重叠地址由小到大,且不能重叠 。 在实际应用中,一般仅设置中断服务子程序的入口地址和主程序在实际应用中,一般仅设置中断服务子程序的入口地址和主程序的起始存放地址,其他的程序或常数依次存放即可,汇编程序会自动的起始存放地址,其他的程序或常数依次存放即可,汇编程序会自动进行存储空间的分配。进行存储空间的分配。 单片机应用技术4/382 2、定义字节、定义字节DBDB或或DEFBDE
4、FB 标号:标号: DB DB 项或项表项或项表 其中项或项表是指一个字节,数或字符串,或以引号括起来的其中项或项表是指一个字节,数或字符串,或以引号括起来的ASCASC码字符串(一个字符用码字符串(一个字符用ASCASC码表示,相当于一个字节)。该码表示,相当于一个字节)。该指令的功能是把项或项表的数值(字符则用它的指令的功能是把项或项表的数值(字符则用它的ASCASC码)存入从标码)存入从标号开始的连续单元中。号开始的连续单元中。 SEG1 SEG1: DB 53H,74H,78H,1,2 DB 53H,74H,78H,1,2 SEG2 SEG2: DB 23H,DAY DB 23H,DA
5、Y则:则: (10001000H H)=53H=53H (1001H1001H)=74H=74H (1002H1002H)=78H=78H (1003H1003H)=31H =31H 数字数字1 1的的ASCASC码码 (10041004H H)=32H =32H 数字数字2 2的的ASCASC码码 (10051005H H)=23H=23H (1006H1006H)=44H=44H (1007H1007H)=41H=41HDAY DAY 的的ASCASC码码 (10081008H H)=59H=59H单片机应用技术5/383 3、定义字、定义字DWDW或或DEFWDEFW 标号:标号: DW
6、 DW 项或项表项或项表 DW DW的基本含义与的基本含义与DBDB相同,但相同,但DBDB一般用于定义一般用于定义8 8位数位数据(一个字节),而据(一个字节),而DWDW则定义则定义1616位数据,即一个字(规位数据,即一个字(规定为两个字节,即一个字为定为两个字节,即一个字为1616位二进制数)。在执行汇位二进制数)。在执行汇编程序时,机器会自动按高位字节在前,低位字节在后编程序时,机器会自动按高位字节在前,低位字节在后的格式排列(与程序中的地址规定一致)。的格式排列(与程序中的地址规定一致)。 例:例: ABC ABC: DW 1234H, 08H DW 1234H, 08H ABC
7、ABC: DB 12H ,34H,00H,08H DB 12H ,34H,00H,08H上两条指令是等价的。上两条指令是等价的。单片机应用技术6/384 4、为标号赋值、为标号赋值EQUEQU 标号:标号: EQU EQU nnnn或表达式或表达式其功能是将语句操作数的值赋于本语句的标号。故又称其功能是将语句操作数的值赋于本语句的标号。故又称为等值指令。如:为等值指令。如:BLKBLK: EQU 1000H EQU 1000H 即给标号即给标号BLKBLK赋以地址值赋以地址值10001000H H。需要注意的是,在需要注意的是,在同一程序中,用同一程序中,用EQUEQU伪指令对标号赋值后,该标
8、号的值在伪指令对标号赋值后,该标号的值在整个程序中不能再改变。整个程序中不能再改变。 单片机应用技术7/385 5DATADATA指令指令格式格式: 符号名符号名 DATA DATA 表达式表达式 DATA DATA 指令用于将一个内部指令用于将一个内部 RAM RAM 的地址赋给指定的的地址赋给指定的符号名符号名。 数值表达式的值在数值表达式的值在00H00H0FFH0FFH之间,表达式必须是一之间,表达式必须是一个简单表达式。如:个简单表达式。如: BUFFER DATA 40H BUFFER DATA 40H单片机应用技术8/386 6XDATAXDATA指令指令( (ExtenalEx
9、tenal Data) Data)格式:格式: 符号名符号名 XDATA XDATA 表达式表达式 XDATA XDATA 指令用于将一个外部指令用于将一个外部 RAM RAM 的地址赋给指定的的地址赋给指定的符号名。符号名。 数值表达式的值在数值表达式的值在0000H0000H0FFFFH0FFFFH之间,之间,对于对于STC12C5410AD单片机,片内集成了单片机,片内集成了256字节的字节的XRAM,地址范围是地址范围是0000H00FFH。表达式必须是一个简单表达式。表达式必须是一个简单表达式。如:如: MYDATA XDATA 0020H MYDATA XDATA 0020H单片机
10、应用技术9/387定义位命令定义位命令BIT 格式:格式: 字符名称字符名称 BIT BIT 位地址位地址 用于给字符名称定义位地址。如:用于给字符名称定义位地址。如: DOGOUT BIT P3.4 DOGOUT BIT P3.4 经定义后,允许在指令中用经定义后,允许在指令中用DOGOUTDOGOUT代替代替P3.4P3.4。 DATADATA、BITBIT命令可以使用命令可以使用EQUEQU代替,例如,下面的两条命令代替,例如,下面的两条命令是等价的:是等价的: TCON TCONDATA DATA 88H88H; ;中断优先级高位寄存器中断优先级高位寄存器 TCON TCONEQU E
11、QU 88H88H; ;中断优先级高位寄存器中断优先级高位寄存器 下面的两条命令也是等价的:下面的两条命令也是等价的: TF1 TF1BITBIT8FH8FH;TF1;TF1的位地址位的位地址位8FH8FH TF1 TF1EQUEQUTCON.7TCON.7 ;TF1 ;TF1为为TCONTCON的第的第7 7位位单片机应用技术10/388 8、文件包含命令文件包含命令INCLUDE 文件包含命令文件包含命令INCLUDE用于将寄存器定义文件(一般用于将寄存器定义文件(一般的后缀名为的后缀名为.INC)包含于当前程序中,与)包含于当前程序中,与C语言中的语言中的#include语句类似。使用格
12、式为:语句类似。使用格式为: $INCLUDE (文件名文件名) 例如,为了使用方便,作者把例如,为了使用方便,作者把STC12C5410AD单片单片机的寄存器定义保存在文件机的寄存器定义保存在文件STC12.INC中,使用时,可以中,使用时,可以在程序的开始处使用下面的命令将其包含到用户程序中:在程序的开始处使用下面的命令将其包含到用户程序中: $INCLUDE (STC12.INC) ;包含寄存器定义文件包含寄存器定义文件 使用上述命令后,在用户程序中就可以直接使用使用上述命令后,在用户程序中就可以直接使用STC12C5410AD单片机的寄存器名称了。单片机的寄存器名称了。 单片机应用技术
13、11/389 9、源程序结束、源程序结束 ENDEND 标号:标号: END END 表达式表达式 END END语句是一个结束标志,它告诉汇编程序,该程序语句是一个结束标志,它告诉汇编程序,该程序段已结束。因此,该语句必须放在整个程序(包括伪指段已结束。因此,该语句必须放在整个程序(包括伪指令)之后。若令)之后。若ENDEND语句出现在代码块中间,则汇编程序将语句出现在代码块中间,则汇编程序将不汇编不汇编ENDEND后面的语句。后面的语句。单片机应用技术12/385.15.1.2 .2 汇编语言程序设计的一般步骤和基本框架汇编语言程序设计的一般步骤和基本框架 1、汇编语言程序设计的一般步骤、
14、汇编语言程序设计的一般步骤1 1)分析课题,确定算法或解题思路;)分析课题,确定算法或解题思路;2 2)根据算法或思路画出流程图;)根据算法或思路画出流程图;3 3)根据流程图编写程序;)根据流程图编写程序;4 4)上机调试源程序,进而确定源程序。)上机调试源程序,进而确定源程序。单片机应用技术13/382 2、STC12C5410AD单片机单片机汇编语言程序的设计框架:汇编语言程序的设计框架: ORG ORG0000H0000H LJMP LJMP MAIN MAIN ; ;跳转到主程序跳转到主程序 ORG ORG0003H0003H LJMP LJMP X0_ISR X0_ISR ; ;外
15、部中断外部中断0 0入口入口 ORG ORG000BH000BH LJMP LJMP T0_ISR T0_ISR ; ;定时器定时器0 0中断入口中断入口 ORG ORG0013H0013H LJMP LJMP X1_ISR X1_ISR ; ;外部中断外部中断1 1入口入口 ORG ORG001BH001BH LJMP LJMP T1_ISR ; T1_ISR ;定时器定时器1 1中断入口中断入口 ORG ORG0023H0023H LJMP LJMP UART_ISR ; UART_ISR ;串行通信中断入口串行通信中断入口 ORG ORG002BH 002BH LJMP LJMP ADC
16、SPI_ISR ;ADC_SPI ADCSPI_ISR ;ADC_SPI中断服务程序入口中断服务程序入口 ORG ORG0033H 0033H LJMP LJMP PCA_ISR ;PCA PCA_ISR ;PCA中断服务程序入口中断服务程序入口 ORG ORG0100H0100HMAIN: MOVMAIN: MOVSP,#70H ;SP,#70H ;设置堆栈指针设置堆栈指针 ;初始化内存区域内容初始化内存区域内容 ;设置有关设置有关SFR的控制字的控制字 ;开放相应的中断控制开放相应的中断控制MAINLOOP:MAINLOOP: ; ;主程序循环主程序循环 LJMP MAINLOOP LJM
17、P MAINLOOP单片机应用技术14/38;下面是各个中断服务子程序的入口下面是各个中断服务子程序的入口X0_ISR: ;外部中断外部中断0服务子程序服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETIX1_ISR: ;外部中断外部中断1服务子程序服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETIT0_ISR: ;定时器定时器0中断服务子程序中断服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETIT1_ISR: ;定时器定时器1中断服务子程序中断服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETIUART_ISR: ;串行通信
18、中断服务子程序串行通信中断服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETIADCSPI_ISR:;ADC和和SPI通信中断服务子程序通信中断服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETIPCA_ISR: ;PCA和和PWM中断服务子程序中断服务子程序 ;根据需要填入适当的内容根据需要填入适当的内容 RETI ;下面可以编写其他子程序或者使用下面可以编写其他子程序或者使用DB定义程序中所用的常数定义程序中所用的常数END 单片机应用技术15/385.2 5.2 汇编语言程序设计举例汇编语言程序设计举例 例例1 1 延时程序(时钟为延时程序(时钟为6 6M
19、HzMHz ) 入口:设延时时间入口:设延时时间N N(以毫秒为单位)送入以毫秒为单位)送入R0R0。 出口:延时到,退出程序,无参数传递。出口:延时到,退出程序,无参数传递。DELAY: MOV A,#240 ;当时钟为当时钟为6MHz,A计数到计数到240,约延时,约延时0.2msLOOP: DEC A JNZ LOOP DJNZ R0,DELAY RET单片机应用技术16/38 例例2 2 多字节无符号加法子程序多字节无符号加法子程序入口:被加数低字节地址在入口:被加数低字节地址在R0R0,加数低字节地址在加数低字节地址在R1R1,字节数在字节数在R2R2。出口:和的低字节地址在出口:和
20、的低字节地址在R0R0,字节数在字节数在R3R3。MPADDMPADD: PUSH PSW ; PUSH PSW ;保护标志寄存器内容。保护标志寄存器内容。 CLR CCLR C ; ;进位为清零进位为清零 MOV R3,#00H MOV R3,#00H ADD10ADD10: MOV A,R0 ; MOV A,R0 ;相加相加 ADDC A,R1ADDC A,R1 MOV R0,A MOV R0,A INC R0 ; INC R0 ;地址值增地址值增1 1 INC R1INC R1 INC R3 ; INC R3 ;字节数增字节数增1 1 DJNZ R2,ADD10DJNZ R2,ADD10
21、 ; ;所有字节未加完继续。所有字节未加完继续。 JNC ADD20 ;JNC ADD20 ;无进位去无进位去ADD20ADD20。 MOV R0,#01MOV R0,#01 ; ;和最高字节地址内容为和最高字节地址内容为0101H H INC R3 ; INC R3 ;字节数增字节数增1 1ADD20ADD20: POP PSW ; POP PSW ;恢复标志寄存器内容恢复标志寄存器内容 RET ;RET ;返主返主其他编程实例,请参见教材其他编程实例,请参见教材单片机应用技术17/385.3 5.3 利用利用KeilKeil uVision2 uVision2集成开发环境调试程序集成开发环
22、境调试程序 5.3.1 Keil uVision2集成开发环境简介集成开发环境简介 KeilKeil uVision2 uVision2 集成开发环境(集成开发环境(IDEIDE,以下简称以下简称uVision2uVision2)是一个基于是一个基于WindowsWindows的的开发平台,包含高效的编辑器、项目管理器和开发平台,包含高效的编辑器、项目管理器和MAKEMAKE工具。工具。uVision2uVision2支持所有的支持所有的KEIL KEIL 80518051工具,包括工具,包括C C编译器、宏汇编器连接编译器、宏汇编器连接/ /定位器、目标代码、到定位器、目标代码、到HEXHE
23、X的转换器。的转换器。uVision2uVision2通过以下特性加速嵌入式系统(单片机应用系统)的开发过程:通过以下特性加速嵌入式系统(单片机应用系统)的开发过程:全功能的源代码编辑器全功能的源代码编辑器器件库用来配置开发工具设置器件库用来配置开发工具设置项目管理器用来创建和维护项目项目管理器用来创建和维护项目 集成的集成的MAKEMAKE工具可以汇编编译和连接用户的嵌入式应用工具可以汇编编译和连接用户的嵌入式应用所有开发工具的设置都是对话框形式的所有开发工具的设置都是对话框形式的真正的源代码级的对真正的源代码级的对CPUCPU和外围器件的调试器和外围器件的调试器高级高级GDIAGDIGDI
24、AGDI接口用来在目标硬件上进行软件调试以及和接口用来在目标硬件上进行软件调试以及和Monitor-51Monitor-51进行通信进行通信与开发工具手册和器件数据手册和用户指南有直接的链接与开发工具手册和器件数据手册和用户指南有直接的链接单片机应用技术18/38Keil uVision2的安装的安装单片机应用技术19/385.3.2 5.3.2 KeilKeil uVision2 uVision2集成开发环境中调试单片机汇集成开发环境中调试单片机汇编语言程序的方法编语言程序的方法 uVision2 uVision2集成开发环境中包括一个项目管理器,它可集成开发环境中包括一个项目管理器,它可以
25、使单片机应用系统设计变得简单。要创建一个应用,需以使单片机应用系统设计变得简单。要创建一个应用,需要按下列步骤进行操作:要按下列步骤进行操作: 1 1)启动)启动uVision2uVision2,新建一个项目文件并从器件库中选择新建一个项目文件并从器件库中选择一个器件一个器件 2 2)新建一个源文件并把它加入到项目中)新建一个源文件并把它加入到项目中 3 3)针对目标硬件设置工具选项)针对目标硬件设置工具选项 4 4)编译项目并生成可以编程到程序存储器的)编译项目并生成可以编程到程序存储器的HEXHEX文件文件 5 5)下载到单片机中进行仿真调试)下载到单片机中进行仿真调试单片机应用技术20/
26、381.1.启动启动uVision2并创建一个项目并创建一个项目 新建一个项目文件新建一个项目文件 单片机应用技术21/38单片机型号单片机型号 选择单片机型号单片机应用技术22/38拷贝启动代码提示拷贝启动代码提示 选择的选择的CPU配置文件创建一个文件组配置文件创建一个文件组 单片机应用技术23/382新建一个源文件并把它加入到项目中新建一个源文件并把它加入到项目中新文件内容见下页新文件内容见下页 单片机应用技术24/38 【例例5-15-1】假设晶振频率为假设晶振频率为6MHz。将片内。将片内RAM30H3FH单元的内容清零,单元的内容清零,然后循环从然后循环从P1.0输出输出10ms方
27、波。方波。 ORGORG0000H0000HLJMPLJMPMAINMAINORGORG0100H0100HMAIN:MAIN:MOVMOVSP,#70HSP,#70H; ;设置堆栈指针设置堆栈指针MOVMOVR0,#30HR0,#30HMOVMOVR2,#10HR2,#10HCLRCLRA ALOOP1:LOOP1:MOVMOVR0,AR0,AINCINCR0R0DJNZDJNZR2,LOOP1R2,LOOP1 ; ;将将30H3FH30H3FH单元的内容清零单元的内容清零SETBSETBP1.0P1.0LOOP2:LOOP2:CPLCPLP1.0P1.0LCALLLCALLDELAYDEL
28、AYLJMPLJMPLOOP2LOOP2; ;输出方波输出方波DELAY: DELAY: ;10ms;10ms延时子程序延时子程序MOVMOVR2,#50R2,#50DLY_LOOP:DLY_LOOP:MOVMOVA,#240A,#240LOOP:LOOP:DECDECA AJNZJNZLOOPLOOPNOPNOPDJNZDJNZR2,DLY_LOOPR2,DLY_LOOPRETRETEND END 单片机应用技术25/38保存文件保存文件 输入文件名单片机应用技术26/38加入源程序文件到项目中加入源程序文件到项目中 选择文件类型选择文件类型,选择文件类型,然后选择文件然后选择文件单片机应用
29、技术27/383针对目标硬件设置工具选项针对目标硬件设置工具选项单片机应用技术28/384. 编译项目并生成可以编程到程序存储器的编译项目并生成可以编程到程序存储器的HEX文件文件自动填入与工程名相通的HEX文件名选中“Create HEX File”复选框1)设置编译选项,设置生成)设置编译选项,设置生成HEX文件文件单片机应用技术29/382)编译失败时的提示)编译失败时的提示双击错误信息行,可进行错误定位出错的行3)编译成功时的提示)编译成功时的提示单片机应用技术30/385对程序进行软件模拟调试或者下载到单片机中进行仿真调试对程序进行软件模拟调试或者下载到单片机中进行仿真调试选择软件模
30、拟调试功能 从从“Debug”菜单中选择菜单中选择“Start/Stop debug session”菜单项(快捷键是菜单项(快捷键是Ctrl+F5),),或者从工具条中单句或者从工具条中单句“Start/Stop debug session”按钮按钮 ,开始模拟调试过程。,开始模拟调试过程。 掌握常见的调式技术(连续运行、单步运行、单步跳过运行程序掌握常见的调式技术(连续运行、单步运行、单步跳过运行程序 、运行到光、运行到光标所在行标所在行 、设置断点、设置断点 、存储器查看、查看变量、查看外围等)、存储器查看、查看变量、查看外围等)单片机应用技术31/38设置断点的菜单项设置断点的菜单项
31、存储器查看窗口存储器查看窗口 单片机应用技术32/38片内片内RAM存储器查看窗口存储器查看窗口 P1口的观察窗口口的观察窗口 “Watch”窗口窗口 单片机应用技术33/385.5.4 4 利用利用ISP工具将程序下载到单片机中验证程序工具将程序下载到单片机中验证程序 1. 1. ISP下载程序的运行过程下载程序的运行过程 单片机彻底没电单片机上电,冷启动YNP3.0/RXD有合法下载命令流?下载用户程序到用户程序区软复位到用户程序区,运行用户程序单片机运行系统ISP监控程序单片机应用技术34/382. 使用使用ISP工具下载程序的步骤工具下载程序的步骤 启动启动ISP软件软件单片机应用技术
32、35/38下载程序时,可以按照下面的步骤进行:下载程序时,可以按照下面的步骤进行: (1)从)从“MCU Type”下拉框中选择所使用的单片机的型号,如选择下拉框中选择所使用的单片机的型号,如选择STC12C5410AD。 (2)单击)单击“OpenFile/打开文件打开文件”按钮打开要下载的用户程序文件。用户按钮打开要下载的用户程序文件。用户程序文件的后缀名为程序文件的后缀名为.bin或者或者.hex。第一次装入文件进缓冲区时,要选中第一次装入文件进缓冲区时,要选中“打开文件前清打开文件前清0缓冲区缓冲区”复选框,以清复选框,以清缓冲区。如果要装入几个文件进缓冲区,如缓冲区。如果要装入几个文
33、件进缓冲区,如EEPROM里的数据文件需要和应用里的数据文件需要和应用程序文件同时下载进单片机时,除每次均要指定缓冲区起始地址外,第二次及以程序文件同时下载进单片机时,除每次均要指定缓冲区起始地址外,第二次及以后不能清缓冲区。例如将要写入后不能清缓冲区。例如将要写入EEPROM区的数据文件装入从缓冲区区的数据文件装入从缓冲区2800H或或1000H开始的地方,并不清缓冲区,然后和应用程序一起写入。开始的地方,并不清缓冲区,然后和应用程序一起写入。 (3)在)在“COM”下拉框中选择计算机所用的串行口,如下拉框中选择计算机所用的串行口,如COM1、COM2等。等。有些新式笔记本电脑没有有些新式笔
34、记本电脑没有RS-232串行口,可买一条串行口,可买一条USB-RS232转接电缆(但不转接电缆(但不一定所有的电缆都能兼容可用,需要进行测试,作者可以帮助读者进行测试,或一定所有的电缆都能兼容可用,需要进行测试,作者可以帮助读者进行测试,或者直接从作者处邮购)。者直接从作者处邮购)。选择串行口后,根据实际使用效果,从选择串行口后,根据实际使用效果,从“最高波特率最高波特率”下拉框中选择限制最下拉框中选择限制最高通信波特率,如高通信波特率,如57600、38400或者或者19200等。等。单片机应用技术36/38 (4)进行时钟源的选择、启动下载的条件以及设置数据)进行时钟源的选择、启动下载的
35、条件以及设置数据Flash区是否清零。区是否清零。时钟源选择:选择下次冷启动后,时钟源为时钟源选择:选择下次冷启动后,时钟源为“内部内部R/C振荡器振荡器”还是还是“外部晶外部晶体或时钟体或时钟”。启动下载的条件:如果用户系统的启动下载的条件:如果用户系统的P3.0和和P3.1连接到了连接到了RS-485电路,推荐选电路,推荐选择择“下次冷启动下次冷启动P1.0/P1.1 等于等于0,0才可以下载程序才可以下载程序”,这样冷启动后如,这样冷启动后如P1.0和和P1.1不同时为不同时为0,单片机直接运行用户程序,免得由于,单片机直接运行用户程序,免得由于RS-485总线上的乱码造成总线上的乱码造
36、成单片机反复判断乱码是否为合法,浪费几百单片机反复判断乱码是否为合法,浪费几百ms的时间。实际上,如果用户系统的时间。实际上,如果用户系统本身本身P3.0和和P3.1就是做串行口使用,也建议选择就是做串行口使用,也建议选择“下次冷启动下次冷启动P1.0/P1.1 等于等于0,0才可以下载程序才可以下载程序”,以便下次冷启动直接运行用户程序。,以便下次冷启动直接运行用户程序。“下次下载用户用用程序时将数据下次下载用户用用程序时将数据Flash区一并清区一并清0”选项用于选择是否在下载选项用于选择是否在下载用户程序时,将数据用户程序时,将数据Flash区清零,默认设置是区清零,默认设置是“NO”。
37、 (5)单击)单击“Download/下载下载”按钮,将用户程序下载到单片机内部。重按钮,将用户程序下载到单片机内部。重复下载时,可重复执行该操作,也可单击复下载时,可重复执行该操作,也可单击“Re-Download/重复下载重复下载”按钮。按钮。 单片机应用技术37/38注意:注意: 下载时,一定要先单击下载时,一定要先单击“Download/下载下载”按钮,然后再给单片机上电复位按钮,然后再给单片机上电复位(先彻底断电),而不要先给单片机上电。如果先给单片机上电,单片机检测不(先彻底断电),而不要先给单片机上电。如果先给单片机上电,单片机检测不到合法的下载命令流,单片机就直接运行用户程序了
38、。到合法的下载命令流,单片机就直接运行用户程序了。 下载完成后,请将单片机的供电电源断开(有时需要稍等片刻,以将电源滤下载完成后,请将单片机的供电电源断开(有时需要稍等片刻,以将电源滤波电容存储的电释放),然后重新给单片机上电,新的设置才会生效,并执行用波电容存储的电释放),然后重新给单片机上电,新的设置才会生效,并执行用户程序。户程序。 单片机应用技术38/385.5.5 5 思考题思考题1.有有4个两位个两位BCD数以压缩形式存入数以压缩形式存入30H、31H、32H和和33H单元,将它们转换成单元,将它们转换成ASC码分别保存在码分别保存在40H开始单元中。试编程实现之并在开始单元中。试
39、编程实现之并在Keil uVision2集成开发环集成开发环境中进行模拟调试,观察运行结果。境中进行模拟调试,观察运行结果。2.试编制多字节试编制多字节BCD码加法程序。码加法程序。3.试编制一排序子程序,对试编制一排序子程序,对RAM区区40H49H单元中的无符号数按从大到小顺序排序。单元中的无符号数按从大到小顺序排序。利用利用Keil uVision2集成开发环境中进行模拟调试,观察运行结果。集成开发环境中进行模拟调试,观察运行结果。4.编写一乘法程序,实现两双字节数的乘法运算。编写一乘法程序,实现两双字节数的乘法运算。5.将存于外部将存于外部RAM中的中的1000H单元的字节二进制数(假定其值小于单元的字节二进制数(假定其值小于64H)转换为十进)转换为十进制数,以两位制数,以两位BCD码的形式存与内部码的形式存与内部RAM的的20H单元中。利用单元中。利用Keil uVision2集成开集成开发环境中进行模拟调试,观察运行结果。发环境中进行模拟调试,观察运行结果。6.分别编写延时分别编写延时1ms、100ms的子程序。设单片机的晶振为的子程序。设单片机的晶振为12MHz。