⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 程序.txt

📁 微机原理的实验报告 包括实验程序 自己做的 交通灯
💻 TXT
字号:
			 CODE SEGMENT
  	    	 ASSUME CS:CODE
         =FF2B	 IOCONPT EQU 0FF2BH	  ;定义8255各寄存器地址
         =FF28	 IOAPT   EQU 0FF28H
         =FF29	 IOBPT   EQU 0FF29H
             =FF2A	 IOCPT   EQU 0FF2AH
     	ORG 12E0H	  		;定义起始地址
	 START:  MOV AL,82H
	 MOV DX,IOCONPT  ;写8255控制字,三个口均工作于方式0
	OUT DX,AL	  	;B口为输入,A及C口输出
	MOV DX,IOBPT	  ;读PB口数据存0601H单元
	IN AL,DX
	MOV BYTE PTR DS:[0601H],AL
	MOV DX,IOCONPT 	;写方式控制字均为输出
	MOV AL,80H
	OUT DX,AL
	MOV DX,IOBPT	  ;置PB口高四位,熄黄灯
	MOV AL,DS:[0601H]
	OR AL,0F0H
	OUT DX,AL
	MOV DX,IOCPT
	MOV AL,0F0H	  ;使PC0~PC3为0,PC4~PC7为1
	OUT DX,AL	  	;即点亮红灯,熄灭绿灯
	CALL DELAY1	  ;延时

IOLED0: MOV AL,10100101B 	;使1,3路口绿灯亮,同时2,4路口红灯亮
	MOV DX,IOCPT
	OUT DX,AL
	CALL DELAY1	  ;延时
	CALL DELAY1
	OR AL,0F0H	  	;灭1,3路口绿灯
	OUT DX,AL
	MOV CX,8H	  	;置计数器值为8

IOLED1: MOV DX,IOBPT
	MOV AL,DS:[0601H]
	AND AL,10101111B 	;点亮1,3路口黄灯
	OUT DX,AL
	CALL DELAY2	  ;延时较短时间
	OR AL,01010000B  ;灭1,3路口黄灯
	OUT DX,AL
	CALL DELAY2	  ;延时较短时间
    LOOP IOLED1	  ;黄灯闪烁8次
	MOV DX,IOCPT
	    MOV AL,0F0H	  ;点亮4个红灯,灭4个绿灯
    OUT DX,AL
	CALL DELAY2	  ;延时
    MOV AL,01011010B  ;使1,3路口绿灯亮,同时2,4	路口红灯亮
    OUT DX,AL
	CALL DELAY1	  ;延时
	CALL DELAY1
	    OR   AL,0F0H	  ;灭2,4路口绿灯
   OUT DX,AL
	MOV CX,8H	  	;置计数初值

IOLED2: MOV DX,IOBPT
	MOV AL,DS:[0601H]
    AND AL,01011111B   ;点亮2,4路口黄灯
    OUT DX,AL
	CALL DELAY2	   ;延时
	    OR   AL,10100000B  ;灭2,4路口黄灯
	    OUT DX,AL
   CALL DELAY2	  ;延时
  LOOP IOLED2	  ;黄灯闪烁8次
  MOV DX,IOCPT
        MOV AL,0F0H	  ;点亮4个红灯,灭4个绿灯
        OUT DX,AL
        CALL DELAY2   ;延时
        JMP IOLED0	     ;循环

DELAY1: PUSH AX
         PUSH CX	       ;延时子程序
  	     MOV CX,0030H

DELY2:  CALL DELAY2
         LOOP DELY2
         POP CX
       POP AX
         RET

DELAY2: PUSH CX
      MOV CX,8000H

DELA1:  LOOP DELA1
       POP CX
         RET

CODE ENDS
END  START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -