真是太感谢你了
不知道你的端口对应哪个灯阿
ASSUME CS:CODE
CODE SEGMENT PUBLIC
ORG 100H ;程序存放的首地址
START:
MOV AX,04A6H
MOV DX,AX
MOV AL,10000000B
OUT DX,AL ;将10000000B输出到地址为04A6H的端口
LOOP1:
MOV DX,04A0H
MOV AL,00100001B
OUT DX,AL ;将00100001B输出到地址为04A0H的端口
CALL DELAY2 ;延时
MOV CX,3H
LOOP2:
MOV AL,00001001B
OUT DX,AL ;将00001001B输出到地址为04A0H的端口
CALL DELAY1 ;延时
MOV AL,00000001B
OUT DX,AL ;将00000001B输出到地址为04A0H的端口
CALL DELAY1 ;延时
LOOP LOOP2 ;loop2开始的语句循环执行三次
MOV AL,00010010B
CALL DELAY2 ;延时
MOV CX,3H
LOOP3:
MOV AL,00000110B
OUT DX,AL ;将00000110B输出到地址为04A0H的端口
CALL DELAY1 ;延时
MOV AL,00000010B
OUT DX,AL ;将00000010B输出到地址为04A0H的端口
CALL DELAY1 ;延时
LOOP LOOP3 ;loop3开始的语句循环执行三次
JMP LOOP1
DELAY1 PROC NEAR ;延时子程序
PUSH CX
MOV CX,8000H
CCC:
LOOP CCC
POP CX
RET
DELAY1 ENDP
DELAY2 PROC NEAR ;延时子程序
PUSH AX
PUSH CX
MOV CX,0030
UUU:CALL DELAY1
LOOP UUU
POP CX
POP CX
POP AX
RET
DELAY2 ENDP
CODE ENDS
END START
源程序如下:
CODE SEGMENT
ASSUME CS:CODE
ORG 1000H
START:MOV DX,73H
MOV AL,80H
OUT DX,AL
MOV DX,71H
MOV AL,1110B
OUT DX,AL
MOV DX,72H
MOV AL,01111001B
OUT DX,AL
CALL DELAYED1
MOV BX,5H
L1:
MOV DX,71H
MOV AL,1110B
OUT DX,AL
MOV DX,72H
MOV AL,10111010B
OUT DX,AL
CALL DELAYED2
MOV DX,71H
MOV AL,1110B
OUT DX,AL
MOV DX,72H
MOV AL,11111011B
OUT DX,AL
CALL DELAYED2
DEC BX
JNZ L1
MOV DX,71H
MOV AL,0011B
OUT DX,AL
MOV DX,72H
MOV AL,11001111B
OUT DX,AL
CALL DELAYED1
MOV BX,5H
L2:
MOV DX,71H
MOV AL,0101B
OUT DX,AL
MOV DX,72H
MOV AL,11010111B
OUT DX,AL
CALL DELAYED2
MOV DX,71H
MOV AL,0111B
OUT DX,AL
MOV DX,72H
MOV AL,11011111B
OUT DX,AL
CALL DELAYED2
DEC BX
JNZ L2
JMP START
DELAYED1: MOV AX,10
L3: MOV CX,0FFFFH
LOOP $
DEC AX
JNZ L3
RET
DELAYED2:MOV CX,0FFFFH
LOOP $
RET
CODE ENDS
END START
8255CS插孔连译码输出070H-07FH插孔
我说的B 就是你看到的PB C就是实验版上的PC
如果你 b3--L1 b2--L2 B1--L3 B0--L4 C7--L5 C6--L6
c5--L7 c4--L8 c3--L9 c2--L10 c1--L11 C0--L12不对的话
可能你的实验板和我见到的不同
你再试一下
C7--L1 C6--L2 c5--L3 c4--L4 c3--L5 c2--L6 C1--L7 C0--L8
B3--L9 B2--L10 B1--L11 B0——L12
还有 灯的延迟时间你要自己调 因为个人的芯片时钟不一样
源程序我调过
还有 标号你自己改一下
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
SETB ET0
SETB EA
MOV R2,#0
MOV R3,#6
MOV R4,#0FEH
CLR 00H
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
INC R2
CJNE R2,#20,T0E
MOV R2,#0
JB 00H,T0LS
MOV A,P0
CPL A
MOV P0,A
DJNZ R3,T0E
SETB 00H
SJMP T0E
T0LS:
MOV A,R4
MOV P0,A
RL A
MOV R4,A
T0E:
RETI
END
简单
程序流程如下:
开始:绿灯
东西方向南北方向的红灯
延迟30秒
东西方向绿灯“
南北方向的红灯已关闭
东西方向的,**的光的
南北方向的,**的光
BR
/>
5秒延时的东西方向的**指示灯熄灭南北方向
**指示灯熄灭
的方向,南北方向20秒的延迟一个南北方向绿灯东西方向红灯
绿灯熄灭红灯熄灭东西方向
一些**的光
的**光南北方向
5秒的延迟将启动
阿尔法
Alpha
以上就是关于200分急求《微机原理与汇编语言》有关红绿灯的一个实验的指令代码全部的内容,包括:200分急求《微机原理与汇编语言》有关红绿灯的一个实验的指令代码、汇编(交通灯控制系统)、89C51芯片用汇编语言编程八个红绿灯交替点亮3次,间隔1秒,定时器0中断,再流水灯。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)