欢迎访问有用文档网!

当前位置: 有用文档网 > 述职报告 >

单片机实验报告1

| 浏览次数:

 单片机实验报告 实验一

 数据传送 (RA M – 〉XRA M)

 一、实验目得

 熟悉星研集成环境软件或熟悉 Keil C51集成环境软件得使用方法。

 熟悉 MCS51 汇编指令,能自己编写简单得程序,掌握数据传输得方法。

 二、实验内容

 1、熟悉星研集成环境软件或熟悉Keil C51 集成环境软件得安装与使用方法。

 2、编写程序,实现内外部数据段得传送、校验。

 三、程序框图

 开始 堆栈指针初始化计数器、地址初始化内部RAM数据传送外部RAM一次地址指针+1

  计数器-1=0?计数器、地址指针复位取内部RAM和对应的外部RAM比较是否相等地址指针+1

 计数器-1=0?传送正确传送错误结束NNYYYN数据传送程序框图 四、实验步骤

 MAR 据数部外测检,序程试调式方点断、步单用使;据数入输中HF3~ H03 MAR 部内在ﻩ得 1000H ~100FH 中得内容。熟悉查瞧特殊功能寄存器、内部数据 RAM、外部数据空间得各种方法. 五、程序清单

 ;将内部RAM Address1 开始得 16个字节送到外部RAM从 Address2开始得单元里,再作比较。

 Address1 DATA 30H

 Address2 XDATA 1000H

  ORG 0000H

  LJMP STAR

  ORG 0100H

 STAR: MOV SP,#60H

  MOV R0,#Address1

  MOV DPTR,#Address2

  MOV R7,#10H

 STAR1: MOV A,R0 ;传送

  MOVX DPTR,A

  INC R0

  INC DPTR

  DJNZ R7,STAR1

  MOV R0,#Address1

  MOV DPTR,#Address2

  MOV R7,#10H

 STAR2: MOV B,R0 ;比较

 MOVX A,DPTR

  CJNE A,B,STAR3

  INC R0

  INC DPTR

  DJNZ R7,STAR2

  SJMP $ ;传送正确 STAR3: SJMP $ ;传送错误

 END

  实验二

 双字节 D BCD 码( ( 十进制数) ) 加法

 一、实验目得

 熟悉51 汇编指令,学会使用星研集成环境软件,能自己编写简单得程序,熟悉BCD 码,了解如何调用系统提供得子程序. 二、实验内容

 从键盘上输入4位被加数、加数,实现双字节 BCD 码(四位数)得加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改 PC 指针、全速运行等各种调试手段;熟悉查瞧特殊功能寄存器、内部数据RAM、外部数据空间得各种方法。

 三、实验框图

 开始初始化堆栈设定"先清LED,再接收键输入"标志通过键盘获得4位被加数(压缩BCD码)置位"接收到第一个键后才清除LED"标志通过键盘获得4位加数(压缩BCD码)被加数与加数的低位字节不带进位加法被加数与加数的高位字节带进位加法十进制调整十进制调整压缩BCD码(结果)转换为非压缩BCD码高位0消隐显示结果双字节BCD加法程序框图

 四、实验步骤

 、1 :明说线连ﻩD3 区 :CLK -- B2区:2M D3 区 :CS -- A3 区:CS5 D3区 :A0 -— A3区:A0 2、在 F4 区得键盘上输入 4 位被加数、加数 3、结果显示在 F4 区得数码管上 五、程序清单

 EXTRN CODE(Display8, GetBCDKey)

  Buffer DATA 30H ;8 字节显示缓冲区 F1 BIT 0D1H ;PSW、1

 ORG 0000H

  LJMP START

  ORG 0100H

 START: MOV SP,#60H

  CLR F1 ;先清除显示,再接收键输入 START1: MOV R0,#buffer

  MOV A,#4 ;按键次数

 LCALL GetBCDKey ;得到双字节十进制数(被加数)

 SETB F1 ;接收到第一个键,才清除显示

 MOV R0,#buffer+4

  MOV A,#4 ;按键次数

 LCALL GetBCDKey ;得到双字节十进制数(加数)

  MOV A,buffer+1

  ADD A,buffer+5

  DA A

  MOV buffer+5,A

  MOV A,buffer

  ADDC A,buffer+4

  DA A

  MOV buffer+4,A

  CLR A

  RLC A

 Display: PUSH ACC ;显示结果

 MOV R0,#buffer

  MOV A,buffer+5 ;低位

 ACALL B1toB2 ;压缩 BCD 码转换成非压缩 BCD 码

 MOV A,buffer+4 ;高位

 ACALL B1toB2

  POP ACC ;进位

 ACALL B1toB2

  MOV R0,#10H ;最高二位消隐

 INC R0

  MOV R0,#10H

  MOV R0,#buffer+5

  MOV R7,#5

  ACALL BlackDisplay ;将高位 0 消隐

 MOV R0,#buffer

  LCALL Display8

  SJMP START1

 ;将一个字节压缩 BCD 码转换成二个字节非压缩 BCD 码 B1toB2: PUSH ACC

  ANL A,#0FH

  MOV R0,A

  INC R0

  POP ACC

  ANL A,#0F0H

  SWAP A

  MOV R0,A

  INC R0

  RET

  Bla ckDisplay: MOV A,R0 ;将高位0消隐

 JNZ Exit

  MOV A,#10H

  MOV R0,A

  DEC R0

  DJNZ R7,BlackDisplay

 Exit: RET

 END

  实验三

 双字节 D BCD 码(十进制数)减法

 一、实验目得

 熟悉51 汇编指令,学会使用星研集成环境软件,掌握汇编语言得设计与调试方法.能瞧懂程序流程框图,能自己设计程序,熟悉 BCD 码、补码,了解如何调用系统提供得子程序。

 二、实验内容

 从键盘上输入4位被减数、减数,实现双字节 BCD 码(四位数)得减法,结果显示在数码管上;进一步熟悉使用断点、单步进入、单步、运行到光标处、修改 PC指针、全速运行等各种调试手段;熟悉查瞧特殊功能寄存器、内部数据 RAM、外部数据空间得各种方法。

 三、程序框图

 设定"先清LED,再接收键输入"标志堆栈初始化开始通过键盘获得双字节十进制被减数(压缩BCD码)置位"接收到第一个键后才清除LED"标志通过键盘获得双字节十进制减数(压缩BCD码)减数进行十进制取补双字节十进制加法操作C=1?C=0,有进位(结果为负),再执行一次求补运算,调整为正数高位0消隐,若结果为负,前面加上"-"显示结果YN双字节十进制减法程序框图

 四、实验步骤

 、1 :明说线连ﻩD3 区 :CLK —— B2区:2M

 D3 区 :CS —— A3 区:CS5 D3 区 :A0 —— A3 区:A0 2、在 F4 区得键盘上输入 4 位被减数、减数 3、结果显示在 F4区得数码管上 五、程序清单

 EXTRN CODE(Display8, GetBCDKey)

  Buffer DATA 30H ;8 字节显示缓冲区 F1 BIT 0D1H ;PSW、1

 ORG 0000H

  LJMP START

  ORG 0100H

 START:

 MOV SP,#60H

  CLR F1 ;先清除显示,再接收键输入 START1: MOV R0,#buffer

  MOV A,#4 ;按键次数

 LCALL GetBCDKey ;得到双字节十进制数(被减数)

 SETB F1 ;接收到第一个键,才清除显示

 MOV R0,#buffer+4

  MOV A,#4 ;按键次数

 LCALL GetBCDKey ;得到双字节十进制数(减数)

 MOV A,#9AH

  CLR C

  SUBB A,buffer+5

  MOV buffer+5,A

  MOV A,#99H

  CLR C

  SUBB A,buffer+4

  MOV buffer+4,A ;减数取补

 MOV A,buffer+1

  ADD A,buffer+5

  DA A

  MOV buffer+5,A

  MOV A,buffer

  ADDC A,buffer+4

  DA A

  MOV buffer+4,A

  MOV F0,C ;借位标志

 JC Display

  MOV A,#9AH

  SUBB A,buffer+5

  MOV buffer+5,A

  MOV A,#99H

  SUBB A,buffer+4

  XCH A,buffer+5

  ADD A,#00H

  DA A

  XCH A,buffer+5

  ADDC A,#00H

  DA A

  MOV buffer+4,A

 Display:

 MOV R0,#buffer ;显示结果

 MOV A,buffer+5 ;低位

 ACALL B1toB2 ;压缩BCD 码转换成非压缩 BCD 码

 MOV A,buffer+4 ;高位

 ACALL B1toB2

  MOV R0,#10H ;最高四位消隐

 INC R0

  MOV R0,#10H

  INC R0

  MOV R0,#10H

  INC R0

  MOV R0,#10H

  MOV R0,#buffer+3

  MOV R7,#3

  ACALL BlackDisplay ;将高位 0 消隐

 MOV R0,#buffer

  LCALL Display8

  SJMP START1

 BlackDi splay:

 MOV A,R0 ;将高位 0 消隐

 JNZ Exit

  MOV A,#10H

  MOV R0,A

  DEC R0

  DJNZ R7, B l a c kDisplay

 Exit: JB F0,Exit1

  INC R0

  MOV R0,#11H ;负数标志 Exit1: RET

  B1toB2: PUSH ACC

 ANL A,#0FH

  MOV R0,A

  INC R0

  POP ACC

  ANL A,#0F0H

  SWAP A

  MOV R0,A

  INC R0

  RET

  BlackDispl ay:

 MOV A,R0

  JNZ Exit

  MOV A,#10H

  MOV R0,A

  DEC R0

  DJNZ R7,BlackDisplay

 Exit:

 RET

  END

 四 实验四 数制进十转数制进六十节字四ﻩ 四字节十六进制数转十进制数

 一、实验目得

 进一步熟悉51 汇编指令,了解十六进制数转十进制数得方法. 二、实验内容

 从键盘上输入 8 位十六进制数,实现四字节十六进制数转8位十进制数,并在数码管上显示。注意输入数据必须在00000000H~05F00000H 范围,否则,结果超出8位十进制数,无法正确显示。

 三、程序框图

 初始化堆栈开始设定"先清LED,再接收键输入"标志通过键盘获得4字节十六进制数置位"接收到第一个键后,才清除LED"标志十六进制转十进制子程序显示开始0→R4,R5,R6,R7(用于存放压缩BCD码)32→B(循环次数)CLR

  C四字节十六进制数带进位左移一位(R4R5R6R7)×2+进位位C→(R4R5R6R7),同时进行十进制调整主程序 十六进制转十进制子程序NY返回B-1=0? 四、实验步骤

 、1

 :明说线连ﻩD3区 :CLK -- B2 区:2M D3 区 :CS -— A3区:CS5 D3区 :A0 —- A3区:A0 2、在 F4区得键盘上输入 8 位十六进制数 3、结果显示在 F4 区得数码管上 五、程序清单

  ﻩEXTRN CODE(Display8, GetKey) Buffer DATA 30H ;8 字节显示缓冲区 F1 BIT 0D1H ;PSW、1

 ORG 0000H

  LJMP START

  ORG 0100H

 START: MOV SP,#60H

  CLR F1 ;先清除显示,再接收键输入 START1: MOV R0,#buffer

  MOV A,#8 ;按键次数

 LCALL GetKey ;得到4字节十六进制数

 SETB F1 ;接收到第一个键后,才清除显示

 MOV R0,buffer

  MOV R1,buffer+1

  MOV R2,buffer+2

  MOV R3,buffer+3

  ACALL B4toD4 ;转换成十进制数 Display: MOV R0,#buffer ;显示结果

 MOV A,R7 ;低位

  ACALL B1toB2 ;压缩BCD 码转换成非压缩BCD 码

 MOV A,R6

  ACALL B1toB2

  MOV A, R5

  ACALL B1toB2

  MOV A,R4 ;高位

 A C A LL B1toB2

  MOV R0,#buffer+7

  MOV R7,#7

  ACALL BlackDisplay ;将高位0消隐

 MOV R0,#buffer

  LCALL Display8

  SJMP START1

 ;四字节十六进制数转十进制数:R0R1R2R3为十六进制,R4R5R6R7为压缩 BCD码 B4toD4:

 CLR A

  MOV R4,A

  MOV R5,A

  MOV R6,A

  MOV R7,A

  MOV B,#32

 LOOP:

 CLR C

  MOV A,R3

  RLC A

  MOV R3,A

  MOV A,R2

  RLC A

  MOV R2,A

  MOV A,R1

  RLC A

  MOV R1,A

  MOV A,R0

  RLC A

  MOV R0,A

  MOV A,R7

  ADDC A,R7

  DA A

  MOV R7,A

  MOV A,R6

  ADDC A,R6

  DA A

  MOV R6,A

  MOV A,R5

  ADDC A,R5

  DA A

  MOV R5,A

  MOV A,R4

  ADDC A,R4

  DA A

  MOV R4,A

  DJNZ B,LOOP

  RET

  B1toB2: PUSH ACC

  ANL A,#0FH

  MOV R0,A

  INC R0

  POP ACC

  ANL A,#0F0H

  SWAP A

  MOV R0,A

  INC R0

  RET

  BlackDisplay: MOV A,R0 ;将高位 0 消隐

 JNZ Exit

  MOV A,#10H

  MOV R0,A

  DEC R0

  DJNZ R7, B lac kDisplay

 Exit: RET

  END

 五 实验五 节字双ﻩ 双字节 D BCD 码( ( 十 进制数) ) 乘法

 一、实验目得

 进一步熟悉51 汇编指令,掌握汇编语言得设计与调试方法.根据程序流程图,自己设计程序,了解如何调用系统提供得子程序。

 二、实验内容

 从键盘上输入 4 位被乘数、乘数,实现四位十进制数得乘法,结果显示在数码管上。

 三、程序框图

 开始初始化堆栈设定"先清LED再接收键输入"标志通过键盘获得4位十进制被乘数转换成二进制数并压栈暂存置位"接收到第一个键后,才清除LED"标志通过键盘获得4位十进制乘数转换成二进制数(R2R3)被乘数出栈(R0R1)双字节十六进制乘法子程序十六进制结果转十进制压缩BCD码转非压缩BCD码将高位0消隐显示双字节BCD乘法程序框图

 (R0)(R1) × (R2)(R3)(R3R1H)(R3R1L)(R3R0H)(R3R0L)(R2R1H)(R2R1L)(R2R0H)(R2R0L)R0

  R1

  R2

  R3+双字节十六进制乘法示意图

 四、实验步骤

 、1

 :明说线连ﻩD3 区 :CLK -— B2区:2M D3 区 :CS -— A3区:CS5 D3区 :A0 —— A3 区:A0 2、在F4 区得键盘上输入 4 位被乘数、乘数 3、结果显示在 F4 区得数码管上 五、程序清单

  EXTRN CODE(Display8, GetBCDKey)

 Buffer DATA 30H ;8字节显示缓冲区 F1 BIT 0D1H ;PSW、1

 ORG 0000H

  LJMP START

  ORG 0100H

 START: MOV SP,#60H

  CLR F1 ;先清除显示,再接收键输入 START1: MOV R0,#buffer

  MOV A,#4 ;按键次数

 LCALL GetBCDKey ;得到双字节十进制数(被乘数)

 MOV R0,#buffer

  ACALL D4toB2 ;转换成二进制数

 PUSH 02H

  PUSH 03H

  SETB F1 ;接收到第一个键,才清除显示

 MOV R0,#buffer

  MOV A,#4 ;按键次数

 LCALL GetBCDKey ;得到双字节十进制数(乘数)

 MOV R0,#buffer

  ACALL D4toB2 ;转换成二进制数

 POP 01H

  POP 00H

  ACALL WordMul ;(R0R1)*(R2R3)=R0R1R2R3

 ACALL B4toD4 ;转换成十进制数 Display: MOV R0,#buffer ;显示结果

 MOV A,R7 ;低位

 ACALL B1toB2 ;压缩 BCD 码转换成非压缩 BCD 码

 MOV A,R6

  ACALL B1toB2

  MOV A, R5

  ACALL B1toB2

  MOV A,R4 ;高位

 ACALL B1toB2

  MOV R0,#buffer+7

  MOV R7,#7

  ACALL BlackDisplay ;将高位 0 消隐

 MOV R0,#buffer

  LCALL Display8

  SJMP START1

 ;双字节十六进制数乘以双字节十六进制数子程序 WordMul:

 MOV A,R3 ; (

 )1R()0Rﻩ MOV B,R1 ;

 ×

  (R2)(R3)

 MUL AB ;—- - ---—-———-—— -——————---———

 XCH A,R3 ;

  (R3R1H)(R3R1L)

 MOV R7,B ;

  (R3R0H)(R3R0L)

 MOV B,R0 ;

  (R2R1H)(R2R1L)

 MUL AB ;(R2R0H)(R2R0L)

 ADD A,R7 ; — - - --——-— -————-—-—------————--——

 MOV R7,A ;

 R0

  R1

  R2

  R3

 CLR A

  ADDC A,B

  XCH A,R1

  MOV B,R2

  MUL AB

  ADD A,R7

  XCH A,R2

  PUSH ACC

  MOV A,B

  ADDC A,R1

  MOV R1,A

  CLR A

  RLC A

  XCH A,R0

  POP B

  MUL AB

  ADD A,R1

  MOV R1,A

  MOV A,R0

  ADDC A,B

  MOV R0,A

  RET

  ;双字节十进制数转二进制数 ,R0-—指向双字节十进制数,结果在 R2R3 中 D4toB2: MOV A,R0

  ANL A,#0FH

  XCH A,R0

  ANL A,#0F0H

  SWAP A

  MOV B,#10

  MUL AB

  ADD A,R0

  INC R0

  MOV B,#10

  MUL AB

  MOV R2,B

  MOV R3,A

  MOV A,R0

  ANL A,#0FH

  XCH A,R0

  ANL A,#0F0H

  SWAP A

  ADD A,R3

  XCH A,R2

  ADDC A,#0

  MOV B,#10

  MUL AB

  XCH A,R2

  MOV B,#10

  MUL AB

  ADD A,R0

  MOV R3,A

  MOV A,R2

  ADDC A,B

  MOV R2,A

  RET

  B1toB2:

 PUSH ACC

  ANL A,#0FH

  MOV R0,A

  INC R0

  POP ACC

  ANL A,#0F0H

  SWAP A

  MOV R0,A

  INC R0

  RET

  BlackDisplay: MOV A,R0 ;将高位 0 消隐

 JNZ Exit

  MOV A,#10H

  MOV R0,A

  DEC R0

  DJNZ R7,BlackDisplay

 B4toD4:

 ﻩ CLR A

  MOV R4,A

  MOV R5,A

  MOV R6,A

  MOV R7,A

  MOV B,#32

 Exit: RET END 实验六

 双字节BC C D码除于单字节 D BCD 码

 一、实验目得

 进一步熟悉 51 汇编指令,掌握汇编语言得设计与调试方法.自己设计程序,了解如何调用系统提供得子程序。

 二、实验内容

 从键盘上输入 4 位被除数、二位除数,实现双字节 BCD码除于单字节BCD 码,结果显示在数码管上。

 三、程序框图

 开始初始化堆栈设定"先清LED,再接收键输入"标志通过键盘获得4位被除数,转换为十六进制数并暂存通过键盘获得单字节除数,转换为16进制数显示子程序置位"接收到第一个键后,才清除LED"标志单字节除法:被除数的高字节除以除数,结果为最终商的高8位双字节除以单字节(商为16位)双字节除以单字节(商只有8位)子程序最终获得结果(16位的商,8位余数)双字节除以单字节(商为16位)子程序循环次数8→R716位被除数(R2,R3)带进位左移一位(最低位补0, C →F0)R2-除数(B)F0=1?C=1?差→R2,R3自加1R7-1=0?双字节除以单字节(商为8位)子程序开始 开始返回返回主程序YYYNNN双字节BCD除法程序框图 四、实验步骤

  1、连线说明

 D3 区 :CLK —— B2 区:2M D3 区 :CS -- A3区:CS5 D3 区 :A0 —— A3 区:A0 2、在 F4 区得键盘上输入 4 位被乘数、乘数 3、使用各种手段调试程序 4、结果显示在 F4 区得数码管上 单 五、程序清单 ﻩﻩ

  ﻩEXTRN ﻩ CODE(Display8, GetBCDKey) Buffer DATA 30H ;8 字节显示缓冲区 F1 BIT 0D1H ;PSW、1

 ORG 0000H

  LJMP START

  ORG 0100H

 START: MOV ﻩ SP,#60H

  CLR F1 ;先清除显示,再接收键输入 START1: MOV R0,#buffer

  MOV A,#4 ;按键次数

 LCALL GetBCDKey ;得到双字节十进制数(被除数)

 SETB F1 ;接收到第一个键,才清除显示

 MOV R0,#buffer

  ACALL D4toB2 ;转换成二进制数

 MOV R0,#buffer

  MOV A,#2

  LCALL GetBCDKey ;得到 1 字节十进制数(除数)

 MOV R0,#buffer

  ACALL D2toB2 ;转换成二进制数

 JNZ START2

  ACALL DisplayError ;除数为0,出错

 SJMP START

 START2:

 ACALL B2_DIV_B1 ;被除数 / 除数

 ACALL Display ;显示商与被除数

 SJMP START1

 ; 双字节除于单字节,R2R3为 16位二进制数,B 为除数,商在 R2R3中, 余数在 A 中 B2_DIV_B1:

 PUSH B

  MOV A,R2

  DIV AB

  MOV R2,B

  POP B

  PUSH ACC

  CALL DIV_B2_B1

  POP ACC

  XCH A,R2

  RET

  ;双字节除于单字节,R2R3 为被除数,B为除数,结果:商 R3 中,余数在 R2中 DIV_B2_B1: MOV R7,#8 ;双字节除于单字节 DIV2: CLR C ;R2R3 为被除数,B 为除数,

 MOV A,R3 ;结果:商R3 中,余数在 R2 中

 RLC ﻩ A

  MOV R3,A

  MOV A,R2

  RLC A

  MOV R2,A

  MOV F0,C

  CLR C

  SUBB A,B

  JB F0,DIV3

  JC DIV4

 DIV3: MOV R2,A

  INC ﻩ R3

 DIV4: DJNZ R7,DIV2

  RET

  ;4 字节二进制数转十进制数,R2R3 为 16位二进制数,R4R5R6为压缩BCD 码 B2toD5:

 CLR

 A

  MOV R4,A ;

 MOV R5,A

  MOV R6,A

  MOV R7,#16

 LOOP:

 CLR ﻩ C

  MOV A,R3

  RLC ﻩ A

  MOV R3,A

  MOV A,R2

  RLC ﻩ A

  MOV R2,A

  MOV A,R6

  ADDC A,R6

  DA ﻩ A

  MOV R6,A

  MOV A,R5

  ADDC A,R5

  DA ﻩ A

  MOV R5,A

  MOV A,R4

  ADDC

 A,R4

  DA ﻩ A

  MOV R4,A

  DJNZ R7,LOOP

  RET

  D2toB2: MOV A,R0 ;1 字节十进制数转二进制数

 ANL A,#0FH ;R0——指向 1 字节十进制数,结果在B中

 XCH A,R0

  ANL A,#0F0H

  SWAP A

  MOV B,#10

  MUL AB

  ADD A,R0 ;转换成二进制数

 MOV B,A

  RET

  Display:

 PUSH ACC ;商在低四位,余数在高三位

 ACALL B2toD5 ;二进制数转十进制数

 MOV R0,#buffer

  MOV A,R6

  ACALL B1toB2 ;压缩BCD码转换成非压缩 BCD 码

 MOV A,R5

  ACALL B1toB2

  DEC R0

  MOV R7,#3

  ACALL BlackDisplay ;将高位0消隐

 MOV buffer+4,#10H ;消隐

  MOV R0,#buffer+7

  POP ﻩ ACC

  MOV

 B,#100

  DIV ﻩ AB

  MOV R0,A

  DEC R0

  MOV A,B

  MOV B,#10

  DIV ﻩ AB

  MOV R0,A

  DEC R0

  MOV R0,B

  MOV R0,#buffer+7

  MOV R7,#2

  ACALL BlackDisplay ;将高位 0 消隐

 MOV R0,#buffer

  LCALL Display8

  RET

  Displa y E rror:

 MOV

 R0,#buffer

  MOV R7,#8

  MOV A,#0FH

 DisplayError1:

 MOV ﻩ R0,A

  INC ﻩ R0

  DJNZ R7,DisplayError1

  MOV R0,#buffer

  LCALL Display8

  RET

  D4toB2:

 MOV A,R0

  ANL A,#0FH

  XCH A,R0

  ANL A,#0F0H

  SWAP A

  MOV B,#10

  MUL AB

  ADD A,R0

  INC R0

  MOV B,#10

  MUL AB

  MOV R2,B

  MOV R3,A

  MOV A,R0

  ANL A,#0FH

  XCH A,R0

  ANL A,#0F0H

  SWAP A

  ADD A,R3

  XCH A,R2

  ADDC A,#0

  MOV B,#10

  MUL AB

  XCH A,R2

  MOV B,#10

  MUL AB

  ADD A,R0

  MOV R3,A

  MOV A,R2

  ADDC A,B

  MOV R2,A

  RET

  B1toB2:

 PUSH ACC

  ANL A,#0FH

  MOV R0,A

  INC R0

  POP ACC

  ANL A,#0F0H

  SWAP A

  MOV R0,A

  INC R0

  RET

  Blac k D i splay:

 MOV A,R0 ;将高位0消隐

 JNZ Exit

  MOV A,#10H

  MOV R0,A

  DEC R0

  DJNZ R 7 , Bl a ckD isplay

 END

 实验八

 冒泡排序

 一、实验目得

 熟悉使用 MCS51 指令,掌握汇编语言得设计与调试方法,了解如何使用高效方法对数据排序. 二、实验内容

 。列排新重大到小从据数组一将法泡冒用使求要,序程序排个一试调并写编ﻩ

 三、程 序框图

 开始初始化堆栈将待排序数组转移到内部30H开始的RAM中数据数-1→R7,数据交换标志bSort=0

 PUSH

 07H被比较数地址R0=30H比较数地址R1=R0+1DEC

  R7@R0>@R1?@R0与@R1互换1→bSortINC R0INC R1POP R7R7=R7-1 R7=0?bSort=0?结束NNNYYY冒泡排序程序框图 四、实验步骤

  。列排序顺得大到小从按否是就据数中 HF3~H03 MAR部内查检,序程试调式方点断用使ﻩ单 五、程序清单 ﻩ ﻩbSort BIT F0

  ORG 0000H

  LJMP STAR

  ORG 0100H

 STAR: MOV SP,#60H ;堆栈

 MOV R0,#30H ;存放待排序数据得首地址

 MOV R7,#16 ;数据个数

 MOV DPTR,#TAB_1

 STAR1:

 CLR A

  MOVC A,A+DPTR

  MOV R0,A ;将数据移入内部 RAM中

 INC R0

  INC DPTR

  DJNZ R7,STAR1

  MOV R7,#16-1 ;存放比较次数 STAR2: PUSH 07H

  MOV R0,#30H ;存放启始地址

 CLR bSort

  MOV R1,00H

  INC R1

  MOV A,R0

 STAR3:

 MOV B,A

  MOV A,R1

  CJNE A,B,$+3

  JNC

 STAR5

  XCH A,R0

  MOV R1,A

  SETB bSort

 STAR5: INC R0

  INC R1

  DJNZ R7,STAR3

  POP 07H

  JNB bSort,Exit

  DEC R7

  SJMP STAR2

 Exit:

 SJMP $

 TAB_1:

 DB 0H,5H,6H,3H,8H,92H,04H,57H,46H,01H,0FFH,0A0H,45H,99H,55H,66H

 END

