中断实验的c语言程序,单片机实验之中断

中断

一、实验目的

了解中断的产生及影响过程,掌握中断程序的编制。

二、实验连线

用短接块将JP2的3、4脚相连(即连向INT0方向),RS触发器(消抖电路)向单片机的外部中断INT0引脚提供中断所需的脉冲,每按两次开关S2,电平变反一次,产生一个跳变沿,作为外部中断INT0的中断请求信号。实验电路如图4-3所示。

a4c26d1e5885305701be709a3d33442f.png

图4-3 实验电路图

三、实验程序

记录并显示INT0的中断次数,在数码管中显示出来,即每产生一次中断,显示加一。中断次数不超过16次

1、 汇编程序

ORG

0000H

AJMP

NT

ORG

0003H

AJMP

INT0R

NT: MOV

IE,#81H ;允许INT0中断,置EA=1

SETB

IT0 ;边沿触发中断

MOV

R0,#00H ;计数初值为0

BIO: MOV

P1,#0A0H ;第6个数码管显示终端次数

MOV

DPTR,#TAB0

;字形码表送至DPTR

MOV

A,R0

MOVC

A,@A+DPTR ;查表

MOV

P0,A ;显示

SJMP

$ ;等待中断

INT0R:

INC

R0

CJNE

R0,#10H,RET0 ;中断是否满15次

MOV

R0,#00H ;循环

RET0: POP

DPH

POP

DPL

MOV

DPTR,#BIO

PUSH

DPL ;修改终端返回值

PUSH

DPH

RETI

TAB0:

DB

3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB

7FH,6FH,0BFH,0DBH,0CFH,0E6H,0EDH,0FFH

END

2、 C语言程序

#include

Unsigned char

a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

0xbf,0x86,0xdb,0xcf,0xe6,0xff};

char i;

void int_0(void) interrupt 0 using 1

{

i++;

if(i<16)

P0=a[i];

else

{

i=0;

P0=0x3f;

}

}

main()

{

EA=1;

EX0=1;

IT0=1;

P1=0xa0;

while(1);

}

3、 自编程序

(1) 1个数码管8段全部显示,即“8.”,中断一次,8段全灭,每中断一次,变反一次。

(2) 要求同上,每中断一次,变反四次。

四、编写程序并调试通过

1、 调试已有程序,编写调试自编程序;

2、 使用六个数码管显示H,每中断一次,H左移一次;

3、 复位键复位,重复操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值