当前位置:编程学习 > 汇编语言 >>

汇编语言 跑马灯程序设计

控制要求:a、循环左移:L8-L1循环点亮 b、循环右移:L1-L8循环点亮 c、速度控制:分为三档控制 最低档间隔1秒 2档2秒 3档3秒 4档4秒 求高手编写控制程序 8255芯片的 最好写出设计思路 分配端口 原理图 流程图 谢谢 好的加分~好急呢~
答案:DATA SEGMENT
TIM  DB 7FH									;设置初始值
DATA ENDS

STACK   SEGMENT STACK   'STACK'				;堆栈段定义
	DB 100  DUP(?)				
STACK   ENDS

CODE    SEGMENT
	ASSUME  CS:CODE,DS:DATA,SS:STACK

START:  MOV AX,DATA
	MOV DS,AX
	MOV DX,0EEE0H
	IN  AL,DX								;读取当前端口状态
	AND AL,TIM
	JNZ OVR
	MOV AL,7FH								;先点亮第一个灯
	MOV DX,0EEE0H
LOOP1:  OUT DX,AL
	CALL DELAY
	MOV BL,AL
	ROR AL,1								;右移,点亮下一个灯
	MOV BL,AL
	MOV AH,0BH								;检测键盘输入
	INT 21H                 
	OR AL,AL
	JZ LOOP1								;循环点亮
	MOV AX,4C00H							;程序结束
	INT 21H
OVR:NOP
	RET

DELAY   PROC NEAR							;延时子程序
	NOP
	PUSH CX
	MOV CX,0FFFFH
CONTI:  LOOP CONTI
	POP  CX
	RET
DELAY   ENDP
	MOV AX,4C00H
	INT 21H

CODE    ENDS
	END START
其他:单片机为AT89c51型,八个跑马灯接P1口,开始是1357灯亮,延迟400ms,接着是START:MOV A,#0AAH;初次1357灯亮 LOOP :MOV P1,A LCALL DELY LCALL 循环点亮你只要用位移指令就行啦!假如是p1口,你只要先给他赋予一个初值00000001,假如是高电平点亮,那这是就只有一盏灯亮,循环左移就行啦!每次循环一次,都调用一下延时这就可以按自己要求设置延时的时间啦!其实思路都挺简单的!不过你要是对单片机一点都不了解,那只好叫别人写好给你算了!你直接复制下就行! 

上一个:汇编语言程序1一直加到200
下一个:C语言夹带的汇编语言出错operand size conflict

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,