• 微机原理课程设计——读取开关值显示在8X8点阵模块上


    微机原理课程设计——读取开关值显示在8X8点阵模块上

    流程图

    代码

      1 ;8255A读取开关值,8255B连接8X8点阵
      2 ;8X8点阵地址
      3 PROTH           EQU     0290H
      4 PROTLR          EQU     0298H
      5 PROTLY          EQU     02A0H
      6 ;8255地址
      7 A_8255           EQU     0288H
      8 B_8255           EQU     0289H
      9 CON_8255        EQU     028BH
     10 ;-----------------------------------------------------------
     11 ;数据段
     12 DATA      SEGMENT
     13 DATA0           DB 000H,07EH,0A1H,091H,089H,085H,07EH,000H
     14 DATA1           DB 000H,000H,001H,0FFH,041H,000H,000H,000H
     15 DATA2           DB 000H,061H,091H,089H,085H,083H,061H,000H
     16 DATA3           DB 000H,066H,0A9H,091H,081H,081H,042H,000H
     17 DATA4           DB 000H,005H,0FFH,045H,024H,014H,00CH,000H
     18 DATA5           DB 000H,08EH,091H,091H,091H,091H,0F2H,000H
     19 DATA6           DB 000H,04EH,091H,091H,091H,091H,07EH,000H
     20 DATA7           DB 000H,0C0H,0A0H,098H,087H,080H,0C0H,000H
     21 DATA8           DB 000H,06EH,091H,091H,091H,091H,06EH,000H
     22 DATA9           DB 000H,07EH,089H,089H,089H,089H,072H,000H
     23 DATAA           DB 000H,03FH,048H,088H,088H,048H,03FH,000H
     24 DATAB           DB 000H,06EH,091H,091H,091H,091H,0FFH,000H
     25 DATAC           DB 000H,042H,081H,081H,081H,081H,07EH,000H
     26 DATAD           DB 000H,03CH,042H,081H,081H,081H,0FFH,000H
     27 DATAE           DB 000H,091H,091H,091H,091H,091H,0FFH,000H
     28 DATAF           DB 000H,090H,090H,090H,090H,090H,0FFH,000H
     29 MESS            DB  'STRIKE ANY KEY,RETURN TO DOS!',0AH,0DH,'$'
     30 ;扫描过程
     31 ORDER           DB  00H,01H,02H,03H,04H,05H,06H,07H
     32 BUFF            DB  8 DUP (0)
     33 DATA      ENDS
     34 ;-----------------------------------------------------------
     35 ;定义堆栈段
     36 STACK       SEGMENT
     37 STA         DB      100     DUP (?)
     38 TOP         EQU     LENGTH  STA
     39 STACK       ENDS
     40 ;-----------------------------------------------------------
     41 CODE      SEGMENT
     42 ASSUME    CS:CODE,DS:DATA,SS:STACK,ES:DATA
     43 ;------------------------------------------------------------
     44 START:      MOV     AX,DATA
     45             MOV     DS,AX
     46             MOV     ES,AX
     47             MOV     AX,STACK
     48             MOV     SS,AX
     49             MOV     SP,TOP
     50             
     51             MOV     DX,OFFSET MESS
     52             MOV     AH,09
     53             INT     21H                      ;显示提示信息
     54 ;------------------------------------------------------------
     55             ;8255初始化
     56             MOV     DX,CON_8255
     57             MOV     AL,90H ;8255写入控制字
     58             OUT     DX,AL
     59 ;------------------------------------------------------------
     60 
     61 MAIN:       MOV     DX,A_8255
     62             IN      AL,DX
     63             ;只显示低四位
     64             AND     AL,0FH
     65             ;获取offset
     66             MOV     BL,08H
     67             MUL     BL
     68             MOV     SI,AX
     69             ;储存于BUFF中
     70             MOV     DI,OFFSET BUFF
     71             MOV     CX,08H
     72             CLD
     73             REP     MOVSB                   ;获取输入对应的值并存于BUFF中
     74 ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++            
     75             ;输出到LED点阵上
     76             
     77             MOV     CX,80H
     78 ;++++++++++++++++++++++++++++++++++++++++++++++    
     79             ;以下代码循环80H次       
     80             ;重复进行①~⑧即可在LED 上稳定的显示            
     81             ;AH----->列  AL----->输出值
     82 D1:         MOV     AH,01H
     83             PUSH    CX
     84             ;CX=8----->输出到每一列
     85             MOV     CX,0008H
     86             MOV     SI,OFFSET ORDER
     87 ;++++++++++++++++++++++++++++++++++++++++++++++    
     88             ;以下代码循环8次,输出到每一列
     89             ;在步骤①~⑧之间可插入几ms的延时
     90 NEXT:       MOV     AL,[SI]
     91             MOV     BX,OFFSET BUFF
     92             XLAT
     93             MOV     DX,PROTH                ;POSITIVE
     94             OUT     DX,AL
     95             MOV     AL,AH
     96             MOV     DX,PROTLR               ;NEGTATIVE
     97             OUT     DX,AL
     98             MOV     AL,00H
     99             OUT     DX,AL                   ;0
    100             SHL     AH,01H
    101             INC     SI
    102             PUSH    CX
    103             ;插入短暂延时
    104             MOV     CX,0FFH
    105 DELAY1:     LOOP    DELAY1        
    106             POP     CX
    107             LOOP    NEXT
    108 ;++++++++++++++++++++++++++++++++++++++++++++++                
    109             POP     CX
    110             CALL    DELAY
    111             LOOP    D1
    112 ;++++++++++++++++++++++++++++++++++++++++++++++              
    113             MOV     AL,00H   
    114             MOV     DX,PROTLR
    115             OUT     DX,AL
    116 ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   
    117             MOV     AH,01                       ;有无键按下
    118             INT     16H
    119             JZ      MAIN
    120             MOV     AH,4CH                    ;返回
    121             INT     21H            
    122 ;----------------------------------------------------------------      
    123 DELAY       PROC    NEAR                           ;延迟子程序
    124             PUSH    CX
    125             MOV     CX,0FFFH                         ;FFH
    126 CCC:        LOOP    CCC
    127             POP     CX
    128             RET
    129 DELAY      ENDP      
    130 ;---------------------------------------------------------------------
    131 CODE        ENDS
    132 END         START
  • 相关阅读:
    he canvas has been tainted by cross-origin data and tainted canvases may not be exported
    Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
    HOW TO REPLACE ALL OCCURRENCES OF A CHARACTER IN A STD::STRING
    one or more multiply defined symbols found
    Std::map too few template arguments
    Always run a program in administrator mode in Windows 10
    JSON.parse 必须用双引号包起来
    jni4net使用小结
    Cannot generate C# proxy dll with JNI4NET tool, running batch file as trusted assembly?
    Java access to the Domino Objects, Part 1
  • 原文地址:https://www.cnblogs.com/YiDongZhao/p/14732644.html
Copyright © 2020-2023  润新知