⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shangchuan+copy+of+travellights.asm

📁 用8253和8255实现交通灯 微机接口课程设计源码
💻 ASM
字号:
;设置数据段,以及端口地址分配
   data segment
        pb db ?
        porta equ 218h
        portb equ 219h
        portc equ 21Ah
        ptcon equ 21Bh
        mess db 'ENTER ANY KEY CAN EXIT TO DOS!',0dh,0ah,'$'
data ends


;设置堆栈段和代码段
stack segment stack
        sta dw 50 dup(?)
        top equ length sta
   stack ends

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


start:       mov ax,data
                mov ds,ax
                mov es,ax
                mov ah,09h          ;显示
                mov dx,offset mess
                int 21h
                mov dx,ptcon         ;输入控制字
                mov al,80h      ;工作在方式0
                out dx,al ;A、B、C口都为输出

;初始化设置
mov dx,portb          ;控制4个黄灯灭
mov al,0ffh
out dx,al
mov dx,portc         ;控制4个绿灯灭
mov al,0f0h           ;4个红灯亮
out dx,al
   call delay5            ;延时
mov pb,10100101b     ;控制交通灯灯正常运行的控制字

lll:      mov al,pb
            mov dx,portc          ;控制红绿灯
            out dx,al
            call delay10
            or al,0ffh             ;红灯亮灭不变
            out dx,al   ;绿灯全灭
            mov cx,0004h       ;黄灯闪烁次数
 ttt:      mov ah,06h          
            mov dl,0ffh
             int 21h
             jnz ppp               ;判断是否有键按下

mov dx,portb       ;绿灯亮的相应位置黄灯亮
            mov al,pb
            out dx,al
            call delay5
            or  al,0f0h       ;绿灯灭,红灯亮灭不变
             out dx,al
             call delay5
             loop ttt   ;黄灯闪烁4次
             not pb           ;pb取反,红绿灯亮灭互换

mov ah,06h
              mov dl,0feh
               int 21h
               jnz ppp           ;判断是否有键按下
               jmp lll      ;继续控制红绿灯
ppp:    mov ax,4c00h     ;退出,回到DOS
            int 21h

;延时程序
       delay1  proc near       ;延时子程序
                push cx
                mov cx,0ffffh
      ccc:    loop ccc
                 pop cx
                 ret
    delay1  endp
delay5    proc near      ;延时程序
                push ax
                push cx
                mov cx,0060h
     uuu:    call delay1 ;调用延时子程序
                loop uuu
                pop cx
                pop ax
                ret
delay5  endp               

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -