主题:[讨论]交通灯控制系统设计--微机课程设计
我对微机根本就不熟,也没怎么学。但是到了期末,老师居然叫我们做课程设计:模拟十字路口红绿灯的循环。我根本就不会,所以上来向各位求救。老师的要求如下:
交通灯控制系统设计方案;方案实施,包括程序设计(程序框图和程序清单及注释)以及其他有关的理论分析和计算。
DATA SEGMENT
LA1 DW 044CH,0420H,0253H,0220H,0252H
LA2 DW 024CH,0420H,0253H,0220H,0252H
LA3 DW 044CH,0220H,0453H,0220H,0452H
DATA ENDS
STACK SEGMENT STACK 'STACK'
STT DB 200 DUP (?)
STACK ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AH,0 ;设置80×25彩色文本方式
MOV AL,3
INT 10H
MOV DI,25 ;显示25个字符
MOV DX,080AH ;显示位置
MOV AH,15 ;取当前页号
INT 10H
MOV BL,07H
LP: MOV AH,2 ;置光标位置
INC DL
INT 10H
MOV AL,2DH ;显示'-'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP ;未完转LP再显示
MOV DI,25
ADD DL,12
LP1: MOV AH,2 ;置光标位置
INC DL
INT 10H
MOV AL,2DH ;显示'-'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP1 ;未完转LP1再显示
MOV DI,25
MOV DX,100AH ;显示位置
LP2: MOV AH,2 ;置光标位置
INC DL
INT 10H
MOV AL,2DH ;显示'-'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP2 ;未完转LP2再显示
MOV DI,25
ADD DL,12
LP3: MOV AH,2 ;置光标位置
INC DL
INT 10H
MOV AL,2DH ;显示'-'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP3 ;未完转LP3再显示
MOV DI,8
MOV DX,0023H ;显示位置
LP4: MOV AH,2 ;置光标位置
INC DH
INT 10H
MOV AL,7CH ;显示'|'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP4 ;未完转LP4再显示
MOV DI,8
ADD DH,7
LP5: MOV AH,2 ;置光标位置
INC DH
INT 10H
MOV AL,7CH ;显示'|'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP5 ;未完转LP5再显示
MOV DI,8
MOV DX,002FH ;显示位置
LP6: MOV AH,2 ;置光标位置
INC DH
INT 10H
MOV AL,7CH ;显示'|'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP6 ;未完转LP6再显示
MOV DI,8
ADD DH,7
LP7: MOV AH,2 ;置光标位置
INC DH
INT 10H
MOV AL,7CH ;显示'|'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP7 ;未完转LP7再显示
LEA SI,LA1
CALL LL
MOV CX,663
MOV DI,50
WWW: CALL WAITF
DEC DI
JNE WWW
LEA SI,LA2
CALL LL
MOV CX,663
MOV DI,100
WWW1: CALL WAITF
DEC DI
JNE WWW1
LEA SI,LA3
CALL LL
RET ;返回DOS
MAIN ENDP
LL PROC NEAR
MOV DI,5
MOV DX,0E28H
L1: MOV AH,2 ;置光标位置
INC DL
INT 10H
MOV AL,[SI] ;显示交通灯
INC SI
MOV BL,[SI]
MOV CX,1
MOV AH,9
INT 10H
INC SI ;指向下一属性字节
DEC DI ;判显示完否
JNZ L1
RET
LL ENDP
;(CX)= 15.08μs的倍数
WAITF PROC NEAR
PUSH AX
WAITF1: IN AL,61H
AND AL,10H ;检测PB4的状态
CMP AL,AH ;是否发生变化
JE WAITF1 ;等待变化
MOV AH,AL ;存入新的PB4的状态
LOOP WAITF1 ;循环,直到CX=0为止
POP AX
RET
WAITF ENDP
CODE ENDS
END START
这里只是个框而已
要补充很多
我实在无从下手了
交通灯控制系统设计方案;方案实施,包括程序设计(程序框图和程序清单及注释)以及其他有关的理论分析和计算。
DATA SEGMENT
LA1 DW 044CH,0420H,0253H,0220H,0252H
LA2 DW 024CH,0420H,0253H,0220H,0252H
LA3 DW 044CH,0220H,0453H,0220H,0452H
DATA ENDS
STACK SEGMENT STACK 'STACK'
STT DB 200 DUP (?)
STACK ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AH,0 ;设置80×25彩色文本方式
MOV AL,3
INT 10H
MOV DI,25 ;显示25个字符
MOV DX,080AH ;显示位置
MOV AH,15 ;取当前页号
INT 10H
MOV BL,07H
LP: MOV AH,2 ;置光标位置
INC DL
INT 10H
MOV AL,2DH ;显示'-'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP ;未完转LP再显示
MOV DI,25
ADD DL,12
LP1: MOV AH,2 ;置光标位置
INC DL
INT 10H
MOV AL,2DH ;显示'-'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP1 ;未完转LP1再显示
MOV DI,25
MOV DX,100AH ;显示位置
LP2: MOV AH,2 ;置光标位置
INC DL
INT 10H
MOV AL,2DH ;显示'-'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP2 ;未完转LP2再显示
MOV DI,25
ADD DL,12
LP3: MOV AH,2 ;置光标位置
INC DL
INT 10H
MOV AL,2DH ;显示'-'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP3 ;未完转LP3再显示
MOV DI,8
MOV DX,0023H ;显示位置
LP4: MOV AH,2 ;置光标位置
INC DH
INT 10H
MOV AL,7CH ;显示'|'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP4 ;未完转LP4再显示
MOV DI,8
ADD DH,7
LP5: MOV AH,2 ;置光标位置
INC DH
INT 10H
MOV AL,7CH ;显示'|'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP5 ;未完转LP5再显示
MOV DI,8
MOV DX,002FH ;显示位置
LP6: MOV AH,2 ;置光标位置
INC DH
INT 10H
MOV AL,7CH ;显示'|'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP6 ;未完转LP6再显示
MOV DI,8
ADD DH,7
LP7: MOV AH,2 ;置光标位置
INC DH
INT 10H
MOV AL,7CH ;显示'|'字符
MOV CX,1
MOV AH,9
INT 10H
DEC DI ;判显示完否
JNZ LP7 ;未完转LP7再显示
LEA SI,LA1
CALL LL
MOV CX,663
MOV DI,50
WWW: CALL WAITF
DEC DI
JNE WWW
LEA SI,LA2
CALL LL
MOV CX,663
MOV DI,100
WWW1: CALL WAITF
DEC DI
JNE WWW1
LEA SI,LA3
CALL LL
RET ;返回DOS
MAIN ENDP
LL PROC NEAR
MOV DI,5
MOV DX,0E28H
L1: MOV AH,2 ;置光标位置
INC DL
INT 10H
MOV AL,[SI] ;显示交通灯
INC SI
MOV BL,[SI]
MOV CX,1
MOV AH,9
INT 10H
INC SI ;指向下一属性字节
DEC DI ;判显示完否
JNZ L1
RET
LL ENDP
;(CX)= 15.08μs的倍数
WAITF PROC NEAR
PUSH AX
WAITF1: IN AL,61H
AND AL,10H ;检测PB4的状态
CMP AL,AH ;是否发生变化
JE WAITF1 ;等待变化
MOV AH,AL ;存入新的PB4的状态
LOOP WAITF1 ;循环,直到CX=0为止
POP AX
RET
WAITF ENDP
CODE ENDS
END START
这里只是个框而已
要补充很多
我实在无从下手了