您的位置 首页 培训

试验二、单片机的中止处理

一、ORG0000HAJMPMAINORG0209HMAIN:MOVSP,50HPC=0209HMOV30H,1MOV31H,2MOV32H,3MOVDPTR,TABLETA

一、

ORG 0000H

AJMP MAIN

ORG 0209H

MAIN: MOV SP,#50H PC=0209H

MOV 30H,#1

MOV 31H,#2

MOV 32H,#3

MOV DPTR,#TABLE TABLE=040EH

MOV A,30H

LCALL SQR PC=021AH,当时指针为021DH,

mov b,#7 SP=50H

push b

MOV R1,A SP=51H,51H=07H

MOV A,31H

LCALL SQR PC=0225H,当时指针为0228H

mov b,#3 SP=51H

push b

ADD A,R1 SP=52H,52H=03H

MOV R1,A

MOV A,32H

LCALL SQR PC=0231H,当时指针为0234H

pop b SP=52H,B=06H

ADD A,R1 SP=51H,B=03H

MOV 33H,A

ORG 0309H

LOOP:SJMP LOOP

ORG 0409H

SQR: MOVC A,@A+DPTR PC=0409H 第一次调用:SP=52H,51H=1DH,52H=02H

第2次调用:SP=53H,52H=28H,53H=02H

第三次调用:SP=54H,53H=34H,54H=02H

mov b,#6

RET

TABLE: DB 00,01,04,09,16,25,36,49,64,81

END

二、外中止INT0的呼应。

程序如下:

ORG 0000H

LJMP MAIN

ORG 0003H ;/INT0的进口地址

LJMP INT

ORG 0209H

MAIN: MOV SP,#30H

MOV A,#0FEH

SETB EA ;CPU开中止

SETB EX0 ;答应/INT0中止

SETB IT0 ;设置INT0的中止触发类型

LOOP: MOV P1,A

LCALL DELAY

RL A ;右移A中的数据,以完成亮点活动

LJMP LOOP

ORG 0309H

INT: PUSH ACC ;保存现场

MOV A,#00H

MOV R3,#08H ;闪耀8次

LOOP1: MOV P1,A

CPL A ;将A中的内容取反,以完成亮灭

LCALL DELAY

DJNZ R3,LOOP1

POP ACC ;康复现场

RETI

ORG 0409H

DELAY: MOV R0,# 100

D1: MOV R1,#0FFH

D2: MOV R2,#0FFH

D3: DJNZ R2,D3

DJNZ R1,D2

DJNZ R0,D1

RET

END

剖析:在单脉冲键按下之前,LED处于一个亮点活动的状况。选用中止方法,当按下单脉冲键时,LED状况改为一起闪耀。闪耀8次再康复本来的亮点活动。

2、同级其他外中止INT0和INT1的呼应。

程序如下:

ORG 0000H

LJMP MAIN

ORG 0003H ;/INT0的进口地址

LJMP T0INT

ORG 0013H ;/INT1的进口地址

LJMP T1INT

ORG 0209H

MAIN: MOV SP,#30H

MOV A,#0FEH

SETB EA ;CPU开中止

SETB EX0 ;答应/INT0中止

SETB IT0 ;设置INT0的中止触发类型

SETB EX1 ;答应/INT1中止

SETB IT1 ;设置INT1的中止触发类型

;SETB PX1 ;设置/INT1为高优先级(将在过程三中用到)

LOOP: MOV P1,A

LCALL DELAY

RL A ;右移A中的数据,以完成亮点活动

LJMP LOOP

ORG 0309H

T0INT: PUSH ACC ;保存现场

MOV A,#00H

MOV R3,#08H ;闪耀8次

LOOP1: MOV P1,A

CPL A ;将A中的内容取反,以完成亮灭

LCALL DELAY

DJNZ R3,LOOP1

POP ACC ;康复现场

RETI

ORG 0409H

T1INT: PUSH ACC ;保存现场

MOV A,#55H ;一起亮灭4个

MOV R4,#08H ;闪耀8次

LOOP2: MOV P1,A

CPL A

LCALL DELAY

DJNZ R4,LOOP2

POP ACC ;康复现场

RETI

ORG 0509H

DELAY: MOV R0,# 100

D1: MOV R1,#0FFH

D2: MOV R2,#0FFH

D3: DJNZ R2,D3

DJNZ R1,D2

DJNZ R0,D1

RET

END

剖析:在单脉冲键按下之前,LED处于一个亮点活动的状况。选用中止方法,当按下INT0的单脉冲键时,LED状况改为一起闪耀,闪耀8次再康复本来的亮点活动;当按下INT1的单脉冲键时,LED状况改为一起亮灭4个,亮灭8次再康复本来的亮点活动。当一起按下INT0和INT1的当脉冲键时,单片机先呼应外中止INT0,然后再呼应外中止INT1。

3、不同级其他外中止INT0和INT1的呼应。

在过程二的主程序中加多一条指令:SETB PX1 ;设置/INT1为高优先级

剖析:在单脉冲键按下之前,LED处于一个亮点活动的状况。选用中止方法,当按下INT0的单脉冲键时,LED状况改为一起闪耀,闪耀8次再康复本来的亮点活动;假如此刻按下INT1的单脉冲键时,因为INT1的优先级比INT0的优先级高,所以CPU将呼应高档中止请求,即LED状况改为一起亮灭4个,亮灭8次后,再回来初级中止服务程序。当一起按下INT0和INT1的单脉冲键时,单片机先呼应优先级高的外中止INT1,然后再呼应优先级底的外中止INT0,最终才回到主程序。

假如将T1INT和T0INT相同运用R3来作为倒数器,在软件中调试时会犯错。当从高档中止回来初级中止时,R3的值会变为FF,而不是0—8。所以在程序中运用R3和R4两个寄存器。

而在实践硬件操作中,很难一起触发两种中止,不易进行调查。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/261544.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部