首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 工作总结
  • 工作计划
  • 心得体会
  • 竞聘演讲
  • 会议发言
  • 爱国演讲
  • 就职演说
  • 开业开幕
  • 思想学习
  • 征文演讲
  • 经验材料
  • 述职报告
  • 调研报告
  • 工作汇报
  • 年终总结
  • 申报材料
  • 学习体会
  • 企划方案
  • 活动方案
  • 技巧经验
  • 模板范例
  • 思想宣传
  • 经济工作
  • 工作报告
  • 组织人事
  • 反腐倡廉
  • 慰问贺电
  • 先进事迹
  • 思想汇报
  • 入党申请书
  • 党会发言
  • 先进性教育
  • 入团申请书
  • 个人简历
  • 演讲稿
  • 调查报告
  • 实习报告
  • 和谐社会
  • 观后感
  • 读后感
  • 作文范文
  • 自我鉴定
  • 讲话稿
  • 自查报告
  • 单片机实验报告1

    时间:2020-11-09 12:38:15 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:单片机 实验 报告

     单片机实验报告 实验一

     数据传送 (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

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识