マイクロコンピュータインターフェース実験3:トラフィックライト制御実験(Cポートセット/リセット制御ワードの使用)

1.実験の目的

並列インターフェース8255を介して交差点の交通灯のアナログ制御を実現し、さらに並列インターフェースの使用を習得します。

2.実験原理と内容

ここに写真の説明を挿入

3つのプログラミングのヒント

交差点での交通灯の法則の変更には、次のものが必要です。
ここに写真の説明を挿入

4、回路配線図

ここに写真の説明を挿入

5、プログラム設計フローチャート

ここに写真の説明を挿入

六、いくつかの説明

この実験では、主に8255のCポートセット/リセット制御ワードを使用して、一方のランプが変化し、もう一方のランプは変化しないという効果を実現しました。

セブン、プログラムソースコード

stack segment stack
    db 200 dup(0)
stack ends

data segment
      APORT equ 288h
      CPORT equ 28ah
      CTRL equ 28bh
data ends

code segment
      assume cs:code,ds:data,ss:stack

      delay MACRO x  ;延时
        local loop_delay
        local flag
        push cx
        push bx
        xor bx, bx
        flag:mov cx, 0ffffh
        loop_delay:loop loop_delay
        inc bx
        cmp bx, x
        jnz flag
        pop bx
        pop cx
      ENDM

      put_data MACRO x, y  ;x为端口 y为数据
        push ax
        push dx
        mov al, y
        mov dx, x
        out dx, al
        pop dx
        pop ax
      ENDM

   main:mov ax,data
        mov ds,ax
        mov ax, stack
        mov ss, ax
        put_data CTRL, 10000000b  ;C口输出
  again:put_data CPORT, 00100100b  ;南北绿灯(PC5)东西红灯(PC2)同时亮30秒
        delay 3000  ;延时30秒
        put_data CTRL, 00001010b ;先让南北绿灯熄灭
        mov cx, 5  ;东西黄灯闪五次
  loop1:put_data CTRL, 00001101b  ;南北黄灯(PC6)亮同时东西红灯保持不变
        delay 100   ;延时制造闪烁
        put_data CTRL, 00001100b  ;南北黄灯熄灭同时东西红灯保持不变
        delay 100
        loop loop1
        put_data CPORT, 10000001b   ;南北红灯(PC7)东西绿灯(PC0)同时亮30秒
        delay 3000
        put_data CTRL, 00000000b   ;先让东西绿灯(PC0)熄灭
        mov cx, 5   ;南北黄灯闪烁5次
  loop2:put_data CTRL, 00000011b   ;东西黄灯(PC1)亮同时南北红灯保持不变
        delay 100   ;延时制造闪烁
        put_data CTRL, 00000010b   ;东西黄灯熄灭同时南北红灯保持不变
        delay 100
        loop loop2
        jmp again   ;循环往复
        mov ah,4ch
        int 21h
code ends
     end main

おすすめ

転載: blog.csdn.net/Cyril_KI/article/details/110677914