单片机实验教案 - 图文

更新时间:2024-06-27 12:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验教案

1

《单片机原理及接口技术》

目 录

介绍Medwin(万利)软件查看菜单的功能 ...................................................................................... 3 DVCC系列单片机与微机实验系统软件联机运行简介................................................................. 5 实验一 基本指令实验 .......................................................................................................................... 7 实验二 汇编语言程序设计 .............................................................................................................. 12 实验三外部中断方式控制LED ........................................................................................................... 16 实验四 定时器/计数器中断 .............................................................................................................. 21 实验五 并行I/O口8255扩展实验 .................................................................................................. 24 实验六 8155控制显示 ..................................................................................................................... 29 实验七 8155控制键盘 ....................................................................................................................... 32

2

介绍Medwin(万利)软件查看菜单的功能

查看菜单(图22)

寄存器

命令:[查看|寄存器]

功能:激活/关闭寄存器窗口。

特殊功能寄存器

命令:[查看|特殊功能寄存器]

功能:激活/关闭特殊功能寄存器窗口。

反汇编窗口

命令:[查看|反汇编窗口]

功能:打开反汇编程序代码窗口。

IData

命令:[查看|IDATA]

功能:打开间接寻址的片内数据区IData 窗口。使用@r0/@r1 指令访问。

Data

3

命令:[查看|DATA]

功能: 打开直接寻址的片内数据区Data 窗口。地址低128 字节与IData 的数据相同,高128 字节为 特殊功能寄存器SFR 空间

XData

命令:[查看|XDATA]

功能: 打开片外数据区XData 窗口。使用MOVX 指令访问。

PData

命令:[查看|PDATA]

功能: 打开片外页面方式访问的数据区PData 窗口。使用MOVX @ri 指令访问。

Code

命令:[查看|CODE]

功能: 打开程序代码窗口。

Bit

命令:[查看|BIT]

功能: 打开位寄存器Bit。位地址0~127 为Data 空间20H~2FH 内容,高128~255 为特殊功能寄存器

SFR 可寻址的位。

4

DVCC系列单片机与微机实验系统软件联机运行简介

1、接电源

2.和主机联机硬件安装

将随机配备的9芯通信电缆线一端接实验系统的J2插座,另一端接主机的串口。在51CPU系统时,开关SK2位1-2置ON,立式开关KBB1拨在51、88位置,卧式开关KBB拨在51、96位置。

3、系统软件安装

安装DVCC598JH,安装完毕后出现“DVCC实验系统” 4、系统启动

上电后,实验系统应该显示闪动的“P”。实验系统正常启动后,它有2种运行模式:独立运行模式;串行运行模式。在串行运行模式下,在WIN9X/NT软件支持下,人机通过上位机的键盘、显示相互交流信息,运行调试程序。

选项\编译选项的设置 ASM51

DEBUG 在生成的目标文件中包含调试信息 SYMBOLS 在生成的目标文件中包含符号列表 PRINT

MOD51 使用51的寄存器名

5

5、连接DVCC系统

PC与实验箱连接,打开电源,在DVCC实验系统显示P状态下,按PCDBUG键,显示器全暗。上位机菜单上选择“联接” 菜单。联机正常,屏幕显示出现:寄存器窗口、反汇编窗口。如出现“联机失败”提示,表明DVCC系统与PC机连接不上,待检查。

6、编译\\编译文件\\编译连接传送文件、 ? 编译文件

编译无错误,无警告,则通过。 ? 编译连接传送文件

编译 无错误,在DVCC实验系统显示P状态下,按PCDBUG键,显示器全暗。点击:编译连接传送文件,错误!链接无效。时,数码管闪烁。

6

实验一 基本指令实验

一、实验目的 1、 掌握Medwin(万利)软件运用方法。 2、熟悉基本指令及寻址方式。 3、掌握PSW标志位的变化规律。 4、掌握拆字程序与查表程序的设计。 二、实验设备

Medwin(万利)、计算机一台。

三、实验内容 1、 数据传送类指令及寻址方式。 2、 运算类指令及PSW状态的变化规律。 3、 设计程序:查表求0~9的平方。 拆字程序设计。

四、实验程序及运行记录

1、数据传送类指令及寻址方式。

设定内部RAM(30H)=07H,外部RAM(0010H)=01H,(0011H)=00H,R7=15H,输入程序并保存,运行程序并填写下表。 程序org 0000h 结果 数据来源 数据去向 寻址方式 MOV R0, #30H MOV A , @R0 MOV A , R0 MOV 31H, 30H MOV 32H, #30H INC @R0 MOV 31H, @R0 MOV #0010H MOVX @DPTR DPTR, A, R0=30H A=07H A=30H (31H)=07H (32H)=30H (30H)=08H (31H)=08H DPTR=0010H A=01H 立即数30H 内部RAM30H 寄存器R0 内部RAM30H 立即数30H 内部RAM30H 内部RAM30H 立即数0010H 外部寄存器R0 累加器A 累加器A 内部RAM31H 内部RAM32H 内部RAM30H 内部RAM31H 数据指针DPTR 累加器A 立即寻址 寄存器间接寻址 寄存器寻址 直接寻址 立即寻址 寄存器间接寻址 寄存器间接寻址 立即寻址 寄存器间接寻 7

MOVC @A+DPTR SWAP A 程序 XCHD A, @R0 A, A=93H A=39H 结果 A=38H,(30H)=09H RAM0010H ROM0011H 累加器A 数据来源 内部RAM30H,累加器A 累加器A 内部RAM07H 栈顶09H 栈顶08H 累加器A 累加器A 数据去向 累加器A, 内部RAM30H 栈顶08H 栈顶09H 累加器A 内部RAM07H 址 变址寻址 寄存器寻址 寻址方式 寄存器间接寻址, 寄存器寻址 直接寻址 直接寻址 直接寻址 直接寻址 PUSH ACC PUSH 07H POP ACC POP 07H (SP)=08H,(08H)=38H (SP)=09H,(09H)=15H A=15H, (SP)=08H (07H)=38H, (SP)=07H END 反汇编代码TEXT1.LST

LOC OBJ LINE SOURCE 0000 1 ORG 0000H

0000 7830 2 START:MOV R0, #30H; 0002 E6 3 MOV A, @R0 0003 E8 4 MOV A,R0

0004 853031 5 MOV 31H, 30H 0007 753230 6 MOV 32H, #30H 000A 06 7 INC @R0

000B 8631 8 MOV 31H, @R0 000D 900010 9 MOV DPTR, #0010H 0010 E0 10 MOVX A, @DPTR 0011 93 11 MOVC A, @A+DPTR 0012 C4 12 SWAP A

0013 D6 13 XCHD A, @R0 0014 C0E0 14 PUSH ACC 0016 C007 15 PUSH 07H 0018 D0E0 16 POP ACC 001A D007 17 POP 07H

001C 80FE 18 HERE:SJMP HERE 19 END

2、算术运算类指令及PSW状态的变化规律

程序 A B CY AC OV P ORG 0000H SETB C ADDC A,#27H DA A SUBB A,#0A5H ADD A,#2DH INC A ADDC A,#95H DIV AB 00H 00H 00H 00H 71H 00H 77H 00H D2H 00H FFH 00H 00H 00H 95H 00H 95H 00H 0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 语句功能 系统复位值 将位累加器C置1 A←49H A←(A)+27H+(C) 将加法运算的结果进行十进制调整 A←(A)-0A5H A←(A)+2DH A←(A)+1 A←(A)+95H+(C) A←(A)/(B)的商, B←(A)/(B)余数 MOV A,#49H 49H 00H 8

MOV B,#08H MUL AB END 95H 08H A8H 04H 0 0 0 0 1 1 0 1 B←08H A←AB乘积低8位, B←AB乘积高8位

反汇编代码TEXT2.LST

LOC OBJ LINE SOURCE 0000 1 ORG 0000H 0000 D3 2 SETB C ; 0001 7449 3 MOV A,#49H 0003 3427 4 ADDC A,#27H 0005 D4 5 DA A

0006 94A5 6 SUBB A,#0A5H 0008 242D 7 ADD A,#2DH 000A 04 8 INC A

000B 3495 9 ADDC A,#95H 000D 84 10 DIV AB

000E 75F008 11 MOV B,#08H 0011 A4 12 MUL AB 13 END 3、设计程序:查表求0~9的平方。(以6为例)

1)用指令MOVC A,@A+DPTR查表 ORG 0000H 反汇编代码 0000 021FFF LJMP 1FFFH TAB:DB 00H,01H,04H 0003 000104 DB 09H,10H,19H,24H 0006 09101924 DB 31H,40H,51H ORG 1FFFH MOV A,#06H MOV DPTR,#TAB MOVC A,@A+DPTR 000A 314051 1FFF 7406 2001 900003 2004 93 语句功能 跳转到地址1FFFH处 建立数据表格 建立数据表格 建立数据表格 A←06H DPTR←数据表格的起始地址 查表 2005 80FE SJMP $ 原地踏步 END 反汇编代码TEXT3.LST LOC OBJ LINE SOURCE 0000 1 ORG 0000H 0000 021FFF 2 LJMP 1FFFH;

0003 00 3 TAB:DB 00H,01H,04H 0004 01 0005 04

0006 09 4 DB 09H,10H,19H,24H 0007 10 0008 19 0009 24

000A 31 5 DB 31H,40H,51H 000B 40 000C 51

1FFF 6 ORG 1FFFH 1FFF 7406 7 MOV A,#06H 2001 900003 8 MOV DPTR,#TAB 2004 93 9 MOVC A,@A+DPTR 2005 80FE 10 SJMP $

9

11 END 2)用指令MOVC A,@A+PC查表 ORG 0000H MOV A,#06H ADD A,#02H MOVC A,@A+PC SJMP $ TAB:DB 00H,01H,04H DB 09H,10H,19H,24H DB 31H,40H,51H 反汇编代码 0000 7406 0002 2402 0004 83 0005 80FE 0007 000104 000A 09101924 000E 314051 语句功能 A←06H A←(A)+02H 查表 原地踏步 建立数据表格 建立数据表格 建立数据表格 END 4拆字程序,设(20H)=35H,要求拆为05H、03H存放在外部RAM0020H、0021H单元中。 ORG 0000H 反汇编代码 0000 7820 MOV R0, #20H MOV DPTR, #0020H 0002 900020 0005 E6 MOV A,@R0 ANL A, #0FH MOVX @DPTR, A INC DPTR MOV A,@R0 SWAP A ANL A, #0FH MOVX @DPTR, A SJMP $ END 0006 540F 0008 F0 0009 A3 000A E6 000B C4 000C 54F0 000E F0 000F 80FE 语句功能 R0←06H DPTR←0020H A←((R0)) A←(A)^(0FH) ((DPTR)) ←(A) DPTR ←(DPTR)+1 A←((R0)) (A)4~7←→(A)3~0 A←(A)^(0F0H) ((DPTR)) ←(A) 原地踏步 反汇编代码TEXT4.LST

LOC OBJ LINE SOURCE 0000 1 ORG 0000H

0000 7820 2 MOV R0,#20H;

0002 900020 3 MOV DPTR, #0020H 0005 E6 4 MOV A,@R0 0006 540F 5 ANL A, #0FH 0008 F0 6 MOVX @DPTR, A 0009 A3 7 INC DPTR 000A E6 8 MOV A,@R0 000B C4 9 SWAP A

000C 540F 10 ANL A, #0FH

000E F0 11 MOVX @DPTR, A 000F 80FE 12 SJMP $ 13 END 五、实验结果讨论

1)有无@ 的区别是MOV A ,R0是 将寄存器R0中的内容传送给累加器A ;而MOV A ,@R0是 以R0中的内容为地址,把该地址单元中的内容传送给累加器A 。有无 # 的区别

10

是MOV A ,#30H是 将立即数30H传送给累加器A ;而MOV A ,30H是 将内部RAM30H单元中的内容传送给累加器A 。

2)内部RAM之间数据传送用指令 MOV ,内部RAM与外部RAM之间数据传送只能使用 MOVX 指令,且必须通过累加器A传送;内部RAM与外部ROM之间数据传送只能使用指令 MOVC ,且必须通过累加器A传送;但只能由外部ROM向内部RAM单向传送。

3)PUSH和POP是 堆栈 操作指令,属于 直接 寻址方式,若SP=07H,执行PUSH ACC指令时,操作顺序是先 (SP)← (SP)+1 ,然后 ((SP))← (A) ,执行POP ACC指令时,操作顺序是先 (A)←((SP)) ,然后 (SP)←(SP)-1 。堆栈数据进出的原则是 后进先出 。

