单片机小组
登录
直播中
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(); }}
一、实验目的
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(); }}
举报
更多回帖
rotate(-90deg);
回复
相关问答
数码管
单片机
程序
如何
去
编写
linux下的
中断
服务
程序
?有哪些步骤?
2021-07-08
762
C51
单片机
定时器
中断
的
程序
该
怎样
去
编写
呢
2022-01-21
1136
怎样
去
实现51
单片机
的
中断
程序
呢
2022-01-18
815
单片机
中断
的作用是什么?
单片机
中断
处理过程是
怎样
运行的?
2021-07-08
2895
如何
去
编写
STM32
单片机
串口接收
中断
函数的
程序
呢
2021-12-01
829
怎样
去
开启
单片机
的外部
中断
2021-09-27
1178
μC/OS—II下
编写
中断
服务
程序
以及外设驱动
程序
的思路是什么
2021-04-25
438
单片机
中断
的处理过程是
怎样
进行的?
2021-09-23
3437
请问c语言是如何
编写
51
单片机
中断
程序
的?
2021-10-14
926
怎样
去
编写
外部
中断
的
服务
函数呢
2022-03-01
996
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分