微机实验——十字路口交通灯控制器

问题描述:

使用8255,发光二极管等器件搭建交通灯控制器。 模拟十字路口的红绿灯,求显示状态分别为

南北绿东西红,持续时间为4s;

南北黄东西红,闪2次,每次闪为1s;

南北红东西绿,持续时间为4s;

南北红东西黄,闪2次,每次闪为1s。

采用一个按键的形式模拟急救车出现,采用中断形式通知CPU,要求使东南西北四个方向都为红灯1s。

 

问题分析及连线 :

基本问题流程图:

当按下空格键时,东西、南北都亮起红灯,时间为1秒。

8255连线图如下所示:

 

 汇编代码:

data segment
io8255a        equ 28ah
io8255b        equ 28bh
io8255c     equ 28ch
portc1  db 24h,44h,04h,44h,04h   ;六个灯可能的状态,2表示南北,4表示东西
    db  81h,82h,80h,82h,80h   
    db  0ffh                     ;结束标志
data ends
code  segment
      assume  cs:code,ds:data
start:
    mov   ax,data
    mov   ds,ax
    mov   dx,io8255b
    mov   al,90h
    out   dx,al                  ;设置8255为C口输出
    mov   dx,io8255a
re_on:    mov   bx,0
on:    mov   al,portc1[bx]
    cmp   al,0ffh
    jz    re_on
    out   dx,al                  ;点亮相应的灯
    inc   bx
    mov   cx,1000                ;参数赋初值
    test  al,21h                 ;是否有绿灯亮
    jz    de1                    ;没有,则短延时
    mov   cx,4000                ;有,长延时
de1:mov   di,36000               ;di赋初值36000
    push dx
    mov ah,06h
    mov dl,0ffh
    int 21h
    pop dx   
    jnz cmp0
de0:    dec   di                 ;减1技术
    jnz   de0                    ;di不为0掉跳到de0
    loop  de1                    
    jz  on                       
exit:    mov   ah,4ch     
    int   21h
cmp0: cmp al,20h                 ;比较al和20h(空格键)
      jz SOS                     ;是空格键则转到SOS
      jmp de0                
SOS: mov al,84h                  ;救护车模式下的灯
     out dx,al
     mov cx,1000
     jmp de1
code ends
    end start

 

  • 8
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
(1)用8253 计时来完成时间的设定; (3)用8259 中断控制来进行紧急情况处理,如警车执行任务等情况; (4)通过8255A 并口来控制LED 发光二极管的亮灭,输出为0 则亮,输出为1 则 灭; (5)用8255 来输出绿灯的倒计时间。 2 设计方案及分工 在这个方案里,我们将此设计分为5 个模块,即:实现电路设计、连接电路以及各模块 间整合的模块、实现交通灯循环的模块、对中断进行处理的模块、实现绿灯倒计时的显示模 块、实现夜间控制模块。 具体分工如下: xx:实现8253、电路设计、连接电路以及各模块间整合的模块 xx:实现夜间控制模块 xx:实现交通灯循环的模块 xx: 对中断进行处理的模块 xx: 实现绿灯倒计时的显示模块 我们想通过这次设计,具体实现以下功能: 以8086CPU 为核心设计一个交通灯控制系统,通过8255 并口来控制LED 发光二级管 的亮灭,输出0 为亮,输出一为灭;用8253 来实现一个定时(隔一定时间发生一边沿跳 变,引发8259 中断);用8259 来实现对中断的处理; 设有一个十字路口,东西方向与南北方向各有一个红绿灯,初始状态为东西路口的红灯 亮南北路口的绿灯,南北方向的路口通车,并显示南北路口绿灯的倒计时间。延迟一定时间 之后,南北路口与东西路口都为黄灯亮,延迟一定的时间后,南北方向的红灯亮,东西路口 的绿灯两,东西方向的路口通车,并显示东西路口的绿灯倒计时间。延迟一定时间后直接跳 变为东西方向的红灯亮,南北路口的绿灯亮。如上所述循环一定次数后假设进入晚上,屏幕 上显示Good Night!此时这两个路口的黄灯开始闪烁,数码管清零并且闪烁。延迟一定时间 后假设进入早晨并在屏幕上显示Good Night!并实现交通灯的循环。如果遇到紧急情况,采 取紧急中断并且两个方向路口的红灯全亮确保紧急情况得到妥善处理,并且不管。在紧急情 况中断处理模块里通过拨动按钮KK2 来触发中断,使各个路口的灯全显示红灯,并在屏幕 上输出Waring!中断完成后跳回原来的状态,继续运行。 3. 各个模块的实现 3.1交通灯循环模块(XX) 3.1.1 设计思想 十字路口分为南北方向和东西方向,各个方向有红黄绿三灯,其循环过程如下: 1:东西方向路口的红灯亮,南北路口的绿灯亮; 2:东西路口与南北路口都为黄灯亮; 3:东西方向路口的绿灯亮,南北方向路口的红灯亮; 4:不经过黄灯亮,直接跳变为状态1; 5:按如上过程循环; 3.1.2流程图 图3-1 8255 并口输出流程图
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值