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

📄 000123.txt

📁 微机原理及接口技术课程设计交通灯程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
		ret		
start_traffic2:
		PUSH   DPH              ;保存现场
        PUSH   DPL
		PUSH   acc	
		mov dptr,#p8255c
	    mov	a,#10010110b		;东西红,南北绿
		movx	@dptr,a
		POP    acc             ;恢复现场
        POP    DPL
        POP    DPH
		ret
;读取键盘子程序


PEEK:   PUSH   DPH              ;保存现场
        PUSH   DPL
		PUSH   b
		MOV    DPTR,#Z8279
        MOVX   A,@DPTR          ;读8279状态
        ANL	A,#0FH
        JNZ    PEEK1          ;判断是否有键输入
        MOV    A,#0FFH            ;置标志(无键输入)
        SJMP   PEEKEND
PEEK1:  MOV    A,#40H        ;读 FIFO RAM 命令
        MOVX   @DPTR,A
        MOV    DPTR,#D8279
        MOVX   A,@DPTR          ;读键
		MOV	B,A
        MOV 	A,#0C2H
  KK:	MOV 	DPTR,#Z8279
        MOVX	A,@DPTR
        ANL 	A,#80H
	JNZ      KK
	MOV 	A,B	
PEEKEND:
		POP   b           ;恢复现场
        POP    DPL
        POP    DPH
        RET

INIT8279:                       ;8279初始化子程序
        PUSH   DPH              ;保存现场
        PUSH   DPL
        PUSH   ACC
        MOV    DPTR ,#Z8279
        MOV    A,#LEDMOD        ;置8279工作方式
        MOVX   @DPTR,A
        MOV    A,#LEDFEQ        ;置键盘扫描速率
        MOVX   @DPTR,A
        MOV    A,#LEDCLS        ;清除 LED 显示
        MOVX   @DPTR,A
        POP    ACC              ;恢复现场
        POP    DPL
        POP    DPH
        RET

;显示时间的子程序
;输入:A,输出:B,R1为进来的时间数       
disptime:
		push	dph
		push	dpl
		push	acc
		
		mov		dptr,#z8279
		mov		a,#90h
		movx	@dptr,a
		MOV     A,R1
		mov	b,#10				;显示秒低位
		div	ab
		lcall disp
		mov b,#10				;显示秒高位
		div ab
		lcall disp
		
        pop		acc
        pop		dpl
        pop		dph
        RET


;   DISP子程序
;输入: ACC 要显示的字符ASCII码,B为进入显示的字符ASCII码
DISP:    PUSH   DPH             ;保存现场
         PUSH   DPL
         PUSH	ACC
         mov	a,b
         MOV    DPTR,#LED       ;置显示常数表起始位置
         MOVC   A,@A+DPTR       ;查表
         MOV    DPTR,#D8279
         MOVX   @DPTR,A         ;显示数据

 	 	 POP    ACC
         POP    DPL
         POP    DPH
         RET 
        
DELAY:                          ;延时子程序
        PUSH   0               ;保存现场
        PUSH   1
        MOV    0,#0H
DELAY1: MOV    1,#0H
        DJNZ   1,$
        DJNZ   0,DELAY1	;延时0.2秒左右
        POP    1               ;恢复现场
        POP    0
        RET 
end
        POP    DPH
        RET

INIT8279:                       ;8279初始化子程序
        PUSH   DPH              ;保存现场
        PUSH   DPL
        PUSH   ACC
        MOV    DPTR ,#Z8279
        MOV    A,#LEDMOD        ;置8279工作方式
        MOVX   @DPTR,A
        MOV    A,#LEDFEQ        ;置键盘扫描速率
        MOVX   @DPTR,A
        MOV    A,#LEDCLS        ;清除 LED 显示
        MOVX   @DPTR,A
        POP    ACC              ;恢复现场
        POP    DPL
        POP    DPH
        RET

       
disptime:
		push	dph
		push	dpl
		push	acc
		
		mov		dptr,#z8279
		mov		a,#90h
		movx	@dptr,a
		mov		a,r1
		mov 	b,#10
		div		ab
		lcall 	disp
		mov		b,#10
		div		ab
		lcall	disp
        pop		acc
        pop		dpl
        pop		dph
        RET


;   DISP子程序
;输入: ACC 要显示的字符ASCII码
DISP:    PUSH   DPH             ;保存现场
         PUSH   DPL
         PUSH	ACC
         
         mov	a,b
         MOV    DPTR,#LED       ;置显示常数表起始位置
         MOVC   A,@A+DPTR       ;查表
         MOV    DPTR,#D8279
         MOVX   @DPTR,A         ;显示数据

 	 	 POP    ACC
         POP    DPL
         POP    DPH
         RET 
        
DELAY:                          ;延时子程序
        PUSH   0               ;保存现场
        PUSH   1
        MOV    0,#0H
DELAY1: MOV    1,#0b3H
        DJNZ   1,$
        DJNZ   0,DELAY1	;延时100.02ms秒
        POP    1               ;恢复现场
        POP    0
        RET 
end
交通灯控制
路口分主干和支干道,主干道的绿灯时间(为25秒)长红灯时间短(为20秒),支干道的红灯时间

长(为30秒)绿灯时间短(为15秒),黄灯时间相等(为5秒)!
用P1口控制红绿灯,用P0和P2显示时间!
程序还没有优化,还望各位老师多多指点!
下面为汇编程序:

      ORG    0000H
      LJMP   MAIN

      ORG    0003H
      LJMP   INTT0

      ORG    0013H
      LJMP   INTT1

      ORG    001BH
      LJMP   TT1

      ORG    0100H
TT1:  MOV    TH1,#0D8H                ;定时器1,定时10us
      MOV    TL1,#0F0H
      DJNZ   R6,EXIT
      MOV    R6,#100                  ;定时器定时100次
      MOV    R1,#0FFH
EXIT: RETI

INTT0:MOV    P1,#0BEH                  ;外部中断0,
      JB     P3.4,$
      RETI

INTT1:MOV    P1,#0BBH                  ;外部中断1,
      JB     P3.4,$
      RETI

      ORG    1000H
MAIN: MOV    R6,#100                  ;主程序;
      MOV    R1,#00H
      MOV    TMOD,#10H                ;初始化
      MOV    TH1,#0D8H
      MOV    TL1,#0F0H
      MOV    IE,#8DH
      MOV    20H,#25
      MOV    21H,#5
      MOV    22H,#15
      MOV    23H,#30
      MOV    24H,#20
      SETB   TR1

ST1:  MOV    P1,#0BBH                 ;第一个状态,主干道亮绿灯、支干道亮红灯;
      CJNE   R1,#0FFH,TZ1
      MOV    R1,#00H
      DEC    20H
      DEC    23H
TZ1:  MOV    R2,20H
      MOV    R3,23H
      LCALL  DISP                    ;调用显示子程序。

      MOV    A,20H
      CJNE   A,#00H,ST1
      MOV    20H,#25

ST2:  MOV    P1,#0BDH                ;第二个状态,主干道亮黄灯、支干道亮红灯;
      CJNE   R1,#0FFH,TZ2
      MOV    R1,#00H
      DEC    21H
      DEC    23H
TZ2:  MOV    R2,21H
      MOV    R3,23H
      LCALL  DISP                    ;调用显示子程序。
      MOV    A,21H
      CJNE   A,#00H,ST2
      MOV    21H,#05
      MOV    23H,#30

ST3:  MOV    P1,#0DEH                ;第三个状态,主干道亮红灯、支干道亮绿灯;
      CJNE   R1,#0FFH,TZ3
      MOV    R1,#00H
      DEC    24H
      DEC    22H
TZ3:  MOV    R2,24H
      MOV    R3,22H
      LCALL  DISP                    ;调用显示子程序。
      MOV    A,22H
      CJNE   A,#00H,ST3
      MOV    22H,#15

ST4:  MOV    P1,#0EEH                ;第四个状态,主干道亮红灯、支干道亮黄灯;
      CJNE   R1,#0FFH,TZ4
      MOV    R1,#00H
      DEC    24H
      DEC    21H
TZ4:  MOV    R2,24H
      MOV    R3,21H
      LCALL  DISP                    ;调用显示子程序。
      MOV    A,21H
      CJNE   A,#00H,ST4
      MOV    21H,#05
      MOV    24H,#20
      LJMP   ST1                     ;跳转到第一个状态。

DISP: MOV    A,R2                    ;显示子程序。
      MOV    B,#10
      DIV    AB
      MOV    60H,A
      MOV    61H,B

      MOV    A,R3
      MOV    B,#10
      DIV    AB
      MOV    62H,A
      MOV    63H,B

      MOV    40H,#04H
      MOV    R5,#0FEH
      MOV    R0,#60H
