新闻| 论坛| 博客| 在线研讨会
51单片机系列之六:中断的应用
十年砍柴| 2010-07-10 21:21:24 阅读:1091 发布文章

51单片机系列之六:中断的应用

一、设计任务

1、如图1,单片机的P2口通过一个排阻接上一个数码管,P3.2口接上一个开关(开关用于产生中断信号)。用单片机实现:开始时数码管的a,b,c,d,e,f,g依次被点亮(循环),当P3.2口来一个中断信号(一个低电平)时,数码管的a,b,c,d,e,f,g全部点亮,并且亮暗闪烁8次,然后接着原来的依次点亮。

2、如图2,单片机P0口接红色数码管,P1口接蓝色数码管,P2口接绿色数码管,P3.2接开关1(用于产生低优先级中断),P3.3口接开关2(用于产生高优先级中断)。用单片机实现:开始时红色数码管显示数字1~~8(循环),当开关1按下时,红色数码管显示当前数字停止,绿色数码管显示1~~8,一次完了后红色数码管接着显示,当绿色数码管显示时,按下开关2,绿色数码管显示当前数字停止,蓝色数码管显示1~~8(一次)。

二、电路原理图

1——1:数码管的各段依次被点亮

1——2K0按下时,产生中断信号

2——1:低优先级中断

2——2:高优先级中断

三、设计程序

//INT0中断数码管a,b,c,d,e,f,g

ORG 0

SJMP START

ORG 30H

SJMP INT0S

START:MOV IE,#81H

MOV TCON,#1

MOV A,#0FEH

MOV P3,#0FFH

ST: MOV P2,A

ACALL DELAY

RL A

SJMP ST

INT0S:PUSH ACC

MOV R2,#8

LOOP: CLR A

MOV P2,A

ACALL DELAY

MOV A,#0FFH

MOV P2,A

ACALL DELAY

DJNZ R2,LOOP

POP ACC

RETI

DELAY:MOV R7,#250

D1: MOV R6,#250

D2: NOP

NOP

NOP

DJNZ R6,D2

DJNZ R7,D1

RET

END

//高级中断中断低级中断

ORG 0

SJMP START

ORG 3

SJMP INT0S

ORG 13H

SJMP INT1S

ORG 30H

START: MOV IE,#85H

MOV TCON,#5

MOV A,#0FEH

MOV P3,#0FEH

SETB PX1

ST0: MOV A,#1

ST1: PUSH ACC

ACALL SEG7

MOV P0,A

ACALL DELAY

POP ACC

INC A

CJNE A,#9,ST1

SJMP ST0

INT0S: PUSH ACC

MOV A,#0

LOOP: INC A

PUSH ACC

ACALL SEG7

MOV P2,A

POP ACC

ACALL DELAY

CJNE A,#8,LOOP

POP ACC

MOV P2,#0FFH

RETI

INT1S: PUSH ACC

MOV A,#0

LOOP1: INC A

PUSH ACC

ACALL SEG7

MOV P1,A

ACALL DELAY

POP ACC

CJNE A,#8,LOOP1

MOV P1,#0FFH

POP ACC

RETI

DELAY: MOV R7,#250

D1: MOV R6,#250

D2: NOP

NOP

NOP

DJNZ R6,D2

DJNZ R7,D1

RET

SEG7: INC A

MOVC A,@A+PC

RET

DB 0C0H,0F9H,0A4H,0B0H

DB 99H,92H,82H,0F8H

DB 80H,90H,88H,83H

DB 0C6H,0A1H,86H,8EH

END

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客