中山学院单片机综合实验报告-汇编程序设计二

合集下载

单片机汇编实验报告

单片机汇编实验报告

单片机汇编实验报告
《单片机汇编实验报告》
实验目的:通过实验,掌握单片机汇编语言的基本语法和操作方法,了解单片
机的工作原理和程序设计。

实验内容:本次实验主要涉及单片机汇编语言的基本指令和操作,包括数据传送、算术运算、逻辑运算、循环控制、条件控制等内容。

通过实验,学生将学
会如何编写简单的单片机程序,并能够通过仿真和调试实现程序的正确运行。

实验步骤:
1. 熟悉单片机汇编语言的基本指令和操作方法;
2. 编写简单的单片机程序,包括数据传送、算术运算、逻辑运算等;
3. 运行程序并进行仿真和调试,确保程序的正确运行;
4. 分析程序的运行结果,总结实验中遇到的问题和解决方法。

实验结果:通过实验,学生将掌握单片机汇编语言的基本语法和操作方法,能
够编写简单的单片机程序,并能够通过仿真和调试实现程序的正确运行。

同时,学生还将对单片机的工作原理和程序设计有更深入的了解,为以后的学习和实
践奠定基础。

结论:通过本次实验,学生将对单片机汇编语言有更深入的了解,并能够熟练
地编写单片机程序。

同时,实验还将培养学生的动手能力和解决问题的能力,
为将来的学习和工作打下坚实的基础。

希望学生能够在以后的学习和实践中不
断提升自己,为科技创新做出更大的贡献。

单片机实验报告2

单片机实验报告2

单片机程序设计实验实验报告实验名称学号姓名日期一、实验内容I/O控制数码管利用单片机I/O输出直接控制数码管二、程序流图及说明三、程序清单/*IO实验*/// Target : M128// Crystal: 11.059Mhz#include <iom128v.h>#include <macros.h>//#define a[]={0x3f,0x06,0x5B,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay_1ms(void)//延时1ms{int i;for (i=0;i<1140;i++);}void delay(int n)//延时n ms{int i=0;for (i=0;i<n;i++)delay_1ms();}void port_init(void)//IO口初始化{PORTA = 0x00;DDRA = 0x00;PORTB = 0x00;DDRB = 0x00;PORTC = 0x00;DDRC = 0x00;PORTD = 0x00;DDRD = 0x00;PORTE = 0x00;DDRE = 0x00;PORTF = 0x00;DDRF = 0x04;PORTG = 0x00;DDRG = 0x00;}//call this routine to initialize all peripheralsvoid init_devices(void){//stop errant interrupts until set upCLI(); //disable all interruptsXDIV = 0x00; //xtal dividerXMCRA = 0x00; //external memoryport_init();MCUCR = 0x00;EICRA = 0x00; //extended ext intsEICRB = 0x00; //extended ext intsEIMSK = 0x00;TIMSK = 0x00; //timer interrupt sourcesETIMSK = 0x00; //extended timer interrupt sourcesSEI(); //re-enable interrupts//all peripherals are now initialized}//void main(void){unsigned char a[10]={0x3f,0x06,0x5B,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; char m;int n;init_devices();//初始化while(1){DDRA = 0xff; //A端口输出DDRB = 0x00; //B端口输入PORTB = 0xff;//m=PORTB;//m & 0x00;//点亮D1(LED)for(n=5;n<10|n>=0;){if(!(PINB&1)){PORTA=a[n];delay(1000);//延时20msn++;if(n>9){n=0;}}else{PORTA=a[n];delay(1000);//延时20msn--;if(n<0){n=9;}}}}}四、存在问题及解决办法基本实现计数之后,在及时转换加减时出现问题,最后发现程序中对键盘的判定不准确,更改后实现了及时转换功能;在实现及时转换功能之后,转换之后的运算并不能正常输出,之后发现是范围超出,对程序加上限制之后很好地实现了功能;。

中山大学单片机实验(Word)

中山大学单片机实验(Word)

实验六键盘显示接口实验一、实验目的1、掌握8255A编程原理2、了解键盘电路的工作原理(键盘电路见附图)3、掌握键盘接口电路的编程方法4、掌握LED数码管动态显示的编程方法二、实验说明1、识别键的闭合,通常采用行扫描法和行反转法行扫描法是使键盘上某一行先为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。

