AT89C52流水灯+外部中断INT0+定时器(汇编语言)

任务要求

用 AT89S52 单片机控制彩灯(流水灯)图形及继电器。即:
①AT89S52 单片机上电时控制由发光二极管组成的图形有规律地不停闪烁(亮、灭的时间不能为 5 秒!);
②当按下按钮(任何时候)时彩灯图形全灭,而继电器工作吸合(控制~220V 30W灯泡亮)5 秒,5 秒后返回彩灯闪烁。

思路

中断可采取外部中断INT0方式,定时器可采用模式一(一次定时50ms,循环100次即为5s);
流水灯部分,我们的想法是做一个“CXK”运球的动作,顺序为左——中——右——中——左,并通过换位实现流水灯的变化,具体代码实现如下:

汇编代码

     ORG 0000H           ;单片机上电后从0000H地址执行AJMP START         ;跳转到主程序存放地址处ORG 0003H           ;设置主程序开始地址AJMP INSER            ;设置中断入口地址ORG 0030H MOV SP,#60H      ;设置堆栈起始地址为60HSTART:SETB TR0         ;允许启动定时器SETB EX0            ;中断设置优先级SETB IT0MOV R3,#32H         ;R3初值SETB EA            ;字卸宪开关  MOV A,#0FFH     ;灯全灭MOV P1,AMOV A,#0FEH         ;1灯亮MOV P1,AMOV R2,#08HLOOP1:RL A               ;左移,向右流水灯亮(向右流水灯)MOV P1,AACALL DELAY1DJNZ R2,LOOP1MOV R2,#05HLOOP2:MOV A,#0FFH     ;灯全灭(外圈灯闪烁5次)MOV P1,AACALL DELAY1MOV A,#00H       ;灯全亮MOV P1,AACALL DELAY1DJNZ R2,LOOP2MOV A,#0FFH       ;灯全灭MOV P1,AACALL DELAY1MOV A,#0EEH      ;0和4灯亮MOV P1,AMOV R2,#10HLOOP3:RL A                 ;(流水灯)MOV P1,A           ;右移,0和4,1和5,2和6,3和7灯亮  ACALL DELAY1DJNZ R2,LOOP3MOV A,#0FFH         MOV P1,A           ;灯灭MOV R2,#10HMOV A,#0EEHMOV P1,AACALL DELAY1MOV A,#77HLOOP4:RR A              ;左移,(流水灯)MOV P1,AACALL DELAY1DJNZ R2,LOOP4MOV R2,#08HMOV A,#0FEHLOOP5:RR A               ;左移,向右流水灯亮(向左流水灯)MOV P1,AACALL DELAY1DJNZ R2,LOOP5MOV A,#0FFHMOV P1,AMOV R2,#05HLOOP6:MOV A,#0FFH     ;灯全灭(外圈灯闪烁5次)MOV P1,AACALL DELAY1MOV A,#00H        ;灯全亮MOV P1,AACALL DELAY1DJNZ R2,LOOP6MOV R0,#05HMOV A,#0F0H       ;(运球)MOV P0,A            ;身体部位亮SETB P2.0SETB P2.1SETB P2.2           ;三个球都灭CLR P2.3CLR P2.4CLR P2.5              ;CXK亮LOOP7:CLR P2.0             ;左球亮CLR P2.3            ;C亮SETB P2.4SETB P2.5           ;XK不亮ACALL DELAY1SETB P2.0              ;左球灭SETB P2.3           ;C灭CLR P2.1             ;中间球亮CLR P2.4               ;X亮ACALL DELAY1SETB P2.1            ;中间球灭SETB P2.4          ;X灭CLR P2.2             ;右球亮CLR P2.5            ;K亮ACALL DELAY1SETB P2.2            ;右球灭SETB P2.5           ;K灭CLR P2.1             ;中间球亮CLR P2.3CLR P2.4CLR P2.5               ;CXK全亮       ACALL DELAY1SETB P2.1              ;中间球灭SETB P2.3SETB P2.4SETB P2.5            ;CXK全灭CLR P2.0              ;左球亮ACALL DELAY1DJNZ R0,LOOP7       ;循环5次MOV R1,#0AH              LOOP8:MOV A,0FFH      ;(人亮,球不亮,且人闪烁)MOV P0,A           ;身体不亮  SETB P2.0SETB P2.1SETB P2.2         ;三个球都要不亮ACALL DELAY1MOV A,#0F0HMOV P0,A           ;身体亮CLR P2.3CLR P2.4CLR P2.5              ;CXK亮ACALL DELAY1CPL AMOV P0,A          ;身体灭SETB P2.3SETB P2.4SETB P2.5         ;CX灭ACALL DELAY1DJNZ R1,LOOP8MOV R1,#0AHAJMP STARTHERE:SJMP HERE            ;查询中断ORG 0200HINSER:SJMP MIE            ;跳转中断服务程序MIE:MOV P0,#0FFH   ;灯灭MOV P1,#0FFH         ;灯灭MOV P2,#0FFH         ;灯灭CLR P3.7ACALL DELAY      ;调用定时器MOV R3,#32H       ;循环100次SETB P3.7RETI                ;中断子程序返回DELAY:MOV TMOD,#01H ;定时器基础设计,模式1,查询方式MOV TL0,#0B0H        ;每隔50ms定时一次MOV TH0,#3CH     ;同上JNB TF0,$            ;查询判断TF0的溢出CLR TF0          ;清0DJNZ R3,DELAY        ;循环RET
DELAY1:MOV R6,#200          ;50ms延时子程序L1:MOV R7,#200L2:NOPDJNZ R7,L2DJNZ R6,L1RET                   ;子程序返回END

仿真电路

