从零开始–单片机十字路口交通灯控制实验

文章目录

      • 2. 用proteus结合keil的联合电路仿真设置
      • 3. 十字路口交通灯实验题目的分析与构思
      • 4. 各部分代码的实现
      • 5. 代码实现的难点解析
  • 理论知识的学习(推荐爱课程的张毅刚老师的视频)
    http://www.icourses.cn/sCourse/course_5981.html
    • 仿真软件proteus的下载安装及基础教程
      下载:http://www.onlinedown.net/soft/578407.htm
      安装:https://jingyan.baidu.com/article/656db918f8590de381249cbf.html
      教程:http://www.elecfans.com/emb/581557.html

2. 用proteus结合keil的联合电路仿真设置

(注意:ISIS是proteus里的电路仿真软件,ARES是PCB制版软件)

四个点亮灯并延时/闪烁的子程序One、Two、Three、Four

  • 5s延时子程序DELAY5

  • 2s延时子程序DELAY2

  • 闪烁子程序BLINK1

  • 闪烁子程序BLINK2

  • 计时器T0初始化程序

  • 计时器T0中断服务子程序

  • 计时器T1初始化子程序

  • 计时器T1中断服务子程序

  • 仿真电路图搭建

  • 带借位的二进制减法SUBB是否可靠地完成了任务的测试
    (以T0为例)

  • 要想我们的代码设计可靠,必须满足以下条件:
    1. 若R2>=1时,对R2的SUBB结束后–>Cy=0,R2=R2-1
    2. 若R2=0时,对R2的SUBB结束后–>Cy=1,R2=255(#FFH)
    3. 若R1>=1时,对R1的SUBB结束后–>Cy=0,R1=R1-Cy
    4. 若R1=0时,对R1的SUBB结束后–>R1=R1-Cy,Cy与R2的SUBB结束后的值保持一致
    接下来我们用keil测试代码+ISIS仿真的89C51最小系统来测试上述条件是否满足:
    当R2=#01H时

    联合proteus的调试结果:(R2=0#,C=0,满足条件)

    仿真结果:

    1. T1的中断服务子程序中的P2.1取反的理解

    当16位二进制数自减为0后,用RST1代码块进行返回,其中会对P2.1取反。这是因为,T1中断服务子程序是服务于两个闪烁子程序BLINK1、BLINK2的,要闪烁(电平变化)的引脚有两个(P1.1、P1.4),而T1的中断服务程序只能有一个,所以不能在中断服务子程序内直接对这两个引脚取反。只能对某个我们用不到的引脚P2.1取反,然后在BLINK1内,将P2.1赋给P1.1;在BLINK2内,将P2.1赋给P1.4。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2018年6月8日
    下一篇 2018年6月8日

    相关推荐