本实验采用的是行反转法2、程序设计时,要学会灵活地对8255A的各端口进行方式设置3、程序设计时,可将各键对应的键值(行线值,列线值)放在一个表中,将要显示的0~ F字符放在另一个表中,通过查表来确定按下的哪一个键并正确显示出来三、实验内容内容一:利用8255A做矩阵键盘一、利用实验箱上的8255A可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘每按一个数字键(0~F),用发光二极管将该代码显示出来。

二、连线方法:将键盘RL10~RL17接8255A的PB0~PB7;KA10~KA12接8255A 的PA0~PA2;PC0~PC7接发光二极管的L1~L8;8255A芯片的片选信号8255CS接CS0。

三、代码;8255键盘实验PA EQU 0CFA0HPB EQU PA+1PC0 EQU PB+1PCTL E QU PC0+1ORG 4000HLJMP STARTORG 4100HSTART:MOV 42H,#0FFH ;42H中放显示的字符码,初值为0FFHSTA1:MOV DPTR,#PCTL ;设置控制字,ABC口工作于方式0MOV A,#82H ;AC口输出而B口用于输入LINE:MOV DPTR,#PC0 ;将字符码从C口输出显示MOV A,42HCPL AMOVX @DPTR,AMOV DPTR,#PA ;从A口输出全零到键盘的列线MOVX @DPTR,AMOV DPTR,#PB ;从B口读入键盘行线值MOVX A,@DPTRMOV 40H,A ;行线值存于40H中CPL A ;取反后如为全零JZ LINE ;表示没有键闭合,继续扫描MOV R7,#10H ;有键按下,延时10MS去抖动DL0:MOV R6,#0FFHDL1:DJNZ R6,DL1DJNZ R7,DL0MOV DPRT,#PCTL ;重置控制字,让A为输入,BC为输出MOV A,#90HMOVX @DPTR,AMOV A,40HMOV DPTR,#PB ;刚才读入的行线值取出从B口送出MOVX @DPTR,AMOV DPTR,#PA ;从A口读入列线值MOVX A,@DPTRMOV 41H,A ;列线值为存入41H中CPL A ;取反后如为全零JZ STA1 ;表示没有键按下MOV DPTR,#TABLE ;TABLE表首地址送DPTRMOV R7,#18H ;R7中置计数值16MOV R6,#00H ;R6中放偏移量初值TT:MOVX A,@DPTR ;从表上取键码前半字节,行线值与实CJNE A,40H,NN1 ;际输入的行线值相等吗?不等转NN1 INC DPTR ;相等,指针指向后半字节,即列线值MOVX A,@DPTR ;列线值与列线值CJNE A,41H,NN2 ;不相等吗?不等转NN2MOV DPTR,#CHAR ;相等,CHAR表基址和R6中的依偏移量MOV A,R6 ;取出相应的字条码MOVC A,@A+DPTRMOV 42H,A ;字符码存于42HBBB: ;重置控制字,让AC为输出,B为输入MOV A,#82HMOVX @DPTR,AAAA:MOV A,42H ;将字符码从C口送到二极管显示MOV DPTR,#PC0CPL AMOVX @DPTR,AMOV DPTR,#PA ;判断按下的键是否释放CLR AMOVX @DPTR,AMOV DPTR,#PBMOVX A,@DPTRCPL AJNZ AAA ;没有释放转AAAMOV R5,#02 ;已释则延时0.2秒,减少总线负担DEL1:mov R4,#200DEL2:MOV R3,#126DEL3:DJNZ R3,DEL3DJNZ R4,DEL2DJNZ R5,DEL1JMP START ;转STARTNN1:INC DPTR ;指针指向后半字节即列线值NN2:INC DPTR ;指针指向下一键码前半字节即行线值INC R6 ;CHAR表偏移量加一DJNZ R7,TT ;计数值减一,不为零则转TT继续查找JMP BBBTABLE: ;TABLE为键值表,每个键位占DW 0FE06H,0FD06H,0FB06H,0F706H ;两个字节,第一个字节为行DW 0BF06H,07F06H,0FE05H,0FD05H ;线值,第二个为列线值DW 0EF05H,0DF05H,0BF05H,07F05HDW 0FB03H,0F703H,0EF03H,0DF03HCHAR: ;字符码表DB 00H,01H,02H,03H,04H,05H,06H,07,08H,09HDB 0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,13HDB 14H,15H,16H,17HEND内容二:自编程序一、设计一个3X3的矩阵键盘,行和列都与用单片机P1口直接相连,用扫描法编写程序读取键盘信息,并在最左边数码管上直接显示出来。