LLP:  MOV    A,@R0
      MOV    DPTR,#TABLE
      MOVC   A,@A+DPTR
      MOV    P0,A
      MOV    A,R5
      MOV    P2,A
      RL     A
      MOV    R5,A
      INC    R0
      LCALL  DELAY1
      DJNZ   40H,LLP
      RET

DELAY1:                              ;延时子程序
      MOV    R4,#1
DL2:  MOV    R7,#1
      DJNZ   R7,$
      DJNZ   R4,DL2
      RET

TABLEB     3FH,06H,5BH,4FH,66H
      DB     6DH,7DH,07H,7FH,6FH

      END
8255的交通灯

[code]
CODE SEGMENT
ASSUME CS:CODE
IOCONPT EQU 0073H
IOAPT        EQU 0070H
IOBPT        EQU 0071H
IOCPT        EQU 0072H
IOBDATA EQU 0500H
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
DATA1        EQU 0640H
START:        JMP IOLED
IOLED:        CALL FORMAT
        CALL LEDDISP
        MOV AX,0H
        MOV DS,AX
        MOV AL,82H
        MOV DX,IOCONPT
        OUT DX,AL
        MOV DX,IOBPT
        IN AL,DX
        MOV BYTE PTR DS:[0501H],AL
        MOV DX,IOCONPT
        MOV AL,80H        ;置8255控制字80H,使各端口均为输出口,且工作于方式0
        OUT DX,AL
        MOV DX,IOBPT
        MOV AL,DS:[0501H]
        OR AL,0F0H        ;置黄灯全灭
        OUT DX,AL
        MOV DX,IOCPT        
        MOV AL,0FH        ;置红灯全亮且绿灯全灭,0FH=00001111B 即PC4-PC7为0,PC0-PC3为1
        OUT DX,AL
        CALL DELAY1
IOLED0: MOV AL,01011010B ;点亮1-3路口绿灯,即PC0、PC2置0所以1-3路口绿灯亮,PC1,PC3置1所以2-4路口绿灯灭,同理1-3路口红灯灭,2-4路口红灯亮
        MOV DX,IOCPT
        OUT DX,AL
        CALL DELAY1
        CALL DELAY1
        OR AL,0FH        ;熄灭1-3路口绿灯
        OUT DX,AL
        MOV CX,8H
IOLED1: MOV DX,IOBPT        ;1-3路口黄灯闪烁8次
        MOV AL,DS:[0501H]
        AND AL,10101111B
        OUT DX,AL
        CALL DELAY2
        OR AL,01010000B
        OUT DX,AL
        CALL DELAY2
        LOOP IOLED1        
        MOV DX,IOCPT        
        MOV AL,0FH        ;红灯全亮,绿灯全灭
        OUT DX,AL
        CALL DELAY2
        MOV AL,01011010B        ;点亮2-4路口绿灯,即PC1、PC3置0所以2-4路口绿灯亮,PC0、PC2置1所以1-3路口绿灯灭,同理1-3路口红灯亮,2-4路口红灯灭
        OUT DX,AL
        CALL DELAY1
        CALL DELAY1
        OR AL,0FH        ;熄灭2-4路口绿灯
        OUT DX,AL
        MOV CX,8H
IOLED2: MOV DX,IOBPT        ;2-4路口黄灯闪烁8次
        MOV AL,DS:[0501H]
        AND AL,01011111B
        OUT DX,AL
        CALL DELAY2
        OR AL,10100000B
        OUT DX,AL
        CALL DELAY2
        LOOP IOLED2
        MOV DX,IOCPT
        MOV AL,0F0H
        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
LEDDISP:MOV AL,90H
        MOV DX,CONTPORT
        OUT DX,AL
        MOV BYTE PTR DS:[0600H],00
LED1:        CMP BYTE PTR DS:[0600H],07H
        JA  LED2
        MOV BL,DS:[0600H]
        MOV BH,0H
        MOV AL,CS:[BX+DATA1]
        MOV DX,DATAPORT
        OUT DX,AL
        ADD BYTE PTR DS:[0600H],01H
        JNZ LED1
LED2:        RET
FORMAT: MOV BX,0
        MOV WORD PTR DS:[BX+0640H],405BH
        ADD BX,2
        MOV WORD PTR DS:[BX+0640H],4040H
        ADD BX,2
        MOV WORD PTR DS:[BX+0640H],6D6DH
        ADD BX,2
        MOV WORD PTR DS:[BX+0640H],7F5BH
        RET
CODE ENDS
END  START

⌨️ 快捷键说明

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