首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 电脑技能 >

交通灯的黄灯很暗解决办法

2012-06-04 
交通灯的黄灯很暗STACKSEGMENT STACKDB200DUP(0)STACKENDSDATA SEGMENTLIVINGDB NOW IS DAY ,EVERY THING

交通灯的黄灯很暗
STACK SEGMENT STACK
  DB 200 DUP(0)
STACK ENDS
DATA SEGMENT
LIVING DB 'NOW IS DAY ,EVERY THING IS NOMAL!',0AH,0DH,00H
NIGHT DB 'NOW IS NIGHT,TRAFFIC IS NOT BUSY LIKE DAY!',0AH,0DH,00H
VIP DB 'NOW IS VIP TIME!',0AH,0DH,00H
TIME DB 00H,03H,05H,03H
LEDTAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,73H,38H
COUNT DW 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
  MOV AX,DATA
  MOV DS,AX
  PUSH DS
  MOV AX,0000H
  MOV DS,AX
  MOV AX,OFFSET IRQ0
  ADD AX,2000H
  MOV SI,0020H
  MOV [SI],AX
  MOV AX,0000H
  MOV SI,0022H
  MOV [SI],AX
  CLI
  POP DS
  IN AL,21H
  AND AL,0FEH
  OUT 21H,AL  

  PUSH DS
  MOV AX,0000H
  MOV DS,AX
  MOV AX,OFFSET IRQ1
  ADD AX,2000H
  MOV SI,0024H
  MOV [SI],AX
  MOV AX,0000H
  MOV SI,0026H
  MOV [SI],AX
  CLI
  POP DS
  IN AL,21H
  AND AL,0FDH
  OUT 21H,AL 

  PUSH DS
  MOV AX,0000H
  MOV DS,AX
  MOV AX,OFFSET IRQ2
  ADD AX,2000H
  MOV SI,0028H
  MOV [SI],AX
  MOV AX,0000H
  MOV SI,002AH
  MOV [SI],AX
  CLI
  POP DS
  IN AL,21H
  AND AL,0EFH
  OUT 21H,AL 
  

   
  PUSH DS
  MOV AX,0000H
  MOV DS,AX
  MOV AX,OFFSET IRQ7
  ADD AX,2000H
  MOV SI,003CH
  MOV [SI],AX
  MOV AX,0000H
  MOV SI,003EH
  MOV [SI],AX
  CLI
  POP DS
  IN AL,21H
  AND AL,7FH
  OUT 21H,AL
F1: MOV AH,06H
  MOV BX,OFFSET LIVING
  INT 10H  
  MOV AL,80H  
  OUT 63H,AL 
  MOV AL,0B6H  
  OUT 43H,AL
  MOV AX,59500
  OUT 42H,AL
  MOV AL,AH
  OUT 42H,AL
  MOV COUNT,0
  STI
;红绿灯属于8255的B端口控制  
S1: MOV AL,0C3H ;红绿灯显示;11000011中间4个灯亮,其它灭  
  OUT 61H,AL
  CALL DISP
  CMP COUNT,20
  JL S1 ;实现了1s的计时
  MOV COUNT,0
  MOV DI,OFFSET TIME
  MOV AL,[DI+1] 
  CMP AL,00H
  JZ A5 ;绿灯高位即十位为0时跳到A5
  MOV AL,[DI]
  CMP AL,00H
  JZ A6 ;绿灯低位即个位为0时跳到A6
  DEC AL
  MOV [DI],AL
   
A2: MOV AL,[DI+2] ;红灯控制低位为0跳到A3
  CMP AL,00H
  JZ A3
  DEC AL
  MOV [DI+2],AL
  JMP S1
A3: MOV AL,9 ;红灯低位为0时重新置9,在高位不为0时
  MOV [DI+2],AL
  MOV AL,[DI+3]
  DEC AL ;红灯高位减1
  MOV [DI+3],AL
  JMP S1
A5: MOV AL,[DI] ;绿高位为0时跳到A0
  CMP AL,01H
  JZ A0
  DEC AL
  MOV [DI],AL
  JMP A2
A6: MOV AL,9 ;绿灯低位为0时重新置9,在高位不为0时
  MOV [DI],AL
  MOV AL,[DI+1]
  DEC AL
  MOV [DI+1],AL
  JMP A2
A0: MOV AL,05H ;显示5秒的黄灯时间
  MOV [DI],AL
  MOV [DI+2],AL
  JMP S21



S21: MOV AL,0C0H ;黄灯的显示,属于8255的c端口高4位控制;绿灯灭,黄灯亮,红灯亮的状态
  OUT 62H,AL
  CALL DISP
  CMP COUNT,20
  JL S21
  MOV COUNT,0
  MOV DI,OFFSET TIME
  MOV AL,[DI]
  CMP AL,00H
  JZ A7
  DEC AL
  MOV [DI],AL
  JMP S22
A7: MOV AL,3 ;恢复原来的计数
  MOV [DI+1],AL
  MOV AL,0
  MOV [DI],AL
  MOV AL,3
  MOV [DI+3],AL
  MOV AL,5
  MOV [DI+2],AL
  JMP S3
   