单片机汇编实验报告

单片机汇编实验报告

单片机汇编实验报告1. 实验目的本实验旨在通过编写单片机汇编程序,掌握单片机的基本操作,理解汇编语言和单片机的工作原理。

2. 实验器材•STC89C52单片机开发板•串口线•电脑3. 实验原理单片机是一种集成了处理器、存储器、输入输出设备等功能的微型计算机系统。

通过编写汇编语言程序,可以利用单片机的内部寄存器和外部接口,实现各种功能。

4. 实验步骤步骤一:准备工作1.将STC89C52单片机开发板与电脑通过串口线连接。

2.打开开发板电源,确保电源工作正常。

步骤二:编写汇编程序1.打开汇编语言编辑器,例如Keil C51。

2.创建一个新的汇编语言项目,命名为“experiment.asm”。

3.编写汇编程序,实现所需的功能。

例如,可以编写一个简单的程序,使LED灯闪烁。

步骤三:编译和烧录程序1.选择适当的编译选项,将汇编程序编译为二进制文件。

2.将生成的二进制文件烧录到单片机中。

可以使用烧录软件或者编程器完成这一步骤。

步骤四:连接外部电路1.根据需要,连接外部电路到单片机的GPIO引脚。

例如,如果需要控制LED灯,可以将LED的阳极连接到单片机的某个输出引脚,将LED的阴极连接到单片机的地。

步骤五:运行实验1.将开发板连接到电源,确保电源正常工作。

2.按下开发板上的复位按钮,使单片机开始执行程序。

3.观察实验现象,并记录下实验结果。

5. 实验结果与分析通过以上步骤,我们成功编写并烧录了一个简单的汇编程序到单片机中。

在运行实验时,LED灯按照程序的要求进行闪烁。

这表明我们的实验设计和编程是正确的。

6. 实验总结在本次实验中,我们通过编写汇编程序,学习了单片机的基本操作和工作原理。

通过实际操作,我们更好地理解了汇编语言的编写和单片机的工作方式。

同时,我们还学会了使用烧录软件将程序烧录到单片机中,并通过外部电路观察实验结果。

7. 实验改进在以后的实验中,我们可以尝试更复杂的功能,例如通过单片机控制电机或者LCD显示屏等。

单片机汇编实验报告

单片机汇编实验报告
XCH A, @R1
MOV @R0, A
LP3:INC R1
DJNZ R6, LP2
INC R0
DJNZ R7, LP1
MOV A,30H
MOV P1,A
MOV A,39H
MOV P2,A
SJMP $
END
实验三中断系统实验
二、实验目的
了解MCS-51单片机的中断原理,掌握中断程序的设计方法。
二、实验内容
DJNZ R6, DLP1
RET
END
实验四中断系统实验
三、实验目的
1.了解MCS-51单片机定/计数器的工作原理与工作方式;
2.掌握定时/计数器T0和T1在定时器和计数器两种方式下的编程;
3.学习定时/计数器T2的可编程时钟输出功能。
二、实验内容
1.使用定时器0与定时器1进行定时,在P1.0和P1.1引脚上输出方波信号,通过示波器观察波形输出,测量并记录方波周期。
四、实验源程序
;功能描述:将00H--0FH共16个数写入片内RAM区30H--3FH.
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:MOV R1, #30H;片内RAM首地址
MOV A, #00H;写入数据初值
MOV R7, #10H;循环变量
LOOP1:MOV @R1, A;写数据到RAM
2.在单片机片内RAM的30H~39H写入10个数,编写实验程序,将这10个数按照由小到大的顺序排列,仍写入RAM的30H~39H单元中。
四、实验源程序
//0-F数据转换为ASCII码实验
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV DPTR,#TAB

单片机综合实验报告

单片机综合实验报告

摘要单片机应用技术课程为一门理论与实践相结合的课程,本课程安排的实验旨在培养学生软硬件开发能力,用编程语言及硬件设备实现串、并行通讯、计数/定时、A/D、D/A等硬件接口的功能,进一步加深对常用硬件芯片的了解和应用,以及学习用单片机解决实际问题。