4)MOVC A,@A+DPTR是在 程序存储器64KB 范围内查表;数据指针DPTR必须先 赋值 ,MOVC A, @A+PC其中相对偏移量A是 无符号8位数 ,最大值为 FF H,即 255 字节,因此这个指令是在 当前指令后256字节 范围内查表。程序计数器PC不须先 赋值 。

11

实验二 汇编语言程序设计

一、实验目的

1、掌握顺序结构程序设计。 2、掌握分支结构程序设计。 3、掌握控制转移类指令。 4、掌握子程序设计。

二、实验设备

DVCC仿真系统一套、Medwin(万利)、计算机一台。

三、实验内容

1、SJMP、AJMP和LJMP的区别

2、X、Y以补码的形式存放在20H、21H中,编写程序实现如下函数:

3、将20H~27H中的压缩BCD码拆为两个单字节BCD码,存放在以2000H为首地址的外部RAM中。 四、实验程序及运行记录

1、SJMP、AJMP和LJMP的区别

ORG 0000H

LP0:MOV A,#20H SJMP LP1 ORG 07FFH LP1: MOV A,#30H SJMP $ TEXT6.LST (1) 编译后,系统提示: 目标越界 ,改为AJMP后编译通过,将ORG 07FFH改为0800H, 系统提示: 目标越界 ,这说明AJMP可以在 2K 范围内无条件转移。

(2) 改为LJMP编译通过,这说明LJMP可以在 64KB 范围内无条件转移。 将LJMP LP1改为SJMP LP0,机器码为 80FCH ,其中 FCH 为偏移量,

一个 补 码,01H~7FH说明向PC(增大√、减小)方向跳,80H~FFH说明向PC(增大、减小√)方向跳,这说明SJMP可以在当前PC值 -128~127 范围内无条件转移。

2、X、Y以补码的形式存放在20H、21H中,编写程序实现如下函数:

实验程序:

方法一 ORG 0000H

MOV A,20H JZ ZERO

JB ACC.7, NEG MOV 21H, #01H SJMP OVER

NEG: MOV 21H, #0FFH

SJMP OVER

ZERO:MOV 21H, A OVER:SJMP $

END

方法二 ORG 0000H

MOV A,20H JZ ZERO

CJNE A , #80H,NEG

NEG: JC POSI

MOV 21H, #0FFH SJMP OVER

POSI: MOV 21H, #01H

SJMP OVER

ZERO: MOV 21H, A OVER: SJMP $

END

12

方法一反汇编代码TEXT5.LST

LOC OBJ LINE SOURCE

0000 1 ORG 0000H 0000 E520 2 mov A,20H ; 3

0002 600D 4 JZ ZERO

0004 20E705 5 JB ACC.7,NEG 0007 752101 6 MOV 21H, #01H 000A 8007 7 SJMP OVER

000C 7521FF 8 NEG: MOV 21H, #0FFH 000F 8002 9 SJMP OVER 0011 F521 10 ZERO: MOV 21H, A 0013 80FE 11 OVER: SJMP $ 12 END 方法2反汇编代码TEXT7.LST

LOC OBJ LINE SOURCE 0000 1 org 0000h 0000 E520 2 mov a,20h; 3

0002 600F 4 JZ ZERO

0004 B48000 5 CJNE A , #80H,NEG 0007 4005 6 NEG: JC POSI 0009 7521FF 7 MOV 21H, #0FFH 000C 8007 8 SJMP OVER

000E 752101 9 POSI: MOV 21H, #01H 0011 8002 10 SJMP OVER

0013 F521 11 ZERO: MOV 21H, a 0015 80FE 12 OVER: SJMP $ 13 END 实验步骤及结果记录:

(1) 打开DVCC-598JH实验箱电源。

(2) 启动计算机,运行DVCC-598JH实验系统。 (3) 新建文件、输入程序并保存文件。 (4) 调试程序。

(5) 编译文件。编译无错误,无警告,则通过。

(6) 编译连接传送文件 。 编译 无错误,在DVCC实验系统显示P状态下,按PCDBUG键,显示器全暗。点击:编译连接传送文件至DVCC-598JH实验箱。错误!链接无效。时,数码管闪烁。

(7) 打开内部数据区,将20H单元的值更改为00H运行,观察程序运行情况。 (8) 分别将20H单元的值更改为正数(01H~7FH)、负数(80H~0FFH)运行,观

察程序运行情况。

结果记录: 将20H单元的值更改为00H运行,观察到21H单元的值为00H;

将20H单元的值更改为08H运行,观察到21H单元的值为01H; 将20H单元的值更改为87H运行,观察到21H单元的值为0FFH;

3、将20H~27H中的压缩BCD码拆为两个单字节BCD码,存放在以2000H为首地址的外部RAM中。 实验程序:

MOV R0,#20H CZ: MOV A,@R0 MOV DPTR,#2000H ANL A,#0FH MOV R7,#08H MOVX @ DPTR,A

INC DPTR LL: ACALL CZ

INC R0 MOV A,@R0 INC DPTR SWAP A DJNZ R7,LL ANL A,#0FH SJMP $ MOVX @ DPTR,A

13

RET END

反汇编代码TEXT13.LST

1000 1 org 1000h 1000 7820 2 MOV R0,#20H

1002 902000 3 MOV DPTR,#2000H 1005 7F08 4 MOV R7,#08H 1007 110F 5 LL:ACALL CZ 1009 08 6 INC R0 100A A3 7 INC DPTR 100B DFFA 8 DJNZ R7,LL 100D 80FE 9 SJMP $

100F E6 10 CZ: MOV A,@R0 1010 540F 11 ANL A,#0FH 1012 F0 12 MOVX @ DPTR,A 1013 A3 13 INC DPTR 1014 E6 14 MOV A,@R0 1015 C4 15 SWAP A

1016 540F 16 ANL A,#0FH 1018 F0 17 MOVX @ DPTR,A 1019 22 18 RET 19 END

实验步骤及结果记录:

实验步骤:

(1) 新建文件、输入程序并保存文件。 (2) 按F9键调试程序。

(3) 按Ctrl+F9键编译链接并传送文件至DVCC-598JH实验箱。

(4) 打开内部数据区,更改从20H单元的8个数据,观察程序运行情况。 (5) 打开外部数据区,观察从2000H开始的16个单元数据,检查运行结果的正确性。

