实践目的:
1、掌握中断的概念和思想。
2、掌握51单片机中断系统和相关软硬件设计。
实践内容:
1.利用单片机的P0口接数码管的字段脚,P1.0脚接共阴极,P3.2、P3.3引脚接独立按键产生外部中断信号。编写程序,当程序正常运行时数码管显示H字符,当外部中断0有中断请求信号时,数码管从0-9循环显示一次后回到正常状态。如果外部中断1有中断请求信号,则数码管从9-0循环显示一次后回到正常状态。要求中断0可以打断中断1。
2.设计硬件电路,并编写程序完成所要求的功能。
3.在Proteus中加载程序代码并运行仿真,通过操作按键观察程序功能。上电时,数码管显示H;当产生外部中断0中断时,数码管从0-9循环显示;当产生外部中断1中断时,数码管从9-0循环显示;当在外部中断1服务运行时,按下按键,数码管改为从0-9 显示。
4.参考元器件:
7SEG-COM-ANODE
问题讨论
中断函数的特殊性表现在哪里?
收到相关的输入,就可以打断当前正在执行的函数

(1)中断函数不能进行参数传递
(2)中断函数没有返回值
(3)在任何情况下都不能直接调用中断函数
(4)中断函数使用浮点运算要保存浮点寄存器的状态。
(5)如果在中断函数中调用了其它函数,则被调用函数所使用的寄存器必须与中断函数相同,被调函数最好设置为可重入的。
(6)C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容,具体如下:在程序开始处对ACC、B、DPH、DPL和PSW入栈,结束时出栈。中断函数未加using n修饰符的,开始时还要将R0~R1入栈,结束时出栈。如中断函数加using n修饰符,则在开始将PSW入栈后还要修改PSW中的工作寄存器组选择位。
(7)C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。
(8)中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明。防止其它程序调用。
(9)在设计中断时,要注意的是哪些功能应该放在中断程序中,哪些功能应该放在主程序中。一般来说中断服务程序应该做最少量的工作,这样做有很多好处。

源代码如下

#include<reg52.h>unsigned int i,j;
unsigned char code discode[12]={0x76,0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};        //共阴极形式。阳极取反
void delay(void){        //延迟函数unsigned int m,n;for(m=62;m>0;m--)for(n=1000;n>0;n--);
}
void main(){P1 = ~discode[0]; //初始化HTCON = 0x05;     //设置为下降沿有效IE = 0x85;           //8(1000)为允许总中断,5(0101)为设置两个x小中断IP = 0x14;          //1(0001)设置PS为1,PX1为1(优先级比PX0高)即S2的按钮有更高的优先级while(1){P1 = ~discode[0];         //程序进行状态,等待中断}
}
void int0_int(void) interrupt 0{//中断1,显示0~9 (优先级0)for(i=1;i<11;i++){P1 = ~discode[i];delay();}
}
void int1_int(void) interrupt 2{//中断2,显示9~0 (优先级1)for(j= 10;j>0;j--){P1 = ~discode[j];delay();}
}

硬件图纸:

