大二(下)マイクロマシンとインタフェース技術テストマイクロマシンシステムシリアルポート


実験名称:試験マイクロマシンシステムシリアルポート(実験教程P 109実験6.10、参考教科書341ページ例9.3)実験環境:PCシリーズ機、アセンブリ言語開発ツールTASM 5.0または将来のアセンブリ実験の目的:アセンブリ言語プログラム設計の方法を学ぶ;8250非同期シリアルインタフェースチップの動作原理を把握する.シリアル通信プログラムの設計を把握する.実験内容:
  • ハードウェアテスト環境を完了する.
  • プログラミングプログラムはマイクロマシンシステムのシリアルポートに対して自発的に自収外リングテストを行う.送信はクエリー方式を採用し、受信は中断方式を採用する.
  • データ送信キーボードから入力し、データ画面表示を受信します.実験手順:
  • は実験内容に基づいてシステム本体ケースの後のRS-232 Cポートの送信と受信端子を短絡する.
  • アセンブリツールを用いてシリアル通信プログラムの実行可能プログラムを作成し、生成する.
  • プログラムキーボードを実行して送信する文字を入力し、表示内容を観察する.
  • プログラムの実行状況に応じて、論理エラーがなく、実験要求に合致するまでソースプログラムを改善する.
  •             .586
    DATA SEGMENT USE16
    OLD0B DD ?
    FLAG  DB 0
    DATA ENDS
    CODE SEGMENT USE16
    ASSUME CS:CODE,DS:DATA
    BEG:     MOV AX,DATA
        MOV DS,AX
        CLI                   ; 
        CALL I8250            ; 
        CALL I8259            ; 8259A 
        CALL RD0B             ; 
        CALL WR0B             ; 
        STI                   ; 
     
    SCANT:   CMP FLAG,-1
             JE  RETURN
             MOV DX,2FDH
        IN AL,DX
        TEST AL,20H           ; 
        JZ SCANT
        MOV AH,1
        INT 16H
        JZ SCANT
        MOV AH,0
        INT 16H
        AND AL,7FH
     
             MOV DX,2F8H
        OUT DX,AL
        CMP AL,1BH
        JNE SCANT
     
    TWAIT:   MOV DX,2F8H
             IN  AL,DX
             TEST AL,40H
             JZ  TWAIT
          
    RETURN:  CALL RESET
        MOV AH,4CH
        INT 21H
     
    RECEIVE PROC              ; 'ESC' 
        PUSH AX
        PUSH DX
        PUSH DS
        MOV AX,DATA
        MOV DS,AX
        MOV DX,2F8H
        IN  AL,DX
        AND AL,7FH
        CMP AL,1BH
        JE NEXT
        MOV AH,2
        MOV DL,AL
        INT 21H
        JMP EXIT
    NEXT:    MOV FLAG,-1 
    EXIT:    MOV AL,20H       ; 
        OUT 20H,AL
        POP DS
        POP DX
        POP AX
        IRET
    RECEIVE ENDP
    
    I8250 PROC                ;3FBH 2FBH
        MOV DX,2FBH
        MOV AL,80H
        OUT DX,AL
        MOV DX,2F9H
        MOV AL,0
        OUT DX,AL
        MOV DX,2F8H
        MOV AL,60H
        OUT DX,AL
        MOV DX,2FBH
        MOV AL,03H
        OUT DX,AL
        MOV DX,2F9H
        MOV AL,01H
        OUT DX,AL
        MOV DX,2FCH
        MOV AL,08H
        OUT DX,AL
        RET
    I8250 ENDP
    
    I8259 PROC                ;D3 = 1
        IN AL,21H
        AND AL,11110111B
        OUT 21H,AL
        RET
    I8259 ENDP
    
    RD0B PROC               ; OLD0C OLD0B
        MOV AX,350BH
        INT 21H
        MOV WORD PTR OLD0B,BX
        MOV WORD PTR OLD0B+2,ES
        RET
    RD0B ENDP
    
    WR0B PROC              ; WR0C WR0B  250BH
        PUSH DS
        MOV AX,CODE
        MOV DS,AX
        MOV DX,OFFSET RECEIVE
        MOV AX,250BH
        INT 21H
        POP DS
        RET
    WR0B ENDP
    
    RESET PROC             ; 
        IN AL,21H
        OR AL,00001000B
        OUT 21H,AL
        MOV AX,250BH
        MOV DX,WORD PTR OLD0B
        MOV DS,WORD PTR OLD0B+2
        INT 21H
        RET
    RESET ENDP
    CODE ENDS
     END BEG