结果记录: 20H 21H 22H 23H 24H 25H 26H 27H 给定值 87H 54H 36H 23H 19H 43H 77H 69H 2000H 2002H 2004H 2006H 2008H 200AH 200CH 200EH 观察值 07H 04H 06H 03H 09H 03H 07H 09H 2001H 2003H 2005H 2007H 2009H 200BH 200DH 200FH 观察值 08H 05H 03H 02H 01H 04H 07H 06H 五、实验结果讨论

1、 数在计算机中是以 补 码形式存放的,因此,判断数据的正负,往往采用判断第 7 位,是 0 则为正数,是 1 则为负数。

2、 实验内容2方法一中JZ ZERO 的机器码为 600DH ,其中 0DH 为偏移量,当前PC值 0004H 加上这个偏移量等于 0011H ,这正是即将执行的程序的首地址,即标号为 ZERO 语句。程序计算器PC的功能是 存储将要执行的指令地址,实现程序的转移 ,因此,跳转语句是依靠 偏移量的变化 来改变程序计算器PC的值,从而改变程序的流向。

3、 指令CJNE不仅可以判断数据是否相等,还可以通过CY的值,判断数据的大小,当CY=1,则左操作数 小于 右操作数,CY=0,则左操作数 大于 右操作数。

4、 分支程序一定要注意分支的语句标号的正确性,每一分支之间必须用 条件转移 指令分隔,并跳转到同一标号。

5、 子程序往往用 间址寄存器 传递数据,内部RAM用 @Ri ,外部RAM用 @DPTR ,绝对不能用直接地址。最后以 RET 结尾。

14

6、循环程序往往用 寄存器 传递数据,用R7控制循环 次数 ,用调用 子程序 作为循环体,用指令 INC 修改 地址指针 ,用指令 DJNZ 判断循环 结束 。 7、执行ACALL前(SP)= 07H ,执行ACALL时,(SP)= 09H,(08H)= 09H, (09H)= 00H,(PC)= 000FH ,PC的值正是子程序的 入口地址 ,而堆栈中这两个单元存放的是 断点处PC的值 ;执行到RET后,(SP)= 07H , 原08H的值弹给 (PC)7~0 ,原09H的值弹给 (PC)15~8 ,因此,返回断点继续执行主程序。

15

实验三外部中断方式控制LED

一、实验目的

1、掌握DVCC仿真系统的使用方法 2、I/O口的使用方法 3、掌握外部中断的方法 二、实验设备

DVCC仿真系统一套、计算机一台 三、实验内容

1、用K0~K3控制LED0~LED3。

2、当中断没发生时,8个LED按间隔发光。当P3.3 (INT1)为低电平时, 8个LED整体闪烁16次。

3. 在P3.3 (INT1)发生中断后,8个LED整体闪烁16次;P3.2(INT0)中断, 4个LED循环发光16次。设P3.3(INT1)优先中断,观察两个中断顺序不同的结果有什么不同。 四、实验线路

五、程序清单、操作步骤及实验结果记录 1、用K0~K3,控制LED0~LED3。 实验程序:

ORG 0000H 实验步骤及结果记录:

LOOP: MOV P1, #0FH 实验步骤: MOV A, P1 (1) 将K0~K3用导线分别与P1.0~P1.3连接,

ANL A, #0FH

LED0~LED3用导线分别与P1.4~P1.7连接。

SWAP A

(2) 打开DVCC-598JH实验箱电源。 MOV P1, A

(3) 启动计算机,运行DVCC-598JH实验系统。 SJMP LOOP

(4) 新建文件、输入程序并保存文件。 END

(5) 按F11键调试程序。

(6) 按Ctrl+F9键编译链接并传送文件至DVCC-598JH实验箱。

(7) 运行程序。

(8) 分别合上K0~K3,观察LED0~LED3的亮灭状态并记录实验结果。

反汇编代码TEXT16.LST

16

LOC OBJ LINE SOURCE

1000 1 ORG 1000H

1000 75900F 2 LOOP:MOV P1,#0FH 1003 E590 3 MOV A,P1 1005 540F 4 ANL A,#0FH 1007 C4 5 SWAP A 1008 F590 6 MOV P1, A 100A 80F4 7 SJMP LOOP 8 END

实验结果:

运行程序,当开关全部合上,LED0~LED3全亮。 分别断开K0~K3,对应的LED0~LED3相应熄灭。

2. 当中断没发生时,8个LED按间隔发光。当P3.3 (INT1)为低电平时, 8个LED整体闪烁16次。

实验程序:

ORG 0000H ORG 0100H 实验步骤:

AJMP MAIN ZD1: CLR EA (1) 在DVCC-598JH实验箱中,用导线 ORG 0013H PUSH ACC 将L1~L8分别与P1.0~P1.7连接。P3.3 AJMP ZD1 SETB EA

与开关K1连接,并将开关断开。

ORG 0030H MOV R7, #10H

新建文件、输入程序并保存文件。 MOV A, #0FFH (2) MAIN: CLR IT1

(3) 编译文件。编译无错误,无警告,则LOOP: MOV P1,A SETB EA

ACALL DELAY 通过。 SETB EX1

(4) 编译连接传送文件 。 MOV A, #0AAH CPL A

ACALL DELAY 编译 无错误,在DVCC实验系统显HA1S1:MOV P1, A

DJNZ R7, LOOP 示P状态下,按PCDBUG键,显示 SJMP HA1S1

CLR EA DELAY:MOV R5, #0FFH 器全暗。点击:编译连接传送文件至 POP ACC DELAY1:MOV R4, #0FFH DVCC-598JH实验箱。错误!链接无 SETB EA DJNZ R4, $ 效。时,数码管闪烁。 RETI DJNZ R5, DELAY1 (5) 按Ctrl+F9键编译链接并传送文件至END RET

DVCC-598JH实验箱。 (6) 运行程序,观察LED1~LED8的亮灭状态并记录实验结果。 (7) 合上K1,观察LED1~LED8的亮灭状态并记录实验结果。 (8) 断开K1,观察LED1~LED8的亮灭状态并记录实验结果。

反汇编代码TEXT17.LST

LOC OBJ LINE SOURCE

