完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、实验目的
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; //定义字符i void 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(); } } |
|
|
|
只有小组成员才能发言,加入小组>>
2489 浏览 0 评论
1057浏览 2评论
673浏览 1评论
439浏览 0评论
175浏览 0评论
284浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 02:36 , Processed in 1.214493 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号