基於8255A的交通燈管理系統

 

描述:用8255A的C口,控制紅綠燈的亮滅,a口和b口,控制數碼管倒計時,通過控制延時和反覆送值讓數值看起來連續顯示並間隔一秒(不反覆送值,數字是不會同時出現的。。。),本人水平有限未使用定時器。。。

 

 data segment
io8255c        equ 28ah
io8255con        equ 28bh
io8255a        equ 288h
io8255b        equ 289h

portc1  db  24h,44h,04h,44h,04h,44h,04h   
        db  81h,82h,80h,82h,80h,82h,80h   
        db  0ffh                          
led1   db 4fh,5bh,5bh,5bh,5bh,5bh,5bh,5bh,5bh,5bh,5bh,06h
       db 06h,06h,06h,06h,06h,06h,06h,06h,06h,00h,00h,00h
       db 00h,00h,00h,00h,00h,00h,00h
       db 0ffh
led2   db 3fh,6fh,7fh,07h,7dh,6dh,66h,4fh,5bh,06h,3fh
       db 6fh,7fh,07h,7dh,6dh,66h,4fh,5bh,06h,3fh
       db 6fh,7fh,07h,7dh,6dh,66h,4fh,5bh,06h,3fh
led3   db 4fh,5bh,06h
code  segment
      assume  cs:code,ds:data
start:
    mov   ax,data
    mov   ds,ax
    mov   dx,io8255con
    mov   al,80h
    out   dx,al
    mov si,0             
re_on:    mov   bx,0
on:    mov   al,portc1[bx]       
      mov   dx,io8255c
      cmp   al,0ffh
      jz    re_on
    out   dx,al           
    inc   bx
    push   bx

    mov   cx,200        
    test  al,21h          
    jz    de3                  
      mov cx,500
      mov bx,0   
Y : 
    push cx
    mov   cx,100       
    mov   al,led1[bx]
    cmp   al,0ffh
    jz    T
    mov   dx,io8255a
    out   dx,al
    mov   dx,io8255b
    mov   al,02h
    out   dx,al
Delay1 : loop Delay1
     mov al,00h
     out   dx,al
     mov cx,100
     mov   al,led2[bx]
     mov   dx,io8255a
     out   dx,al
     mov   dx,io8255b
     mov   al,01h
     out   dx,al
Delay2 :  loop Delay2
     mov al,00h
     out   dx,al
     pop cx          
 loop Y
 inc bx
 mov cx,500
jmp Y

de3 : test al,42h
      push cx
      jz   G
      cmp si,3
      jz  d
      
      mov al,led3[si] 
      mov   dx,io8255a
      out   dx,al
      mov   dx,io8255b
      mov   al,05h
      out   dx,al
      jmp f
  d:  
      mov si,0
      mov al,led3[si] 
      mov   dx,io8255a
      out   dx,al
      mov   dx,io8255b
      mov   al,05h
      out   dx,al
   f: inc si
      
  
      
de4: mov di,60000
de5: dec di 
     jnz de5 
	loop  de4
	jmp T

G: de6: mov di,9000
  de7: dec di 
     jnz de7 
loop  de6
T   :
    pop cx
    pop bx 
    push dx
    mov ah,06h
    mov dl,0ffh
    int 21h
    pop dx
    jnz  exit
    jmp on               
exit:    mov   ah,4ch          
    int   21h
code ends
    end start


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章