0000 1 ORG 0000H 0000 0130 2 AJMP MAIN 0013 3 ORG 0013H 0013 2100 4 AJMP ZD1 0030 5 ORG 0030H 0030 C28A 6 MAIN:CLR IT1 0032 D2AF 7 SETB EA 0034 D2AA 8 SETB EX1

0036 74AA 9 MOV A, #0AAH 0038 F590 10 HA1S1: MOV P1, A 003A 80FC 11 SJMP HA1S1 003C 7DFF 12 DELAY: MOV R5, #0FFH 003E 7CFF 13 DELAY1:MOV R4, #0FFH 0040 DCFE 14 DJNZ R4, $

17

0042 DDFA 15 DJNZ R5, DELAY1 0044 22 16 RET 17

0100 18 ORG 0100H

0100 C2AF 19 ZD1: CLR EA 0102 C0E0 20 PUSH ACC 0104 D2AF 21 SETB EA 0106 7F10 22 MOV R7, #10H 0108 74FF 23 MOV A, #0FFH 010A F590 24 LOOP: MOV P1,A 010C 113C 25 ACALL DELAY 010E F4 26 CPL A

010F 113C 27 ACALL DELAY 0111 DFF7 28 DJNZ R7, LOOP 0113 C2AF 29 CLR EA 0115 D0E0 30 POP ACC 0117 D2AF 31 SETB EA 0119 32 32 RETI 33 END

实验步骤及结果记录:

实验结果:

(1) 运行程序,LED1~LED8间隔发光,LED1、LED3、LED5、LED7亮。 (2) 将开关K1置0,8个LED整体闪烁。

(3) 开关置0立即置1,8个LED间隔发光16次 (4) 将开关K1置1,LED1~LED8间隔发光。 实验讨论:

1) 开关置0不动观察到的现象是 8个LED整体闪烁 ;开关置0立即置1,观察到的现象是 8个LED整体闪烁16次 。这是因为 中断方式为低电平触发方式 ,开关置0不动未撤销中断源,开关置0立即置1撤销了中断源 。

2)将程序中的CLR IT1改为SETB IT1再运行。开关置0不动观察到的现象是 8个LED间隔发光 ;开关置0立即置1,观察到的现象是 8个LED整体闪烁16次 。 这是因为 中断方式为负脉冲触发方式,中断源在中断响应后撤销 。

3)在中断服务程序中的PUSH ACC 和POP ACC前面加分号“;”再运行。观察到中断前后LED的状态(相同,不同√),这是因为 执行中断服务后累加器A中的值发生了变化 。因此,在中断服务程序中,要对服务程序中所使用的寄存器进行 现场保护 和 现场恢复 。 3. 在P3.3 (INT1)发生中断后,8个LED整体闪烁16次;P3.2(INT0)中断, 8个LED循环发光16次。设P3.3(INT1)优先中断,观察两个中断顺序不同的结果有什么不同。 实验程序:

ORG 0000H DELAY1:MOV R4, #0FFH SETB EA

AJMP MAIN DJNZ R4, $ RETI ORG 0003H DJNZ R5, DELAY1 ORG 0200H AJMP ZD0 RET ZD1: CLR EA ORG 0013H ORG 0100H PUSH ACC AJMP ZD1 ZD0: CLR EA SETB EA ORG 0030H PUSH ACC MOV R6, #10H MAIN: SETB IT0 SETB EA MOV A, #0FFH SETB IT1 MOV R7, #10H LP1: MOV P1, A SETB EA MOV A, #01H ACALL DELAY SETB PX1 LP0: MOV P1, A CPL A

18

SETB EX0 SETB EX1 MOV A, #0AAH HA1S1: MOV P1, A AJMP HA1S1

DELAY:MOV R5, #0FFH ACALL DELAY RL A

ACALL DELAY DJNZ R7, LP0 CLR EA POP ACC

ACALL DELAY DJNZ R6, LP1 CLR EA POP ACC SETB EA RETI

END

反汇编代码TEXT18.LST

LOC OBJ LINE SOURCE

0000 1 ORG 0000H 0000 0130 2 AJMP MAIN 0003 0003 2100 0013 0013 4100 0030 0030 D288 0032 D28A 0034 D2AF 0036 D2BA 0038 D2A8 003A D2AA 003C 74AA 003E F590 0040 013E 0042 7DFF 0044 7CFF 0046 DCFE 0048 DDFA 004A 22 0100 0100 C2AF 0102 C0E0 0104 D2AF 0106 7F10 0108 7401 010A F590 010C 1142 010E 23 010F 1142 0111 DFF7 0113 C2AF 0115 D0E0 0117 D2AF 0119 32 0200 0200 C2AF 0202 C0E0 0204 D2AF 0206 7E10 0208 74FF 020A F590 020C 1142 020E F4 020F 1142 0211 DEF7 0213 C2AF 0215 D0E0 3 ORG 0003H 4 AJMP ZD0 5 ORG 0013H 6 AJMP ZD1 7 ORG 0030H 8 MAIN: SETB IT0 9 SETB IT1 10 SETB EA 11 SETB PX1 12 SETB EX0 13 SETB EX1

14 MOV A, #0AAH 15 HA1S1: MOV P1, A 16 AJMP HA1S1

17 DELAY:MOV R5, #0FFH 18 DELAY1:MOV R4, #0FFH 19 DJNZ R4, $

20 DJNZ R5, DELAY1 21 RET 22 ORG 0100H

23 ZD0: CLR EA 24 PUSH ACC 25 SETB EA

26 MOV R7, #10H 27 MOV A, #01H 28 LP0: MOV P1, A 29 ACALL DELAY 30 RL A

31 ACALL DELAY 32 DJNZ R7, LP0 33 CLR EA 34 POP ACC 35 SETB EA 36 RETI

37 ORG 0200H

38 ZD1: CLR EA 39 PUSH ACC 40 SETB EA

41 MOV R6, #10H 42 MOV A, #0FFH 43 LP1: MOV P1, A 44 ACALL DELAY 45 CPL A

46 ACALL DELAY 47 DJNZ R6, LP1 48 CLR EA 49 POP ACC

19

0217 D2AF 50 SETB EA 0219 32 51 RETI 52 END

实验步骤及结果记录: 实验步骤:

(1) 在DVCC-598JH实验箱中,用导线将L1~L8分别与P1.0~P1.7连接。P3.2与开关K1连接,P3.3与开关K2连接,并将开关断开。

(2) 新建文件、输入程序并保存文件。 (3) 按F9键调试程序。

