加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

单片机实验之中断

(2012-09-24 17:28:27)
标签:

数码管

中断int

rs触发器

c语言

中断请求

it

中断

一、实验目的

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

二、实验连线

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

http://s3/middle/7cedfd30xca6f39ad05c2&690

图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

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有