請問微處理機實習LED跑馬燈的程式

題目:24個LED中先單燈從左向右移動,全亮,再全滅,再從右到左雙燈移動, 直到按ESC才停止。 我們是用I/O版+麵包版 零件用"排燈"、"排阻"、"IC8255" 請大家幫幫我 PS:請給我全亮和全滅的程式還有雙燈的程式,如果可以給全部是最好的,回答最好的人有20點喔^^ 我要的是組合語言的程式喔

上一篇: 請說明 (漢書.藝文志 .諸子略敘 )的主要內容及主旨所在
下一篇: 20 點大放送 金門教師甄試值得嗎 考過者請進

訪客評論

  1. #1 吃太飽 2007-02-11, 9:59 PM
    你同學也來要了類似的
    一樣, INIT_8255 請自己寫
    .MODEL SMALL
    .STACK
    .DATA
    MSG_START  label byte
    db ' ===== 24 LED Show =====', 0dh, 0ah
    db 'Press ESC key to end', 0dh, 0ah
    db '$' ; end message
    MSG_END db 'Program normal ending!$'
    ;--
    Input macro
    mov ah,06
    mov dl,0ffh
    int 21h
    endm
    ;--
    Print  macro string
    lea dx, string
    mov ah, 9
    int 21h
    endm
    ;--
    PORTA equ 3e0h
    PORTB equ 3e1h
    PORTC equ 3e2h
    CTRL  equ 3e3h
    DELAY_COUNT  equ  7ffh
    ;==
    .CODE
    .586
    Main  proc  far
    mov ax,@data
    mov ds,ax

    print MSG_START

    call Init_8255 ; Initial 8255

    xor eax, eax ; clear eax
    call Show_LED ; clear all LED

    Beginning:
        ; Shift Right by 1 bits
        or eax, 1000000h
    @@:
    shr eax, 1
    call Show_LED
    jz  End_Program
    test  al, 1 ; alreay reach right end ?
    jz  @b  ; loop again

    ; All lighted
    mov  eax, 0ffffffh
    call Show_LED
    jz  End_Program

    ; all cleared
    xor eax, eax
    call Show_LED
    jz  End_Program

    ; Shift left by 2 bits
    mov al, 3  ; set 2 bits
    @@:
    shl eax,2
    call  Show_LED
    jz  End_Program
    test eax, 0c00000h  ; all cleared ?
    jz @b  ; no, loop again

    xor eax, eax        ; clear all bits
    jmp Beginning; Redo again

    End_Program:
    Print   MSG_END

    ; program terminated
    mov ah,4ch
    int 21h
    Main    endp
    ;===                
    ; Delay for a while    
    ; Input  : None
    ; Output : ZF, if ESC key pressed
    ; Destroyed   : None
    ;----
    delay proc near
      push cx

      mov cx,DELAY_COUNT
    @@:
    input ; Check key
    cmp  al,27  ; ESC Key ?
    loopnz @b
    pop  cx
    ret
    delay endp
    ;----
    ;Show_LED
    ; Input : EAX = the LED to display
    ; Output: 3 port LED shown
    ; Destroyed : None
    ;---
    Show_LED proc near
    push dx
    push eax
    mov dx, PORTA
    out dx, al
    shr eax, 8
    mov dx, PORTB
    out dx, al
    shr eax, 8
    mov dx, PORTC
    out dx, al
    call Delay
    pop eax
    pop dx
    ret
    Show_LED endp
    ;---
    ; Init_8255
    ; Input  : None
    ; Output : 8255 initialized, Port A,B,C programmed as output
    ; Destroyed : None
    ;---
    Init_8255 proc near
    pusha
    ; put initial code here
    popa
    ret
    Init_8255 endp
    ;---
    end Main

發表評論

評論內容 (必填):

點擊獲得Trackback地址
My E-mail