本帖最后由 GeneralZRZ 于 2014-2-19 22:53 编辑
课程设计“压力测控系统”,已经完成了原理图&汇编源程序。但是在添加过源程序、进行仿真的时候,报出以下错误:
题目&本人的解答如下:
1)题目:
- 题目十九 压力测控系统
- 对压力传感器的信号进行检测。当压力低于30pa时,黄灯闪烁;当压力高于150pa时,红灯闪烁,闪烁周期为1秒。(功能实现☆)(基本功能实现并在数码管显示压力值,格式为P=XXX,★)(前面2功能实现,并可手动设定压力临界值★☆)。
复制代码
2)ISIS原理图:
3)汇编源代码:
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;宏定义
- PI_A EQU 200H
- PI_B EQU PI_A+2H
- PI_C EQU PI_B+2H
- PI_CTRL EQU PI_C+2H
- CT_0 EQU 208H
- CT_1 EQU CT_0+2H
- CT_2 EQU CT_1+2H
- CT_CTRL EQU CT_2+2H
- ADC_ADDR EQU 210H
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- DATA SEGMENT
- BUFF DB ?
- DECADE_UNIT DB ?
- HUNDRED DB ?
- DATA ENDS
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- CODE SEGMENT
-
- ASSUME CS:CODE,DS:DATA
- START:
- MOV AX, CS
- MOV DS, AX
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;初始化CT8253
- MOV DX, CT_CTRL ; 通道0
- MOV AL, 00110110B
- OUT DX, AL
- MOV DX, CT_0
- MOV AX, 15000D
- OUT DX, AL
- MOV AL, AH
- OUT DX, AL
- MOV DX, CT_CTRL ; 通道1
- MOV AL, 01010110B
- OUT DX, AL
- MOV DX, CT_1
- MOV AL, 100D
- OUT DX, AL
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;初始化ADC0808
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;初始化PI8255A
- MOV DX, PI_CTRL
- MOV AL, 10010000B
- OUT DX, AL
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;获取数值,置位,保持……
- AGAIN:
-
- CALL GETDATA
-
- CALL ALARM1
-
- CALL DELAY
- CALL HEX2DEC
-
- CALL ALARM2
- CALL DELAY
-
- JMP AGAIN
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- GETDATA PROC
-
- PUSH AX
- PUSH DX
- PUSHF
- MOV DX, PI_A
- IN AL, DX
- MOV BUFF, AL
- POPF
- POP DX
- POP AX
- RET
- GETDATA ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ALARM1 PROC
- PUSH AX
- PUSH BX
- PUSH DX
- PUSHF
- CMP BUFF, 30D
- JB ALARM_YELLOW
- CMP AL, 150D
- JA ALARM_RED
- MOV DX, PI_C
- IN AL, DX
- OR AL, 0
- OUT DX, AL
- JMP NORMAL
-
- ALARM_RED:
-
- MOV DX, PI_C
- MOV AL, 00001001B ; 给PC4置1,亮红灯
- OUT DX, AL
- CALL DELAY
- JMP NORMAL
-
- ALARM_YELLOW:
-
- MOV DX, PI_C
- MOV AL, 00001011B ; 给PC5置1,亮黄灯
- OUT DX, AL
- CALL DELAY
- JMP NORMAL
- NORMAL:
-
- MOV DX, PI_C
- MOV AL, 00001000B ; PC4归0
- OUT DX, AL
- MOV DX, PI_C
- MOV AL, 00001010B ; PC5归0
- OUT DX, AL
- POPF
- POP DX
- POP BX
- POP AX
- RET
- ALARM1 ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ALARM2 PROC
-
- PUSH AX
- PUSH DX
- PUSHF
- MOV DX, PI_C
- MOV AL, HUNDRED ; 高4位
- OUT DX, AL
- MOV DX, PI_B
- MOV AL, DECADE_UNIT ; 低8位
- OUT DX, AL
- POPF
- POP DX
- POP AX
- RET
- ALARM2 ENDP
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- HEX2DEC PROC
- PUSH AX
- PUSH CX
- PUSHF
-
- MOV AL, BUFF
- MOV CL, 64H
- DIV CL
- MOV HUNDRED, AL
- MOV DECADE_UNIT, AH
- POPF
- POP CX
- POP AX
- RET
- HEX2DEC ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- DELAY PROC
-
- PUSH CX
- PUSHF
- MOV CX, 2801
- NEXTtiME:
-
- LOOP NEXTTIME
- POPF
- POP CX
- DELAY ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- CODE ENDS
- END START
复制代码
4)添加过source file之后的仿真结果:
请各位大神帮助解答
0
|
6个回答
|
|
|