单片机小组
直播中

abdkjshd

8年用户 1198经验值
擅长:可编程逻辑
私信 关注
[问答]

单片机的中断是指什么?怎样去编写中断服务子程序?


数码管的显示原理是什么?
如何去使用proteus、Keil uVision5等软件?单片机的中断是指什么?中断优先级原理是什么?中断过程是怎样的?怎样去编写中断服务子程序?

回帖(1)

朱寅竹

2021-7-1 11:02:42
一、实验目的
1.进一步熟悉利用 PROTEUS、Keil uVision5 等软件的使用方法。
2.理解单片机的中断、中断优先级原理及中断过程,掌握中断服务子程序的编写方法。
3.熟悉数码管的显示原理。
二、实验任务
1.基本任务
已知单片机的 P0 口接了一位七段数码管,当无外部中断(外部中断 0)时,数码管按 a~g 段依次点亮,不断循环显示;当有外部中断(按钮被按下,P3.2 有下降沿电压)时,数码管显示状态改为“8”亮灭闪烁显示,亮灭闪烁显示 8 次后,返回主程序继续按段顺序点亮。请在 Proteus 中画出威廉希尔官方网站 原理图,并编写程序仿真实现上述功能。
2.拓展任务(若未做,则实验报告也无需体现,以保证实验视频和实验 报告的一致性!)
在以上基本任务的基础上,加入一个声光报警器和外部中断 1,当有外部中断 1 时,系统会产生声光报警。假设外部中断 1 的优先级高于外部中断 0。请在 Proteus 中画出威廉希尔官方网站 原理图,并编写程序仿真实现上述功能。

#include “stc15.h” //单片机头文件#include “intrins.h” //延时函数左右移函数头文件unsigned char i; //定义字符ivoid Delay1000ms() //@11.0592MHz 1000ms延时函数{ unsigned char i, j, k; _nop_(); _nop_(); i = 43; j = 6; k = 203; do { do { while (--k); } while (--j); } while (--i);}void main(){ P0=0x00; //单片机自启动时为高电平,需先对P0端置0 IE0=0; //防止启动时自动进行一次中断 IE1=0; //防止启动时自动进行一次中断 P0M0=0x00; //准双向口配置 P0M1=0x00; //准双向口配置 EA=1; //全局中断使能位使能 EX0=1; //外部中断位0中断位使能 EX1=1; //外部中断位1中断位使能 IT0=1; //设置中断0为下降沿触发 IT1=1; //设置中断1为下降沿触发 PX0=0; //外部中断源0低优先级 PX1=1; //外部中断源1高优先级 while(1) //死循环 { for(i=0;i《7;i++) //循环7次使a~g依次点亮 { Delay1000ms(); P0=_crol_(0x01,i); //左移函数从0x01开始左移循环7次 } }}void INT0_ISR(void) interrupt 0 //外部中断源0的中断服务函数{ Delay1000ms(); //消抖 for(i=0;i《8;i++) //亮灭循环8次 { P0 = 0x7f; //配置字形8的段码为7f Delay1000ms(); P0 = 0x00; //使字形8熄灭 Delay1000ms(); }}void INT1_ISR(void) interrupt 2 //外部中断源1的中断服务函数{ Delay1000ms(); //消抖 { P07 = 1; //配置P07端口使声光报警启动 Delay1000ms(); }}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分