(4) 按Ctrl+F9键编译链接并传送文件至DVCC-598JH实验箱。 (5) 运行程序,观察LED1~LED8的亮灭状态并记录实验结果。 (6) 合上K1,观察LED1~LED8的亮灭状态并记录实验结果。 (7) 断开K1,观察LED1~LED8的亮灭状态并记录实验结果。 (8) 合上K2,观察LED1~LED8的亮灭状态并记录实验结果。 (9) 断开K2,观察LED1~LED8的亮灭状态并记录实验结果。

(10) 先合上K1,后合上K2,观察LED1~LED8的亮灭状态并记录实验结果。 (11) 先合上K2,后合上K1,观察LED1~LED8的亮灭状态并记录实验结果。 实验结果:

(1) 运行程序,LED1~LED8间隔发光,LED1、LED3、LED5、LED7亮。 (2) 将开关K1置0,8个LED循环发光16次。

(3) 将开关K1置1,LED1~LED8间隔发光,LED1、LED3、LED5、LED7亮。 (4) 将开关K2置0,LED1~LED8整体闪烁16次。

(5) 将开关K2置1,LED1~LED8间隔发光,LED1、LED3、LED5、LED7亮。

(6) 将开关K1置0,后将开关K2置0,先是8个LED循环发光,待开关K2置0后,LED1~LED8整体闪烁16次。

(7) 将开关K2置0,后将开关K1置0,LED1~LED8整体闪烁16次。 实验讨论:

1)在P3.3 (INT1)发生中断后, P3.2(INT0)立即中断;观察到的现象是 8个LED整体闪烁16次后,回到主程序,LED1~LED8间隔发光。

2)在P3.2 (INT0)发生中断后, P3.3(INT1)立即中断;观察到的现象是 先是8个LED循环发光,待P3.3(INT1)产生中断后,LED1~LED8整体闪烁16次后,回到中断INT0,8个LED循环发光至16次,最后回到主程序,LED1~LED8间隔发光 。

3)在SETB PX1前加分号,观察到的现象是 单片机响应最先发生的中断后,响应后产生的中断,中断服务程序执行完后回到主程序中 。

20

实验四 定时器/计数器中断

一、实验目的

1、 进一步掌握中断的概念。

2、 掌握定时/计数器中断编程方法。 二、实验设备

DVCC仿真系统一套、计算机一台 三、实验内容

1、 用定时器T0用工作方式1实现P1.0所控制的LED每秒钟闪烁1次。

2、 当P3.5(T1)接收5个单脉冲,P1.0所控制的LED亮;当P3.5接收5个单脉冲,P1.0所控制的LED灭;如此循环。(fosc=6mhz) 四、实验原理

五、程序

1、 用定时器T0用工作方式1实现P1.0所控制的LED每秒钟闪烁1次。 实验程序:

反汇编代码TEXT8.LST

LOC OBJ LINE SOURCE

0000 1 ORG 0000H 0000 0130 2 AJMP START 000B 3 ORG 000BH 000B 0146 4 AJMP TIME0 0030 5 ORG 0030H 0030 C290 6 START:CLR P1.0 ; 0032 753000 7 MOV 30H,#00H 0035 758901 8 MOV TMOD, #01H ; 0038 758C9E 9 MOV TH0,#9EH 003B 758A58 10 MOV TL0,#58H 003E D2AF 11 SETB EA 0040 D2A9 12 SETB ET0 0042 D28C 13 SETB TR0

21

0044 80FE 14 SJMP $

0046 C0E0 15 TIME0:PUSH ACC 0048 C0D0 16 PUSH PSW 004A 0530 17 INC 30H 004C E530 18 MOV A, 30H

004E B41405 19 CJNE A, # 20, T_RET 0051 B290 20 CPL P1.0 0053 753000 21 MOV 30H, #00 0056 758C9E 22 T_RET:MOV TH0, #9EH 0059 758A58 23 MOV TL0, #58H 005C D0D0 24 POP PSW 005E D0E0 25 POP ACC 0060 32 26 RETI 27 END

实验步骤:

0. 将LED1用导线与P1.0连接。 1.打开DVCC-598JH实验箱电源。

2.启动计算机,运行DVCC-598JH实验系统。 3.新建文件、输入程序并保存文件。 4.调试程序。 5. 编译文件

编译无错误,无警告,则通过。 6. 编译连接传送文件

编译 无错误,在DVCC实验系统显示P状态下,按PCDBUG键,显示器全暗。点击:编译连接传送文件至DVCC-598JH实验箱。错误!链接无效。时,数码管闪烁。 7. 按F9连续运行 程序,查看运行结果

实验结果:P1.0所控制的LED每秒钟闪烁1次。

2、当P3.5接收5个单脉冲,P1.0所控制的LED亮;当P3.5接收5个单脉冲,P1.0所控制的LED灭;如此循环。 实验程序:

反汇编代码TEXT9.LST

LOC OBJ LINE SOURCE 1

0000 2 ORG 0000H 0000 0130 3 AJMP START; 001B 4 ORG 001BH 001B B290 5 CPL P1.0 001D 32 6 RETI 0030 7 ORG 0030H 0030 C290 8 START: CLR P1.0

0032 758960 9 MOV TMOD,#60H; 设置计数器T1工作方式2 0035 758DFB 10 MOV TH1,#0FBH 0038 758BFB 11 MOV TL1,#0FBH 003B D2AF 12 SETB EA 003D D2AB 13 SETB ET1 003F D28E 14 SETB TR1

22

0041 80FE 15 SJMP $ 16 END 实验步骤

0. 将LED1用导线与P1.0连接,P3.5接单脉冲源, 1.打开DVCC-598JH实验箱电源。

2.启动计算机,运行DVCC-598JH实验系统。 3.新建文件、输入程序并保存文件。 4.调试程序。 5. 编译文件

编译无错误,无警告,则通过。 6. 编译连接传送文件

编译 无错误,在DVCC实验系统显示P状态下,按PCDBUG键,显示器全暗。点击:编译连接传送文件至DVCC-598JH实验箱。错误!链接无效。时,数码管闪烁。 7. 按F9连续运行 程序,查看运行结果

六、实验结果

当P3.5接收5个单脉冲,P1.0所控制的LED亮;当P3.5再接收5个单脉冲,P1.0所控制的LED灭;如此循环。

