8086汇编控制8255实现开关控制LED以及跑马灯

/*第一次使用汇编,“万事开头难”,这么两个程序居然花了3个多小时才弄出来惊恐

主要是一开头不知道循环该怎么弄,想起现在的程序员还真是幸福啊,一个while,或者for搞定了。

毕竟第一次用,做个纪念。*/

1)8个开关控制8个LED通断


 ;端口地址
 PORT_A     EQU     280H
 PORT_B     EQU     281H
 PORT_CR    EQU     283H
;------------------------------------------
DATA SEGMENT ;数据段起始

DATA ENDS
;------------------------------------------
CODE SEGMENT 
ASSUME CS:CODE,DS:DATA
START:

;初始化8255
;A端口输出,B端口是输入
    	MOV DX,PORT_CR
    	MOV AL,10010000B;90H
    	OUT DX,AL;
;按键点亮第一个LED
JMP2:   MOV    DX,PORT_A ;开关读入
        IN     AL,DX ;开关读入
        MOV    DX,PORT_B ;LED输出
        OUT    DX,AL	 
        JMP    JMP2  
CODE ENDS
END START
;------------------------------------------


2)“流水灯”或者“跑马灯”

 ;端口地址
 PORT_A  EQU 280H
 PORT_B  EQU 281
 PORT_CR EQU 283H
;------------------------------------------
 DATA SEGMENT ;数据段起始
 TABLE DB 01H,02H,04H,08H,10H,20H,40H,80H;还有第二种思路,实验时出了点问题。偷懒用ROL/ROR解决
 DATA ENDS
;------------------------------------------
CODE SEGMENT ;
ASSUME CS:CODE,DS:DATA      
;------------------------------------------
START:  ;初始化8255
        ;A端口输出,B端口是输入
    	MOV DX,PORT_CR
    	MOV AL,10010000B;90H
    	OUT DX,AL;   
    	MOV DX,PORT_B;LED输出
HERE:	MOV AL,01H
    	ROL AL,1;左移   
    	;ROR AL,1;右移
    	MOV BX,300
DELAY:  MOV CX,16EAH    	
DELAY1:LOOP DELAY1;延时20ms
        DEC BX
        JNZ DELAY    	
        JMP HERE
CODE ENDS
END START
;------------------------------------------

                
  • 6
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值