硬件电路

一共用了67个灯,大部分灯为并联接到一个口

实际效果

新能源1第一组流水灯

后言

汇编程序不难,难的是焊接工作和排线,焊接大概花费了3-4天的时间,希望这篇文章能给以后学习相关综合实验的师弟师妹一个参考,非专业非科班某单片机课设留。

AT89C52流水灯+外部中断INT0+定时器(汇编语言)相关推荐

  1. 单片机—外部中断与定时器 学习笔记

    外部中断的一些预备知识 一.中断源 二.中断申请标志寄存器--TCON(和定时器的那个TCON是一样的) (每次中断都需要先申请) 1.每一个中断源都有相应的中断标志位: 2.某一个中断源申请中断,相 ...

  2. 基于STC15W4K32S4单片机仿真《外部中断INT0控制LED亮灭》

    1. 编 程 软 件:keil5版本. 2.仿 真 软 件:Proteus8.12 3.单片机选型:STC15W4K32S4 4.学 习 目 标:   1.学习外部中断INT0 5.程 序 文 件 : ...

  3. 51单片机学习笔记之中断(外部中断、定时器中断、中断嵌套)

    要学习51单片机中断的朋友,拥有这一篇博文就够了,深入浅出,里面包含了寄存器,外部中断.定时器中断.中断嵌套等的讲解,还有代码实战.快一万字,写得不容易,还请大家点赞支持一下,后续持续更新 (一)寄存 ...

  4. 【STM32学习】(5)按键控制流水灯(中断实现)

    学习单片机都要学习流水灯,因为流水灯比较简单,易于实现,效果也比较好呈现. 上个博客是按键实现了流水灯控制,本次博客我们使用中断来实现流水灯,中断的重要性不需多讲,就是很重要,以后会经常遇到. 这里我 ...

  5. LPC2124单片机的基础操作——GPIO、外部中断、定时器和串口

    LPC2124单片机的基础操作--GPIO.外部中断.定时器和串口 LPC2124的简介 LPC2124之GPIO GPIO简介 编程习惯 代码编写 LPC2124之EINT(外部中断) EINT简介 ...

  6. 【单片机学习笔记】(31):串口调试技巧、TFT触摸屏初识别、stm32F4与F1对比使用(全系列初始化概览)、YSF4的光耦隔离保护、外部中断与定时器消抖相结合的按键检

    串口调试技巧 可以将调试时会用到,但实际演示是不需要用到的代码用 #if xxx   //这里放调试代码 #endif xxx是 一个宏定义,如果等于0则不编译相关代码,如果为1则编译相关代码 TFT ...

  7. 51单片机学习笔记(郭天祥版)(3)——引脚讲解、数码管静态显示、中断系统(外部中断,定时器中断)...

    学习引脚的功能 9引脚 复位管脚,当给2个机器周期(24个时钟振荡周期)的高电平时会复位,单片机正常工作时会给0.5v的低电平 VPD备用电源的输入端,当主电源VCC发生故障降低到某一规定的低电平时, ...

  8. 51单片机:中断系统(外部中断,定时器中断,串口通信)

    目录 中断系统简介: 中断的优先级和嵌套: 8个中断请求源及其优先级: 中断的分别介绍: 1.外部中断0:INT0 2.外部中断1 3.T0和 T1:定时计数器的功能 4.串口中断(串口为什么使用定时 ...

  9. 51单片机-灯饰自燃紧急处理系统设计(外部中断01定时器中断1)

    此程序为模拟应对因为线路老化而造成灯饰自燃隐患的紧急预警系统-B18021008侯永琪 ①未照明时,系统为初始状态 ②外部中断1即sw-spst自锁开关按下,数码管显示工作状态"1" ...

最新文章

  1. html实体转化字符串 php_PHP htmlentities() 函数
  2. JVM内存管理------JAVA语言的内存管理概述
  3. java 日期是否合法_检测日期字符串是否为合法(java版)
  4. 1.5 编程基础之循环控制 09 奇数求和
  5. thinkpad bios联想logo_最强12吋ThinkPad,X201终极改造:8代酷睿+双内存+NVMe
  6. html文件中包含相关的d3.js文件,D3.js进阶系列之CSV表格文件的读取详解
  7. JDK Windows安装
  8. HDFView 把 JPG 图片转换成 HDF5 格式文件
  9. Linux下视频流媒体直播服务器搭建详解
  10. NLP自然语言处理 之 jieba中文处理
  11. vm 无法打开本地文件进行写入
  12. 窗内网所有编程类视频大集合
  13. Spring之声明式事务控制(九)
  14. 从零基础到web前端工程师(三)
  15. 用 Neo4j 快速构建明星关系图谱,你一定感兴趣
  16. Python基础——魔法方法与异常处理
  17. 关于产品的一些思考——猎云网
  18. mysql icp特性_MySQL:关于ICP特性的说明(未完)
  19. 极客时间去除复制保护
  20. 学习pandas全套代码【超详细】数据查看、输入输出、选取、集成、清洗、转换、重塑、数学和统计方法、排序

热门文章

  1. 华为云IoT智慧物流案例05 | QT应用开发
  2. python 素描化图像_任意图像转素描:Python分分钟实现
  3. HOJ - 2715最小费用流
  4. h5压缩图片并上传到oss
  5. 根据uuid获取通道session
  6. Android:viewpager+ fragment模拟微信首页
  7. C语言随机函数调用两次为啥一样,C语言中随机函数应用
  8. 【SpringBoot DB 系列】Mybatis-Plus 多数据源配置
  9. java-net-php-python-java幼儿早教管理系统查重PPT计算机毕业设计程序
  10. MFC Commbox中的Edit框输入长度无限制