1、 西 安 邮 电 大 学 (计算机学院) 课内实验报告 实验名称: 汽车速度控制系统 专业名称: 计算机科学与技术 班 级: 计科1305 学生姓名: 杨阳 学号(8位): 04131162 指导教师: 申辉 实验日期: 2016年06月24日—2016年07月01日 四.测试数据及运行结果
2、 六.附录:源代码 DATA SEGMENT MY8255_A EQU 1ff0H MY8255_B EQU 1ff2H MY8255_C EQU 1ff4H MY8255_MODE EQU 1ff6H LED DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH BUFFER DB 6 DUP(?) datbuf db 01h,03h DATA
3、 ENDS stack segment stack 'stack' stackbuffer db 200 dup (?) stack ends CODE SEGMENT ASSUME CS:CODE, DS:DATA, ss:stack ;片选数码管 参数输出到C口的值 SELECTDIG MACRO DIGTION PUSH DX PUSH AX MOV DX, MY8255_C MOV AL, D
4、IGTION OUT DX, AL POP AX POP DX ENDM ;先显示的零数 SHALFCOUNT PROC NEAR MOV UFFER[0],AH ;buffer[0]:PC1 MOV BUFFER[1], AL ; PUSH BX PUSH DX SHOWFF: MOV AL, [SI] MOV BL,
5、 [DI] SELECTDIG BUFFER[0] MOV AL, AL MOV DX, MY8255_B OUT DX, AL CALL BIGDELAY SELECTDIG BUFFER[1] MOV AL, BL MOV DX, MY8255_B OUT DX, AL CALL BIGDELAY INC SI
6、 LOOP SHOWFF POP DX POP BX RET SHALFCOUNT ENDP QHALFCOUNT PROC MOV BUFFER[0], AH MOV BUFFER[1], AL PUSH BX PUSH DX SHOWFFQ: MOV AL, [SI] MOV BL, [DI] SELECTDIG BUFFER[0]
7、MOV AL, AL MOV DX, MY8255_B OUT DX, AL CALL DELAY SELECTDIG BUFFER[1] MOV AL, BL MOV DX, MY8255_B OUT DX, AL CALL DELAY INC SI LOOP SHOWFFQ POP DX POP
8、BX ret QHALFCOUNT ENDP SLOWSPEED PROC NEAR PUSH DX PUSH DI MOV BUFFER[0], AH MOV BUFFER[1], AL MOV BUFFER[2], BH MOV BUFFER[3], BL LOOPDECADE: PUSH CX MOV CX, 10 MOV DI, OFFSET LED
9、LOOPUNIT: SELECTDIG BUFFER[3] MOV AL, [DI] MOV DX, MY8255_B MOV BL, AL OUT DX, AL INC DI CALL BIGDELAY SELECTDIG BUFFER[2] MOV AL, [SI] MOV DX, MY8255_B OUT DX, AL CALL BIGDELAY
10、CMP BL, BUFFER[1] JZ CMPDECADE LOOPBACK: LOOP LOOPUNIT POP CX INC SI LOOP LOOPDECADE CMPDECADE: CMP AL, BUFFER[0] JZ EXIT JNZ LOOPBACK EXIT: POP DI POP DX RET SLOWSPEED ENDP QUIC
11、KSPEED PROC NEAR MOV BUFFER[0], AH ;shi wei MOV BUFFER[1], AL ;ge wei MOV BUFFER[2], BH ; xian shi shi wei MOV BUFFER[3], BL ;xian shi ge wei PUSH DX PUSH DI LOOPDECADEQ: PUSH CX MOV CX, 10
12、 MOV DI, OFFSET LED LOOPUNITQ: SELECTDIG BUFFER[3] MOV AL, [DI] MOV DX, MY8255_B MOV BL, AL OUT DX, AL INC DI CALL DELAY SELECTDIG BUFFER[2] MOV AL, [SI] MOV DX, MY8255_B OUT DX, AL
13、CALL DELAY CMP BL, BUFFER[1] JZ CMPDECADEQ LOOPBACKQ: LOOP LOOPUNITQ POP CX INC SI LOOP LOOPDECADEQ CMPDECADEQ: CMP AL, BUFFER[0] JZ EXITQ JNZ LOOPBACKQ EXITQ: POP DI POP DX RET
14、 QUICKSPEED ENDP GREEN PROC NEAR PUSH AX PUSH DX MOV CX, 0 ;+ LOOPGREEN: SELECTDIG 41H MOV AL, 6DH MOV DX, MY8255_B OUT DX, AL CALL DELAY SELECTDIG 42H MOV AL, 3FH
15、 MOV DX, MY8255_B OUT DX, AL CALL DELAY MOV DX, MY8255_A IN AL, DX CMP AL, 00000001B JNZ GREENSTART INC CX LOOP LOOPGREEN GREENSTART: pop dx pop ax RET GREEN ENDP YEL
16、LOW PROC NEAR PUSH AX PUSH DX MOV CX, 0 ;+ LOOPYELL: SELECTDIG 21H MOV DX, MY8255_B MOV AL, 7DH OUT DX, AL CALL DELAY SELECTDIG 22H MOV DX, MY8255_B MOV AL, 5BH O
17、UT DX, AL CALL DELAY MOV DX, MY8255_A IN AL, DX CMP AL, 00000010B JNZ YELLSTART INC CX LOOP LOOPYELL YELLSTART: POP DX POP AX RET YELLOW ENDP RED PROC NEAR P
18、USH AX PUSH DX MOV CX , 0 ;+ LOOPRED: SELECTDIG 11H MOV DX, MY8255_B MOV AL, 06H OUT DX, AL CALL DELAY SELECTDIG 12H MOV DX, MY8255_B MOV AL, 6DH OUT DX, AL CALL
19、 DELAY MOV DX, MY8255_A IN AL, DX CMP AL, 00000100B JNZ REDSTART INC CX LOOP LOOPRED REDSTART: POP DX POP AX RET RED ENDP ENDNUM PROC NEAR MOV BUFFER[0], AL MO
20、V BUFFER[1], AH MOV BUFFER[2], BL MOV BUFFER[3], CL MOV BUFFER[4], CH PUSH DX MOV CX, 0 ;+ LOOPSHOW: SELECTDIG BUFFER[3] MOV AL, BUFFER[0] MOV DX, MY8255_B OUT DX, AL CALL DELAY SELECT
21、DIG BUFFER[4] MOV AL,BUFFER[1] MOV DX, MY8255_B OUT DX, AL CALL DELAY MOV DX, MY8255_A IN AL, DX CMP AL, BUFFER[2] JNZ LOOPSTART INC CX LOOP LOOPSHOW LOOPSTART: POP DX call bigd
22、elay call bigdelay call bigdelay call bigdelay call bigdelay call bigdelay RET ENDNUM ENDP ;慢刹车 DOWNSPEED PROC NEAR PUSH DX PUSH AX DOWNFIRST: SELECTDIG BUFFER[0] ;显示单独的个位倒序循环 MOV AL, [SI] ;个位 MOV DX, MY8255
23、B OUT DX, AL CALL BIGDELAY SELECTDIG BUFFER[1] ;十位 MOV AL, [DI] MOV DX, MY8255_B OUT DX, AL CALL BIGDELAY CMP SI, 00H JZ DOWNSECOND DEC SI JMP DOWNFIRST DOWNSECOND: MOV CX, DI ;十位 DEC
24、DI DOWNDECADE: PUSH CX MOV SI, OFFSET LED + 9 ;个位 MOV CX, 10 DOWNUNIT: SELECTDIG BUFFER[0] MOV AL, [SI] MOV DX, MY8255_B OUT DX, AL CALL BIGDELAY SELECTDIG BUFFER[1] MOV AL, [DI] MOV DX, MY8255_B OUT DX, AL CALL BIGDELAY DEC SI LOOP
25、 DOWNUNIT POP CX DEC DI LOOP DOWNDECADE POP AX POP BX RETURN: RET DOWNSPEED ENDP ;刹车 QDOWNSPEED PROC NEAR PUSH DX PUSH AX QDOWNFIRST: SELECTDIG BUFFER[0] ;显示单独的个位倒序循环 MOV AL, [SI] ;个位 MOV DX, MY8255_B OUT DX, AL
26、 CALL DELAY SELECTDIG BUFFER[1] ;十位 MOV AL, [DI] MOV DX, MY8255_B OUT DX, AL CALL DELAY CMP SI, 00H JZ QDOWNSECOND DEC SI JMP QDOWNFIRST QDOWNSECOND: MOV CX, DI ;十位 DEC DI QDOWNDECADE: PUSH
27、 CX MOV SI, OFFSET LED + 9 ;个位 MOV CX, 10 QDOWNUNIT: SELECTDIG BUFFER[0] MOV AL, [SI] MOV DX, MY8255_B OUT DX, AL CALL DELAY SELECTDIG BUFFER[1] MOV AL, [DI] MOV DX, MY8255_B OUT DX, AL CALL DELAY DEC SI LOOP QDOWNUNIT POP CX D
28、EC DI LOOP QDOWNDECADE POP AX POP BX QRETURN: RET QDOWNSPEED ENDP URGENCY PROC NEAR PUSH AX PUSH DX SELECTDIG 01H MOV AL, 3FH MOV DX, MY8255_B OUT DX, AL SELECTDIG 02H MOV AL, 3FH MOV DX, MY8255_B OUT DX, AL POP DX POP AX RET URGEN
29、CY ENDP START: MOV AX, DATA MOV DS, AX mov ax, stack mov ss, ax MOV DX, MY8255_MODE ;send control word MOV AL, 90H ;10010000b OUT DX, AL LOOP1: MOV DX, MY8255_A ;read fro
30、m a IN AL, DX MOV BL,AL CMP BL, 11111110B ;judge pa0 JZ JUST_GREEN CMP BL, 11111101B JZ JUST_YELLOW CMP BL, 11111011B JZ JUST_RED CMP BL, 0F5H JZ SEC_UP_
31、S1 CMP BL, 0EDH JZ SEC_UP_F1 CMP BL, 0F6H JZ FIR_UP_S1 CMP BL, 0EEH JZ FIR_UP_F1 CMP BL,0F3H JZ THIRD_UP_S1 CMP BL, 0EBH JZ THIRD_UP_F1 CMP BL, 0DEH JZ FIR_DOWN_S1 CM
32、P BL, 0BEH JZ FIR_DOWN_F1 CMP BL, 0DDH JZ SEC_DOWN_S1 CMP BL, 0BDH JZ SEC_DOWN_F1 CMP BL, 0DBH JZ THIRD_DOWN_S1 CMP BL, 0BBH JZ THIRD_DOWN_F1 cmp bl, 00h jz byebye1
33、 CALL URGENCY JMP LOOP1 byebye1: jmp byebye JUST_GREEN: CALL GREEN JMP LOOP1 JUST_YELLOW: CALL YELLOW JMP LOOP1 JUST_RED: CALL RED JMP LOOP1 SEC_UP_S1: JMP SEC_UP_S SEC_UP_F1:
34、JMP SEC_UP_F FIR_UP_S1: JMP FIR_UP_S FIR_UP_F1: JMP FIR_UP_F THIRD_UP_S1: JMP THIRD_UP_S THIRD_UP_F1: JMP THIRD_UP_F FIR_DOWN_F1: JMP FIR_DOWN_F FIR_DOWN_S1: JMP FIR_DOWN_S SEC_DOWN_F1: JMP SEC_DOWN_F SEC_DOWN_S1:
35、 JMP SEC_DOWN_S THIRD_DOWN_F1: JMP THIRD_DOWN_F THIRD_DOWN_S1: JMP THIRD_DOWN_S FIR_UP_S: MOV SI, 5 MOV DI, 0 MOV CX , 5 MOV AH, 41H MOV AL, 42H CALL SHALFCOUNT MOV CX, 2 MOV
36、SI, OFFSET LED + 1 MOV AH, 5BH MOV AL , 6DH MOV BH, 42H MOV BL, 41H MOV BUFFER[0], AH MOV BUFFER[1], AL MOV BUFFER[2], BH MOV BUFFER[3], BL LOOPDECADE1: PUSH CX MOV CX,
37、 10 MOV DI, OFFSET LED LOOPUNIT1: SELECTDIG BUFFER[3] MOV AL, [DI] MOV DX, MY8255_B MOV BL, AL OUT DX, AL INC DI CALL BIGDELAY SELECTDIG BUFFER[2] MOV AL, [SI] MOV DX, MY8255_B OUT D
38、X, AL CALL BIGDELAY CMP BL, BUFFER[1] JZ CMPDECADE1 LOOPBACK1: LOOP LOOPUNIT1 POP CX INC SI LOOP LOOPDECADE1 CMPDECADE1: CMP AL, BUFFER[0] JZ EXIT1 JNZ LOOPBACK1 EXIT1: MOV AH, 5BH
39、 MOV AL, 6DH MOV BL, 0F6H MOV CH, 42H MOV CL, 41H CALL ENDNUM JMP LOOP1 FIR_UP_F: MOV SI, 5 MOV DI, 0 MOV CX , 5 MOV AH, 41H MOV AL, 42H CALL QHALFCOUNT
40、 MOV CX, 2 MOV SI, OFFSET LED + 1 MOV AH, 5BH MOV AL , 6DH MOV BH, 42H MOV BL, 41H MOV BUFFER[0], AH MOV BUFFER[1], AL MOV BUFFER[2], BH MOV BUFFER[3], BL LOOPDECA
41、DE2: PUSH CX MOV CX, 10 MOV DI, OFFSET LED LOOPUNIT2: SELECTDIG BUFFER[3] MOV AL, [DI] MOV DX, MY8255_B MOV BL, AL OUT DX, AL INC DI CALL DELAY SELECTDIG BUFFER[2] MOV AL, [SI]
42、 MOV DX, MY8255_B OUT DX, AL CALL DELAY CMP BL, BUFFER[1] JZ CMPDECADE2 LOOPBACK2: LOOP LOOPUNIT2 POP CX INC SI LOOP LOOPDECADE2 CMPDECADE2: CMP AL, BUFFER[0] JZ EXIT2 JNZ LOOPBACK2 EXI
43、T2: MOV AH, 5BH MOV AL, 6DH MOV BL, 0EEH MOV CH, 42H MOV CL, 41H CALL ENDNUM JMP LOOP1 SEC_UP_S: MOV SI, 6 MOV DI, 2 MOV CX , 4 MOV AH, 21H MOV AL
44、 22H CALL SHALFCOUNT MOV CX, 2 MOV SI, OFFSET LED + 3 MOV AH, 6DH MOV AL , 3FH MOV BH, 22H MOV BL, 21H CALL SLOWSPEED MOV AH, 6DH MOV AL, 3FH MOV BL, 0F5H
45、 MOV CH, 22H MOV CL, 21H CALL ENDNUM JMP LOOP1 SEC_UP_F: MOV SI, 6 MOV DI, 2 MOV CX , 4 MOV AH, 21H MOV AL, 22H CALL QHALFCOUNT MOV CX, 2 MOV SI, OFFSET LED + 3
46、 MOV AH, 6DH MOV AL , 3FH MOV BH, 22H MOV BL, 21H CALL QUICKSPEED MOV AH, 6DH MOV AL, 3FH MOV BL, 0EDH MOV CH, 22H MOV CL, 21H CALL ENDNUM JMP LOOP1 TH
47、IRD_UP_S: MOV SI, 1 MOV DI, 5 MOV CX , 9 MOV AH, 11H MOV AL, 12H CALL SHALFCOUNT MOV CX, 3 MOV SI, OFFSET LED + 6 MOV AH, 6FH MOV AL , 3FH MOV BH, 12H MOV BL
48、 11H CALL SLOWSPEED MOV AH, 6FH MOV AL, 3FH MOV BL, 0F3H MOV CH, 12H MOV CL, 11H CALL ENDNUM JMP LOOP1 THIRD_UP_F: MOV SI, 1 MOV DI, 5 MOV CX , 9 MOV AH,
49、11H MOV AL, 12H CALL QHALFCOUNT MOV CX, 3 MOV SI, OFFSET LED + 6 MOV AH, 6FH MOV AL , 3FH MOV BH, 12H MOV BL, 11H CALL QUICKSPEED MOV AH, 6FH MOV AL, 3FH
50、 MOV BL, 0EBH MOV CH, 12H MOV CL, 11H CALL ENDNUM JMP LOOP1 FIR_DOWN_F: MOV BUFFER[0], 41H MOV BUFFER[1], 42H MOV SI, OFFSET LED + 5 MOV DI, OFFSET LED + 2 CALL QDOWNSPEED MOV






