接口技术课程设计 Lab8000实现交通灯控制系统

来源:互联网 发布:谷歌读屏软件下载安装 编辑:程序博客网 时间:2024/05/21 08:12

实验仪器Lab8000

1.利用8253定时,8259中断及8255输出实现十字路口交通灯模拟控制。

2.实现能自动控制和手动控制。

3.实现能随时可以调整自动模式的绿灯和红灯时间

4.设计电路并在实验台上连接线路。

备注:希望能够给需要的人带来帮助,坚决不支持抄袭。要知道课程设计给人带来的真的是一种合作精神传递。建议先自己做实在不行再参考。

-----------------------------------------------------------------------------------------

汇编代码

mode    equ   82h          ; 8255 工作方式
PA8255  equ   8000h        ; 8255 PA口输出地址
CTL8255 equ   8003h

ICW1    equ   00010011b     ; 单片8259, 上升沿中断, 要写ICW4
ICW2    equ   00100000b     ; 中断号为20H
ICW4    equ   00000001b     ; 工作在8086/88 方式
OCW1    equ   11111100b     ; 只响应INT0 中断
CS8259A equ   09000h        ; 8259地址
CS8259B equ   09001h
CONTROL equ 0A003h
COUNT0  equ 0A000h
COUNT1  equ 0A001h
COUNT2  equ 0A002h

data   segment
CNT    db    0
STB    db    0
data   ends

code   segment
       assume cs:code, ds: data
DELA proc near
     push cx
     push bx
     mov cx,0ffh
  D1: mov bx,0ffh
  D2: dec bx
     jnz D2
     loop D1
     pop bx
     pop cx
     ret
DELA endp

IEnter proc  near
       push  ax
       push  dx
       mov   dx, PA8255
       cmp   CNT,0
       jnz   GREEN
       mov   al,08h
       out   dx,al
       call  DELA
       mov   al, 02h
       out   dx, al          ; 输出计数值
       mov   CNT,0fh
       jmp   ENDI

 GREEN: mov   al, 04h
       out   dx, al
       mov   CNT, 00h

ENDI:  mov   dx, CS8259A
       mov   al, 20h         ; 中断服务程序结束指令
       out   dx, al

       pop   dx
       pop   ax
       iret
IEnter endp

IEnt  proc  near
       push ax
       push dx

       mov   dx, CS8259B
       mov   al, 0fdh         ;屏蔽int0 开放1
       out   dx, al


       mov   dx, PA8255
       cmp  STB, 0
       jnz  GRE
       mov  al,02h
       out  dx,al
       mov  STB,0fh
       jmp   ENDII
GRE:   mov   al, 04h
       out   dx, al
       mov   STB, 00h
ENDII: mov   dx, CS8259A
       mov   al, 20h         ; 中断服务程序结束指令
       out   dx, al

       pop   dx
       pop   ax
       iret
IEnt endp

IInit  proc
       mov   al, 36h        ; 通道0,方式0
       mov   dx, CONTROL
       out   dx, al
       mov   al, 76h        ; 通道1,方式0
       mov   dx, CONTROL
       out   dx, al

       mov   al, 0d0h         ; 计数器初始值。
       mov   dx, COUNT0
       out   dx, al         ; 低八位
       mov   al, 07h
       out   dx, al         ; 高八位
       mov   al, 0e8h         ; 计数器初始值。
       mov   dx, COUNT1
       out   dx, al         ; 低八位
       mov   al, 03h
       out   dx, al         ; 高八位
       mov   dx, CS8259A
       mov   al, ICW1
       out   dx, al

       mov   dx, CS8259B
       mov   al, ICW2
       out   dx, al

       mov   al, ICW4
       out   dx, al

       mov   al, OCW1
       out   dx, al
       ret
IInit  endp

 

start  proc  near
       mov   dx, CTL8255
       mov   al, mode
       out   dx, al

       cli
       mov   ax, 0
       mov   ds, ax

       mov   bx, 4*ICW2          ; 中断号

       mov   ax, code
       shl   ax, 4               ; x 16
       add   ax, offset IEnter   ; 中断入口地址(段地址为0)
       mov   [bx], ax

       mov   ax, 0
       inc   bx
       inc   bx
       mov   [bx], ax            ; 代码段地址为0
       inc   bx
       inc   bx
       mov   ax, code
       shl   ax, 4
       add   ax, offset IEnt
       mov   [bx], ax
       mov   ax, 0
       inc   bx
       inc   bx
       mov   [bx], ax


       call  IInit

       mov   ax, data
       mov   ds, ax
       mov   CNT, 0              ; 计数值初始为0
       mov   al, CNT
       mov   dx, PA8255
       out   dx, al
       sti
LP:                              ; 等待中断,并计数。
       nop
       jmp   LP

start  endp

code   ends

       end start


 

原创粉丝点击