23

实验五 并行I/O口8255扩展实验

一、实验目的

掌握8255芯片的结构及编程方法,学习模拟交通灯控制的实现方法。 二、实验设备

DVCC仿真系统一套、计算机一台 三、实验内容

用8255做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。 四、实验说明

因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化情况和规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1东西绿灯通车,南北红灯。过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态3,南北绿灯通车,东西红灯。过一段时间转状态4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。最后循环至状态1。

五、实验原理

8255各口地址:

控制口

0FF2bH;A口 0FF28H;B口 0FF29H;C口 0FF2AH

六、程序

ORG 0630H;

HA4S:MOV SP,#60H;设置栈指针 MOV DPTR,#0FF2BH

MOV A,#80H;设置PC、PB为输出口,工作方式0 MOVX @DPTR,A MOV DPTR,#0FF29H MOV A,#02H

MOVX @DPTR,A INC DPTR MOV A,#49H

MOVX @DPTR,A ;电亮四个红灯 MOV R2,#25H

LCALL DELAY ;延时 HA4S3:MOV DPTR,#0FF29H MOV A,#08H

MOVX @DPTR,A INC DPTR MOV A,#61H

MOVX @DPTR,A;东西绿色灯亮,南北红色灯亮

24

MOV R2,#55H

LCALL DELAY;延时

MOV R7,#05H;黄灯闪烁5次 HA4S1: MOV DPTR,#0FF29H MOV A,#04H

MOVX @DPTR,A INC DPTR

MOV A,#51H;东西黄色灯亮,南北红色灯亮 MOVX @DPTR,A MOV R2,#20H LCALL DELAY

MOV DPTR,#0FF29H MOV A,#00H

MOVX @DPTR,A INC DPTR

MOV A,#41H;南北红色灯亮 MOVX @DPTR,A MOV R2,#20H LCALL DELAY

DJNZ R7, HA4S1;闪烁次数未到继续 MOV DPTR,#0FF29H MOV A,#03H

MOVX @DPTR,A INC DPTR MOV A,#0CH

MOVX @DPTR,A ;东西红色灯亮,南北绿色灯亮 MOV R2,#55H LCALL DELAY

MOV R7,#05H ;黄灯闪烁5次 HA4S2: MOV DPTR,#0FF29H MOV A,#02H

MOVX @DPTR,A INC DPTR MOV A,#8AH

MOVX @DPTR,A ;东西绿色灯亮,南北黄灯亮 MOV R2,#20H LCALL DELAY

MOV DPTR,#0FF29H MOV A,#02H

MOVX @DPTR,A INC DPTR

MOV A,#08H ;东西绿色灯亮 MOVX @DPTR,A MOV R2,#20H LCALL DELAY

DJNZ R7, HA4S2 ;闪烁次数未到继续 LJMP HA4S3 DELAY:PUSH 02H DELAY1:PUSH 02H DELAY2:PUSH 02H

DELAY3:DJNZ R2,DELAY3 POP 02H

DJNZ R2,DELAY2 POP 02H

DJNZ R2,DELAY1 POP 02H

DJNZ R2,DELAY RET END

25

反汇编代码TEXT10.LST

LOC OBJ LINE SOURCE

0000 1 ORG 0000H; 0000 020003 2 LJMP HA4S 0003 758160 3 HA4S:MOV SP,#60H;

0006 90FF2B 4 MOV DPTR,#0FF2BH 0009 7480 5 MOV A,#80H; 000B F0 6 MOVX @DPTR,A 000C 90FF29 7 MOV DPTR,#0FF29H 000F 7402 8 MOV A,#02H

0011 F0 9 MOVX @DPTR,A 0012 A3 10 INC DPTR 0013 7449 0015 F0 0016 7A25 0018 120080 001B 90FF29 001E 7408 0020 F0 0021 A3 0022 7461 0024 F0 0025 7A55 0027 120080 002A 7F05 002C 90FF29 002F 7404 0031 F0 0032 A3 0033 7451 0035 F0 0036 7A20 0038 120080 003B 90FF29 003E 7400 0040 F0 0041 A3 0042 7441 0044 F0 0045 7A20 0047 120080 004A DFE0 004C 90FF29 004F 7403 0051 F0 0052 A3 0053 740C 0055 F0 0056 7A55 0058 120080 005B 7F05 005D 90FF29 0060 7402 0062 F0 0063 A3 0064 748A 0066 F0 0067 7A20 0069 120080 11 MOV A,#49H

12 MOVX @DPTR,A ; 13 MOV R2,#25H

14 LCALL DELAY ; 15 HA4S3:MOV DPTR,#0FF29H 16 MOV A,#08H

17 MOVX @DPTR,A 18 INC DPTR 19 MOV A,#61H

20 MOVX @DPTR,A; 21 MOV R2,#55H 22 LCALL DELAY; 23 MOV R7,#05H;

24 HA4S1: MOV DPTR,#0FF29H 25 MOV A,#04H

26 MOVX @DPTR,A 27 INC DPTR 28 MOV A,#51H;

29 MOVX @DPTR,A 30 MOV R2,#20H 31 LCALL DELAY

32 MOV DPTR,#0FF29H 33 MOV A,#00H

34 MOVX @DPTR,A 35 INC DPTR 36 MOV A,#41H;

37 MOVX @DPTR,A 38 MOV R2,#20H 39 LCALL DELAY 40 DJNZ R7, HA4S1; 41 MOV DPTR,#0FF29H 42 MOV A,#03H

43 MOVX @DPTR,A 44 INC DPTR 45 MOV A,#0CH

46 MOVX @DPTR,A ; 47 MOV R2,#55H 48 LCALL DELAY 49 MOV R7,#05H ;

50 HA4S2: MOV DPTR,#0FF29H 51 MOV A,#02H

52 MOVX @DPTR,A 53 INC DPTR 54 MOV A,#8AH

55 MOVX @DPTR,A ; 56 MOV R2,#20H 57 LCALL DELAY

26

006C 90FF29 58 MOV DPTR,#0FF29H 006F 7402 59 MOV A,#02H

0071 F0 60 MOVX @DPTR,A 0072 A3 61 INC DPTR

0073 7408 62 MOV A,#08H ; 0075 F0 63 MOVX @DPTR,A 0076 7A20 64 MOV R2,#20H 0078 120080 65 LCALL DELAY

