标题: 单片机外部中断实验 附Proteus仿真程序 [打印本页]

作者: MUKE85    时间: 2020-6-22 22:53
标题: 单片机外部中断实验 附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)


作者: yyzf998    时间: 2020-7-3 06:46
最近学习中断中,谢谢!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1