推荐访问:单片机 实验 报告

热门排行Top Ranking

弦振动实验报告

弦振动得研究 一、实验目得 1、观察固定均匀弦振动共振干涉形成驻波时得波形,加深驻波得认识。 2、了

宣传委员述职报告12020 幼儿园党支部宣传委员述职报告

下面是小编为大家精心整理的宣传委员述职报告12020幼儿园党支部宣传委员述职报告文章,供大家阅读参考。宣传委员述

党建工作现场述职会上讲话 公安局长在党建工作现场会上的讲话

下面是小编为大家精心整理的党建工作现场述职会上讲话公安局长在党建工作现场会上的讲话文章,供大家阅读参考。党建工作现场

支部宣传委员述职述廉报告范例 幼儿园党支部宣传委员述职报告

下面是小编为大家精心整理的支部宣传委员述职述廉报告范例幼儿园党支部宣传委员述职报告文章,供大家阅读参考。支部宣传

政治生态评估报告5篇

可能会捆绑住经办人员的手脚,不利于业务工作的开展。致使个别中层干部主体责任压力传导出现能量损耗;个别

2021年领导述职报告合集2020 县领导述职报告

下面是小编为大家精心整理的2021年领导述职报告合集2020县领导述职报告文章,供大家阅读参考。2

工商局监察室主任述职述廉报告

工商局监察室主任述职述廉报告 第一篇:工商局监察室主任述职述廉报告 我叫haoword,中共党员,现

党支部书记个人述职报告 对村党支部书记述职报告的点评

下面是小编为大家精心整理的党支部书记个人述职报告对村党支部书记述职报告的点评文章,供大家阅读参考。党支部书记个人

财务分析课程报告4篇

财务分析课程报告4篇财务分析课程报告篇1一年来,在领导和同事们的的支持帮助和指导下,加上自身的不断努

结合乡村振兴战略人才工作述职报告 乡村振兴工作员年度述职

下面是小编为大家精心整理的结合乡村振兴战略人才工作述职报告乡村振兴工作员年度述职文章,供大家阅读参考。结合

个人安全生产履职报告[安全生产述职报告] 党委书记安全生产履职报告

下面是小编为大家精心整理的个人安全生产履职报告[安全生产述职报告]党委书记安全生产履职报告文章,供大家阅读参

企业年度工作总结报告范文13篇

企业年度工作总结报告范文13篇企业年度工作总结报告范文篇1时光飞逝,转眼已经毕业一年了,我顺利地完成