外部中断(数码骰子)

这篇博客介绍了一个使用51单片机和外部中断实现数码骰子的实验。通过按键触发外部中断,数码管进行a到f段的循环显示,之后生成1-6的随机数并显示。实验涉及了8051单片机的中断原理、下降沿触发以及rand()函数生成随机数的方法。硬件部分包括数码管连接单片机I/O口,按键接在P3.2(INT0)以产生中断请求。
摘要由CSDN通过智能技术生成

实验任务:

用一位数码管,显示骰子的点数(点数控制在1~6之内),用一个按键完成掷骰子的操作。按键作为外部中断,每按一次按键后,首先控制数码管从a段到f段循环跑2圈,然后生成一个随机点数并在数码管上显示。

实验工具、器材:keil、proteus、AT89C51芯片、共阳数码管、按键

实验原理:

1、外部中断
单片机在自主运行时通常为死循环程序,为了中断死循环,需要外部干预,故在某一时刻响应一个外部事件,让单片机正在运行的程序打断,转去执行相应的中断程序。执行完中断程序,再回来原来中断的地方执行原来的程序。

8051单片机有/INT0和/INT1两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断源以低电平或下降沿触发方式来输入中断请求信号。/INT0和/INT1中断的入口地址分别是0003H和0013H。如果外部的中断请求信号产生后可能反时间后才能撤销,则为了避免在中断服务程序里反时间无谓等待,可以选择下降沿触发。下降沿触发是“一次性”的,每次中断只会有1个下降沿,因此中断处理程序执行完后可以立即返回主程序,而不必等待中断请求信号恢复为高电平。
2、随机数的产生
rand()函数可以用来产生随机数,而rand()会返回一随机数值,范围在0至RAND_MAX 间。返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,(其值至少为32767),要定义的变量类型,int整形的是32767。


硬件电路说明:

将数码管接在AT89C51单片机的I/O口,按键接在P3.2端口即外部中断INT0。当按键按下,会产生一个下降沿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值