51单片机 数码管中断操作相关推荐

  1. 51单片机数码管交通灯倒计时c语言,51单片机数码管倒计时模拟交通灯汇编程序...

    /********************************************************************** 51单片机数码管倒计时模拟交通灯汇编程序 LED数码管为 ...

  2. 51单片机数码管显示60秒倒计时(C语言)

    51单片机数码管显示60秒倒计时(C语言) 基于普中51单片机开发板,运用定时器/计数器0和1,实现60秒的倒计时和LED灯0.5s间隔闪烁 文章目录 51单片机数码管显示60秒倒计时(C语言) 前言 ...

  3. 51单片机学习--定时器--中断--串口通信

    51单片机学习–定时器–中断–串口通信 定时器–中断–串口通信 中断分类 定时器中断 外部中断 串口中断 基本概念 对于单片机来讲, 中断是指 CPU 在处理某一事件 A 时, 发生了另一事件 B, ...

  4. 基于51单片机数码管显示

    基于51单片机数码管显示 ## 数码管显示原理 数码管(LED Segment Displays)由多个发光二极管封装在一起组成"8"字型的器件,引线已在内部连接完成,只需引出它们 ...

  5. 【51单片机】外部中断

    51的 外部中断 与 定时器(内部中断) 有一个共同特点,那就是与主程序是并行工作的,就是主程序在运行的时候,中断也在等待触发条件,当中断被触发的时候会暂停主程序转而执行中断服务程序,只有中断服务程序 ...

  6. 51单片机之外部中断拙见

    外部中断需要注意的点 1. 外部中断其实是包含在中断系统中的,STC89Cx系列单片机提供4个外部中断:外部中断0(INT0),外部中断1(INT1),外部中断2(INT2),外部中断3(INT3) ...

  7. 51单片机DS18B20与中断冲突解决方式

    51单片机DS18B20与中断冲突解决方式 应用场所 在使用51单片机DS18B20的过程中,总会遇到中断(这里的中断主要是指定时器中断和串口中断)与其时序产生冲突,从而导致读取不稳定的情况发生. 问 ...

  8. 100、基于51单片机数码管温控 温度控制风扇系统设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Protues仿真 七.程序 八.资料包括 摘要 在炎热的夏天人们用电风 ...

  9. 51单片机:外部中断实现流水灯

    51单片机:外部中断实现流水灯 作业要求: 按照给定的实验板电路图编程实现外部中断控制流水灯,初始上电时,实验板右下侧的流水灯区域只有最右侧LED灯亮,其他灯全都熄灭,每按下一次按键,流水灯从右向左流 ...

  10. 单片机c语言数码管显示5,51单片机数码管显示实验报告(5页)-原创力文档

    51单片机数码管显示实验 实验内容: 编写程序让8只数码管初始显示0,每隔大约1s加1显示(可以用延时函数实现),到数码管显示9后,再从0开始显示,如此循环反复. C语言程序 #include #de ...

最新文章

  1. 在Linux部署Nodejs项目,一旦断掉XShell就会导致服务被停掉,真的很郁闷~怎么办?果断用forever
  2. SQL学习之计算字段的用法与解析
  3. 模拟layui弹出层
  4. Java多线程编程总结
  5. Flex页面跳转的五种实现方式
  6. SAP Spartacus UI Duplicated keys has been found in the config of i18n chunks
  7. 2012暑假最后两次组队赛总结
  8. 解决 : Apache Tomcat/8.0.0-RC1 - Error report ... HTTP Status 404
  9. 使用with关键字让你的Python代码更加Pythonic
  10. 分享按钮-新浪微博开放平台
  11. IPQ8072A 如何通过AT指令跟SDX55交互
  12. SpringBoot和Vue验证码
  13. 认知科学早期的计算机隐喻理论是什么,相对于认知科学,首先我们得从这六个问题着手...
  14. FireStart教程:基于SharePoint的出差报销流程四
  15. 串的模式匹配python
  16. the daily 发布了
  17. 华为交换机配置常用命令
  18. 二硫化钼量子点修饰纳米金棒/CdS纳米棒|二硫化钼量子点/g-C3N4复合光催化剂|马来酰亚胺修饰二硫化钼MoS2-MAL
  19. GO使用go get -u “包“: fatal: unable to access ‘https://github.com/..‘: Failed to connect to报错
  20. Linux电脑eduroam怎么连,【SHU·新生季】校园网连接指南

热门文章

  1. LINUX彻底清除历史记录命令
  2. 获取当前的url并移除不想要的字段
  3. python3 tkinter 随机答题
  4. 气血瘀滞热入血室闭经案
  5. 1987年国际C语言混乱代码大赛获奖的一行代码
  6. 【DP】HDU6357 Hills And Valleys
  7. 为什么php-fpm会使用内存一直增加_百度输入法重大BUG:内存占用随用户词库增大而暴涨...
  8. vue 使用高德地图 api
  9. 邮件开发:邮件作用、邮件服务器、电子邮箱与邮件客户端软件
  10. Android Studio代码提示自动补全设置