S22: MOV AL,0F3H ;红灯亮,黄灯和绿灯都灭的状态
  OUT 61H,AL
  MOVAL,0F0H
  OUT62H,AL
  CALL DISP
  CMP COUNT,20
  JL S22
  MOV COUNT,0
  MOV DI,OFFSET TIME
  MOV AL,[DI]
  CMP AL,00H
  JZ A7
  DEC AL
  MOV [DI],AL
  MOV AL,[DI+2]
  DEC AL
  MOV [DI+2],AL
  JMP S21

S3: MOV AL,3CH ;与s1相反的状态
  OUT 61H,AL
  CALL DISP
  CMP COUNT,20
  JL S3
  MOV COUNT,0
  MOV DI,OFFSET TIME
  MOV AL,[DI+3]
  CMP AL,00H
  JZ A8
  MOV AL,[DI+2]
  CMP AL,00H
  JZ A9
  DEC AL
  MOV [DI+2],AL
A11: MOV AL,[DI]
  CMP AL,00H
  JZ A12
  DEC AL
  MOV [DI],AL  
  JMP S3
A8: MOV AL,[DI+2]
  CMP AL,01H
  JZ A1
  DEC AL
  MOV [DI+2],AL
  JMP A11
A9: MOV AL,9
  MOV [DI+2],AL
  MOV AL,[DI+3]
  DEC AL
  MOV [DI+3],AL
  JMP A11
A12: MOV AL,9
  MOV [DI],AL
  MOV AL,[DI+1]
  DEC AL
  MOV [DI+1],AL
  JMP S3
A1: MOV AL,05H
  MOV [DI+2],AL
  MOV [DI],AL
  JMP S41

S41: MOV AL,30H ;与s22相反的状态
  OUT 62H,AL
  CALL DISP
  CMP COUNT,20
  JL S41
  MOV COUNT,0
MOV DI,OFFSET TIME
  MOV AL,[DI]
  CMP AL,00H
  JZ A10
  DEC AL
  MOV [DI],AL
  MOV AL,[DI+2]
  DEC AL
  MOV [DI+2],AL
  JMP S42
A10: MOV AL,3
  MOV [DI+1],AL
  MOV AL,0
  MOV [DI],AL
  MOV AL,3 
  MOV [DI+3],AL
  MOV AL,5
  MOV [DI+2],AL
  JMP S1

 S42: MOV AL,3FH  
  OUT 61H,AL
  MOVAL,0F0H
  OUT62H,AL
  CALL DISP
  CMP COUNT,20
  JL S42
  MOV COUNT,0
  MOV DI,OFFSET TIME
  MOV AL,[DI+2]
  CMP AL,00H
  JZ A10
  DEC AL
  MOV [DI+2],AL
  MOV [DI],AL
  JMP S41

 IRQ0: ;实现复位的状态
  MOV AL,20H  
  OUT 20H,AL
  MOV DI,OFFSET TIME
  MOV AL,3
  MOV [DI+1],AL
  MOV AL,0
  MOV [DI],AL
  MOV AL,3
  MOV [DI+3],AL
  MOV AL,5
  MOV [DI+2],AL
  JMP F1
  IRET
   
IRQ1: ;实现全红灯的状态
  MOV AL,20H  


  OUT 20H,AL
  MOV AH,06H
  MOV BX,OFFSET VIP
  INT 10H
L7: STI
  MOV DI,OFFSET TIME
  MOV AL,5
  MOV [DI+1],AL
  MOV [DI+3],AL  
  MOV AL,10
  MOV [DI],AL
  MOV [DI+2],AL
  MOV AL,0FH
  OUT 61H,AL
  CALL DISP
  JMP L7
  IRET

IRQ2:
  MOV AL,20H  
  OUT 20H,AL
  MOV AH,06H
  MOV BX,OFFSET NIGHT
  INT 10H
  STI
  MOV DI,OFFSET TIME
  MOV AL,11
  MOV [DI+1],AL
  MOV AL,5
  MOV [DI],AL
  MOV AL,11
  MOV [DI+3],AL
  MOV AL,5
  MOV [DI+2],AL
L3: MOV COUNT,0 
L0: MOV AL,0CCH
  OUT 61H,AL
  CALL DISP
  CMP COUNT,10
  JL L0
  MOV COUNT,0
L1: MOV AL,0FFH
  OUT 61H,AL
  CALL DISP
  CMP COUNT,10
  JL L1
  JMP L3
  IRET
 
IRQ7: INC COUNT  
  MOV AL,20H
  OUT 20H,AL
  IRET

DISP PROC NEAR
  MOV DI,OFFSET TIME
  MOV CL,0FEH
ST1: MOV AL,CL
  TEST AL,10H
  JZ ED
  OUT 62H,AL  
  ROL AL,01H  
  MOV CL,AL
  MOV AL,[DI]
  MOV BX,OFFSET LEDTAL
  XLAT
  OUT 60H,AL  
  CALL DELAY
  INC DI
  JMP ST1
ED: RET  
DISP ENDP
DELAY PROC NEAR
  PUSH CX
  MOV CX,1000
WAIT1: LOOP WAIT1
  POP CX
  RET
DELAY ENDP
CODE ENDS 
  END START 
   
 
[b][/b][b][/b]如何更改?

[解决办法]
有可能是线路的问题,也有可能是程序的问题。。。,。
[解决办法]
我看线路问题居多

热点排行