单片机c语言中断程序实验报告,51单片机外部中断实验报告.doc

51单片机外部中断实验报告

51单片机外部中断实验

实验报告要求:

整理本实验涉及的程序,将它们按正确的格式详细书写在实验报告纸上。

无中断时发光让发光二极管从左到右依次点亮,有外部中断请求时,4位数码管从0000开始加1显示(加到9999后复位为0000),同时蜂鸣器报警。

#include

#include

int n1,n2;

sbit beep=P3^5;

char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

void delay(int x)

{

int i,j;

for(i=0;i

for(j=0;j<200;j++);

}

void main()

{

EA=1;

EX0=1;

IT0=0;

EX1=1;

IT1=1;

PX1=1;

while(1);

}

void int0() interrupt 0

{

beep=0;

P2=0xfe;

delay(200);

for(n1=8;n1>0;n1--)

{

P2=_crol_(P2,1);

delay(200);

}

}

void int1() interrupt 2

{

P0=0x00;

for(n2=0;n2<16;n2++)

{

P1=table[n2];

delay(200);

}

}

设置中断优先级寄存器,当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序将被中断去执行外部中断1的中断程序(数码管加1显示程序)。

C语言程序

#include

#include

int n1,n2;

chartable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,

0x88,0x83,0xc6,0xa1,0x86,0x8e};

void delay(int x)

{

int i,j;

for(i=0;i

for(j=0;j<200;j++);

}

void main()

{

EA=1;

EX0=1;

IT0=1;

P2=0xfe;

delay(200);

for(n1=8;n1>0;n1--)

{

P2=_crol_(P2,1);

delay(200);

}

}

void int0() interrupt 0

{

EX0=1;

P0=0x00;

for(n2=0;n2<16;n2++)

{

P1=table[n2];

delay(200);

}

EX0=0;

}

汇编程序:

ORG 0000H

AJMP MAIN

ORG 0003H

LJMP EXT0_INT

ORG 0013H

LJMP EXT1_INT

ORG 0100H

MAIN:SETB EA

SETB EX0

SETB EX1

SETB PX1

CLR IT0

CLR IT1

AJMP $

EXT0_INT: MOV P2,#0FEH

MOV R4,#08H

L1:ACALL DELAY

MOV A,P2

RL A

MOV P2,A

DJNZ R4,L1

RETI

EXT1_INT: MOV P1,#0F0H

MOV R5,#00H

MOV DPTR ,#TAB

L4:MOV A,R5

MOVC A,@A+DPTR

MOV P0,A

ACALL DELAY

INC R5

CJNE R5,#0AH,L4

RETI

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

DELAY:MOV R6,#0FFH

L5:MOV R7,#0FFH

L6:NOP

NOP

DJNZ R7,L6

DJNZ R6,L5

RET

END

写出实验结果、实验收获与对本实验改进的意见。

1)无中断时发光二极管从左到右依次点亮,有外部中断请求时,4位数码管从0000开始加1显示(加到9999后复位为0000),同时蜂鸣器报警。

2)当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序被中断去执行外部中断1的中断程序(数码管

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值