实验要求学生利用编程语言及硬件设备实现单片机的方案设计、程序编写、硬件连接、调试,从中体会具体硬件接口的应用技巧,进一步理解硬件接口芯片,逐步掌握单片机系统的开发和应用方法。

此次试验设计主要以STC89C52RC单片机为核心,由系统开发板、74LS138译码器、8253计数器等元件构成跑马灯以及方波的相关试验。

基于题目基本要求,首先我熟悉单片机最小系统的组成和工作原理,熟悉Keil C51集成环境软件的使用方法。

然后根据系统要求设计电路图,编写汇编语句,购买试验器件,焊接试验电路。

最后进行试验调试。

通过自己不懈的努力,最终完成了试验。

目录实验一构建单片机最小系统和实验环境熟悉 (2)第一部分:实验要求 (2)一、预习要求 (2)二、实验目的 (2)三、实验内容 (2)3.1单片机最小系统实验 (2)第二部分:实验过程 (2)一、单片机最小系统实验 (2)二、实验总结 (4)通过这次实验让我们对单片机最小系统有了一个清晰的认识,为下面的试验打好了基础。

实实验二跑马灯实验及74HC138译码器 (4)第一部分:实验要求 (5)一、预习要求 (5)二、实验目的 (5)三、实验内容 (5)3.1跑马灯实验: (5)3.2 74HC138译码器实验: (5)第二部分:实验过程 (5)一、通过74HC138译码器实现跑马灯 (5)1.1 74HC138译码器介绍 (5)1.1.1 74HC138译码器引脚图 (6)1.1.2 74HC138译码器真值表 (6)1.2 74ls138跑马灯原理图 (7)1.3程序流程图 (7)1.4实验程序代码 (8)三、调试结论 (9)实验三8253方波实验 (10)第一部分:实验要求 (10)一、预习要求 (10)二、实验目的 (10)三、实验内容 (10)第二部分:实验过程 (10)一、8253芯片介绍 (10)1.1 8253引脚图 (10)1.2 8253工作方式 (11)二、使用8253产生方波 (12)2.1实验原理图 (13)2.2程序流程图 (13)2.3实验程序代码 (14)三、调试结论 (15)实验课程总结 (16)参考文献 (16)实验一构建单片机最小系统和实验环境熟悉第一部分:实验要求一、预习要求1.构建单片机最小系统,熟悉51单片机的结构及编程方法。

电子科技大学中山学院学生实验报告

电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验班级:姓名:学号:组别:实验名称:实验四可编程并行接口8255(方式0)实验时间:成绩:教师签名:批改时间:一、实验目的和任务掌握8255方式0的工作原理及使用方法。

二、实验内容1.实验电路如图4-1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。

2. 编程从8255C口输入数据,再从A口输出。

图4-1 图4-2编程提示:1)8255控制寄存器端口地址28BHA口的地址288HC口的地址28AH2)参考流程图(见图4-2)三、实验过程和数据记录1.源程序:电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验班级:姓名:学号:组别:实验名称:实验五七段数码管实验时间:成绩:教师签名:批改时间:一、实验目的和任务掌握数码管显示数字的原理。

二、实验内容1.静态显示:按图5-1连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。

编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。

2.动态显示:按图5-2连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255 C口的PC1,PC0。

编程在两个数码管上显示“56”。

3.动态显示:使用图5-2的电路,编程在两个数码管上循环显示“00-99”。

图5-1 图5-2编程提示:1)实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。

中山学院单片机综合实验报告-键盘、数码管与点阵管实验