007B DFE0 66 DJNZ R7, HA4S2 ; 007D 02001B 67 LJMP HA4S3 0080 C002 68 DELAY:PUSH 02H 0082 C002 69 DELAY1:PUSH 02H 0084 C002 70 DELAY2:PUSH 02H

0086 DAFE 71 DELAY3:DJNZ R2,DELAY3 0088 D002 72 POP 02H

008A DAF8 73 DJNZ R2,DELAY2 008C D002 74 POP 02H

008E DAF2 75 DJNZ R2,DELAY1 0090 D002 76 POP 02H

0092 DAEC 77 DJNZ R2,DELAY 0094 22 78 RET 79 END 七、实验步骤

1.打开DVCC-598JH实验箱电源。

2.启动计算机,运行DVCC-598JH实验系统。 3.新建文件、输入程序并保存文件。 4.调试程序。 5. 编译文件

编译无错误,无警告,则通过。 6. 编译连接传送文件

编译 无错误,在DVCC实验系统显示P状态下,按PCDBUG键,显示器全暗。点击:编译连接传送文件至DVCC-598JH实验箱。错误!链接无效。时,数码管闪烁。 7.按照原理图连接导线:PC口PB口直L1---L12 8.按F9连续运行 程序,查看运行结果 八、实验结果 东 南 西 北 绿 黄 红 绿 黄 红 绿 黄 红 绿 黄 红 PB PC L12 L11 L10 L9 L8 L7 L6 L5 L4 L3 L2 L1 PB3 PB2 PB1 PB0 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 0 0 1 0 0 1 0 0 1 0 0 1 02H 49H 状态0 开始运行 状态1 1 0 1 黄0 0 0 0 0 1 0 0 0 0 0 0 1 黄1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 08 04 61 51 东西绿灯 南北红灯 状东西黄灯 0 态南北红灯 2 1 黄0 灯0 闪 0 状态3 东西红灯 南北绿灯 状东西红灯 态南北黄灯 4 0 0 0 0 灯0 闪 0 0 0 0 1 1 1 0 0 0 1 1 1 00H 41H 03 0C 02 8A 1 黄0 灯0 闪 0 灯0 闪 0 02H 08H 表中1表示LED亮,0表示LED灭。

27

初始状态0为东西红灯,南北红灯。然后转状态1东西绿灯通车,南北红灯。过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态3,南北绿灯通车,东西红灯。过一段时间转状态4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。最后循环至状态1。

28

实验六 8155控制显示

一、实验目的

1、 掌握8155的编程方式。

2、 掌握数码管动态显示工作原理。 二、实验设备

DVCC仿真系统一套、计算机一台。 三、实验内容

熟悉实验模块的硬件结构后,通过编程实现六个数码管持续显示“0 1 2 3 4 5 ”,“H E L L 0”等内容。

四、实验说明

实验模块硬件:六个数码管(共阳极)的段选码与B口连接,而它们共阳极的六个公共端分别与8155A口低六位相连。 8155各口地址:

控制口 0FF20H A口 0FF21H B口 0FF22H B口 0FF23H

五、实验原理图

六、实验程序

ORG 0000H

SJMP MAIN;实验6 8155控制显示程序 ORG 0030H; 主程序从0030H开始

MAIN:MOV DPTR,#0FF20H; 控制口地址

MOV A,#03H

MOVX @DPTR, A;设定8155工作方式 MOV 27H,#00H MOV 28H,#01H MOV 29H,#02H MOV 2AH,#03H MOV 2BH,#04H MOV 2CH,#05H

MOV R0, #20H; 字选码送R0 MOV A, R0

MOV DPTR, #0FF21H;8155A口

MOVX @DPTR, A; 字选码送8155A口 MOV R7, #06h ;循环次数为6次

29

MOV R1,#27H;字形显示缓冲区首地址送R1 LOOP: MOV A,@R1

MOV DPTR, #TAB MOVC A, @A+DPTR

MOV DPTR, #0FF22H; 8155B口

MOVX @DPTR, A;段选码送8155B口显示第一字型 ACALL DLY;调延时

MOV A, R0;字选码右移后用于动态显示 RR A

MOV R0, A

MOV DPTR, #0FF21H;为显示下一个字形做准备 MOVX @DPTR, A INC R1

DJNZ R7, LOOP;未完继续 SJMP MAIN

DLY:MOV R3, #0FFH;延时

DJNZ R3, $ RET

TAB:DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H

DB 80H, 90H, 88H, 83H, 0C6H, 0A1H, 86H, 8EH DB 0FFH, 0C0H, 89H,7FH, 0BFH, 89H, 0C7H, 91H END

反汇编代码TEXT11.LST

0000 1 ORG 0000H 0000 802E 2 SJMP MAIN; 0030 3 ORG 0030H;

0030 90FF20 4 MAIN:MOV DPTR,#0FF20H; 0033 7403 5 MOV A, #03H

0035 F0 6 MOVX @DPTR,A; 0036 752700 7 MOV 27H,#00H 0039 752801 8 MOV 28H,#01H 003C 752902 9 MOV 29H,#02H 003F 752A03 10 MOV 2AH,#03H 0042 752B04 11 MOV 2BH,#04H 0045 752C05 12 MOV 2CH,#05H 0048 7820 13 MOV R0, #20H; 004A E8 14 MOV A, R0

004B 90FF21 15 MOV DPTR, #0FF21H; 004E F0 16 MOVX @DPTR, A; 004F 7F06 17 MOV R7, #06h ; 0051 7927 18 MOV R1,#27H; 0053 E7 19 LOOP: MOV A,@R1

0054 90006F 20 MOV DPTR, #TAB 0057 93 21 MOVC A, @A+DPTR 0058 90FF22 22 MOV DPTR, #0FF22H; 005B F0 23 MOVX @DPTR, A; 005C 116A 24 ACALL DLY; 005E E8 25 MOV A, R0; 005F 03 26 RR A

0060 F8 27 MOV R0, A

0061 90FF21 28 MOV DPTR, #0FF21H; 0064 F0 29 MOVX @DPTR, A 0065 09 30 INC R1

0066 DFEB 31 DJNZ R7, LOOP; 0068 80C6 32 SJMP MAIN

006A 7BFF 33 DLY:MOV R3, #0FFH 006C DBFE 34 DJNZ R3, $

30

本文来源:https://www.bwwdw.com/article/2x83.html

Top