找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2693|回复: 1
打印 上一主题 下一主题
收起左侧

单片机外部中断实验 附Proteus仿真程序

[复制链接]
跳转到指定楼层
楼主
实验内容
1.使用外部中断0,(S0开关)作为控制开关,外部中断0工作在电平或跳沿触发方式,上电后,P1.0位的LED灯点亮,按一次按钮,点亮P1.7位的LED灯,熄灭P1.0位的LED灯。
2.使用外部中断1,(S1开关)作为控制开关,外部中断1工作在电平或跳沿触发方式,在(1)步骤的基础上,按压S1开关,实现上电状态,即,P1.0位的LED灯点亮,熄灭P1.7位的LED灯。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. //实验1
  2. #include<reg51.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit P10=P1^0;
  6. sbit P17=P1^7;
  7. void main()
  8. {
  9. EA=1; //总中断允许
  10. EX0=1; //允许外部中断0中断
  11. IT0=1; //选择外部中断0为跳沿触发
  12. while (1)
  13. {
  14. P10=0;
  15. }
  16. }
  17. void int0() interrupt 0 using 0 //外部中断0的中断函数 中断号n=0,选择第0区工作寄存器区
  18. {
  19. EX0=0; //禁止外部中断0中断
  20. while(1)
  21. {
  22. P10=1;
  23. P17=0;
  24. }
  25. EX0=1;
  26. }        
复制代码
  1. //实验2
  2. #include<reg51.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit P10=P1^0;
  6. sbit P17=P1^7;
  7. void main()
  8. {
  9. EA=1; //总中断允许
  10. EX0=1; //允许外部中断0中断
  11. IT0=1; //选择外部中断0为跳沿触发
  12. EX1=1;
  13. IT1=1;
  14. PX1=1;
  15. while (1)
  16. {
  17. P10=0;
  18. }
  19. }
  20. void int0() interrupt 0 using 0 //外部中断0的中断函数 中断号n=0,选择第0区工作寄存器区
  21. {
  22. EX0=0; //禁止外部中断0中断
  23. while(1)
  24. {
  25. P10=1;
  26. P17=0;
  27. }
  28. EX0=1;        //中断返回前,打开外部中断0中断
  29. }

  30. void int1() interrupt 2 using 2
  31. {
  32. uchar m;
  33. EX1=0;
  34. while(1)
  35. {
  36. P10=0;
  37. P17=1;
  38. }
  39. EX1=1;
  40. }
复制代码

全部资料51hei下载地址:
实验二 外部中断实验.zip (94.99 KB, 下载次数: 35)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:688460 发表于 2020-7-3 06:46 | 只看该作者
最近学习中断中,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表