单片机实验教案 - 图文(4)

2019-03-16 18:29

实验三外部中断方式控制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


单片机实验教案 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中职计算机应用能力考试题解(Office办公软件)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: