汇编语言 跑马灯程序设计
控制要求: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