{0x00,0x18,0x20,0x38,0x24,0x24,0x18,0x00}, //'6'
{0x00,0x3C,0x04,0x08,0x10,0x10,0x10,0x00}, //'7'
{0x00,0x18,0x24,0x24,0x18,0x24,0x24,0x18}, //'8'
{0x00,0x18,0x24,0x24,0x1C,0x04,0x24,0x18}, //'9'
P3.4、P3.5用于读取矩阵键盘的列状态,P2.3、P4.4的作用为:P2.3=1时,数码管和点阵管均关闭显示,P2.3=0而P4.4=1或0时,数码管或点阵管开通显示。
3、实验内容和步骤
1、在8个数码上顺序显示0-7八个数字。程序代码如下所示:
#include <reg52.h>
unsigned lettern[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
{0x0C,0x12,0x12,0x12,0x1E,0x12,0x12,0x00}, //'A'
{0x0E,0x09,0x09,0x0E,0x09,0x09,0x09,0x0E}, //'B'
{0x00,0x1C,0x20,0x20,0x20,0x20,0x1C,0x00}, //'C'
{0x0E,0x1C,0x12,0x12,0x12,0x12,0x1C,0x00}, //'D'
unsigned lettern[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

单片机程序设计实训报告

一、实训目的通过本次单片机程序设计实训,使学生掌握单片机程序设计的基本方法和步骤,提高学生的实际操作能力和编程技巧,培养学生在电子工程领域中的实践能力。

同时,通过实训加深对单片机原理、指令系统、接口技术等方面的理解,为后续单片机技术课程的学习打下坚实基础。

二、实训内容1. 实训环境本次实训采用Keil C51软件进行单片机程序设计,仿真平台为Proteus。

2. 实训任务(1)熟悉单片机硬件结构及指令系统;(2)掌握单片机C语言编程技巧;(3)熟练运用Proteus进行仿真实验;(4)设计并实现以下功能:①控制LED灯闪烁;②实现按键输入,控制LED灯点亮或熄灭;③实现定时器中断,控制LED灯以一定频率闪烁。

三、实训过程1. 熟悉单片机硬件结构及指令系统在实训过程中,我们首先学习了单片机的硬件结构,包括CPU、存储器、输入/输出接口等。

同时,我们掌握了8051单片机的指令系统,包括数据传送、算术运算、逻辑运算、控制转移等指令。

2. 掌握单片机C语言编程技巧在实训过程中,我们学习了单片机C语言的语法规则,掌握了变量声明、数据类型、运算符、函数等基本概念。

通过编写简单的程序,我们熟悉了单片机C语言编程的基本技巧。

3. 熟练运用Proteus进行仿真实验Proteus是一款功能强大的仿真软件,能够模拟单片机的硬件电路和程序运行。

在实训过程中,我们学会了如何使用Proteus创建电路图、添加元器件、设置仿真参数等操作。

通过仿真实验,我们验证了程序的正确性,提高了编程能力。

4. 设计并实现以下功能(1)控制LED灯闪烁设计思路:使用定时器中断,每隔一定时间改变LED灯的状态。

程序代码:```c#include <reg51.h>void Timer0_Init() {TMOD = 0x01; // 设置定时器模式为模式1TH0 = 0xFC; // 设置定时器初值TL0 = 0x18; // 设置定时器初值ET0 = 1; // 使能定时器0中断EA = 1; // 使能全局中断}void main() {P1 = 0xFF; // 初始化LED灯状态Timer0_Init(); // 初始化定时器while (1) {// 主循环}}void Timer0_ISR() interrupt 1 {TH0 = 0xFC; // 重新装载定时器初值TL0 = 0x18; // 重新装载定时器初值P1 ^= 0x01; // 切换LED灯状态}```(2)实现按键输入,控制LED灯点亮或熄灭设计思路:使用外部中断,检测按键状态,控制LED灯点亮或熄灭。

汇编语言程序设计实验报告

2.掌握汇编语言源程序的执行过程。
二、实验内容
P131作业29。
实验三子程序设计实验
一、实验目的
1.掌握汇编语言源程序子程序设计方法;
2.会使用CV软件工具。
二、实验内容
把实验二作为子程序,编写主程序来对能否构成三角形进行10判断。
实验四宏汇编程序设计实验
一、实验目的
1.掌握宏汇编程序编程技术及宏调用的方法;
2.主模块程序完成子程序的调用,及判断结果的显示,程序名为:ZHU.asm。
实验五混合程序的开发实验
一、实验目的
1.了解混合调用中的参数设置;
2.掌握混合调用的方法;
二、实验内容
P156第5题。
实验一单指令功能测试实验
一、实验目的
1.会使用DEBUG软件;
2.利用DEBUG单步执行功能测试指令的执行。
二、实验内容
判断从键盘输入的ASCII码数字,若是小于等于5,显示“C”,若是大于5显示“D”。假设输入的只可能是0~9数字。
实验二完整的汇编语言程序设计实验
一、实验目的
1.掌握完整的汇编语言源程序的设计方法;
实验五多模块程序设计实验
一、实验目的
1.掌握汇编段的属性的含义;
2.掌握利用LINK将多模块连接起来的方法;
3.掌握利用库文件将多模块连接起来的方法。
二、实验内容
假设内存单元中有三个字a、b和c,编写一个程序,它可判断它们能否构成一个三角形,若能,显示“Y”,否则,显示“N”;
具体要求:
1.三角形的判断程序为一模块子程序,程序名为:ABC.asm。入口参数:字节变量a、b、c。出口参数:字节变量d=1是三角形,d=0不是三角形。
2.了解COM文件的编程方法及特点;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设有一带符号的数组存放在内部RAM以20H为首址的连续单元中,数组长度为30,要求找出其中的最大值,并将其存放到内部RAM的1FH单元中。
程序代码如下所示:
ORG0000H
JMPMAIN
ORG0100H
MAIN:MOV R0,#20H
MOV A,#0
MOV R1,#30
MOV DPTR,#TAB
LOOP1: PUSH ACC
MOVC A,@A+DPTR
MOV @R0,A
POP ACC
INC R0
INC A
DJNZ R1,LOOP1
MOVR0,#20H
MOVB,#29
MOVA,@R0
LOOP:INC R0
MOV R1,A
XRLA,@R0
JBACC.7,LAT
MOVA,R1
CLR C
SUBB A,@R0
JNB ACC.7,AA
NOP
CXA:MOV A,@R0
SJMP BB
LAT:XRL A,@R0
JNB ACC.7,BB
SJMP CXA
AA:MOV A,R1
BB:DJNZ B,LOOP
MOV 1FH,A
TAB:DB-7,9,34,11,-43
DB-27,29,4,21,-13
DB-17,19,24,41,-23
DB-37,49,14,31,-53
DB-47,59,54,51,-54
DB-57,69,44,61,-45
END
3、子程序:同一个程序中,往往有许多地方都需要执行同一任务,这时可对这项任务独立编写。
实验内容:设0、1、...、9存放在内部RAM的20H开始的存储区域内,对其进行平方运算,计算所得结果存放在R3、R2中。要求:平方运算编写成子程序SORT,主程序通过调用SORT并求和完成运算。参数的传递用累加器。
本实验在实验一基础上,要求掌握分支、循环结构程序以及子程序的设计方法。
3、实验内容和步骤
1、分支程序:是根据要求无条件或有条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。
设变量x以补码形式存放在片内RAM的30H单元中,变量y与x的关系如下:
程序代码如下所示:
ORG0000H
JMPMAIN
ORG0100H
MAIN:MOV30H,#0H
MOVA,30H
JZNEXT
ANLA,#80H
JZED
MOVA,#05H
ADDA,30H
MOV30H,A;(30H)=20H
SJMP ED
NEXT:MOV30H,#20H
ED:SJMP $
END
2、循环程序:循环程序一般包含四部分:初始化部分、循环处理部分、循环控制部分和循环修改部分。
四、实验心得
ACALL SORT
ADD A,R2
MOVR2,A
MOV A,R3
ADDC A,#0
MOV R3,A
INC R0
DJNZ R7,LOOP
SJMP EN
SORT:MOV DPTR,#TAB
MOVC A,@A+DPTR
RET
TAB:DB 0,1,4,9,16
DB25,36,49,64,81
EN:NOP
END
电子科技大学中山学院学生实验报告
院别:电子信息学院课程名称:单片机综合实验
实验名称
汇编程序设计二
实验时间
成绩
批改时间
报告内容
一、实验目的和任务
1、掌握分支、循环结构程序以及子程序的设计方法。
2、进一步熟悉Keil C51集成开发环境。
2、实验原理简介
在汇编语言程序设计中,普遍采用结构化程序设计方法。因为任何复杂的程序都可由顺序结构、分支结构及循环结构等构成。每种结构只有一个入口和出口,整个程序也只有一个入口和出口。结构化程序设计的特点是程序的结构清晰、易于读写和验证、可靠性高。结构化程序设计的基本方法有顺序结构、分支结构、循环结构、子程序。
ORG0000H
JMPMAIN
ORG0100H
MAIN:MOV R1,#20H
MOVR2,#10
MOV A,#0
LOOP1:MOV @R1,A
INC R1
INC A
DJNZ R2,LOOP1
MOV R0,#20H
MOVR C
LOOP:MOV A,@R0
相关文档
最新文档