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

📄 traficlcd.asm

📁 是我在电子竞赛期间写的一些单片机汇编程序
💻 ASM
字号:
;-------------------------------------交通灯程序-----------------------------------
  	ORG 0000H
	AJMP MAIN
	ORG 000BH
	AJMP PIPO
	ORG   0030H
MAIN:	MOV   SP,#5FH		;设置堆栈指针为30H
	MOV 40H,#00H		;要求的计数溢出次数,即循环次数	
	MOV 41H,#25H		;存倒计时数
	MOV TMOD,#01H		;设置定时器0工作方式1
	MOV TH0,#0DCH		;定初值
	MOV TL0,#00H		;定时10MS						
	SETB EA			;开总中断,(总闸)
	SETB ET0			;允许定时中断
	SETB TR0			;开始计时
	MOV 42H,#00H		;用此地址区来存显示的秒数
	MOV R6,#00H			;控制闪烁与不闪烁
	MOV 44H,#00H	
  	ACALL INIT
  	ACALL FIRST
  	MOV   DPTR,#TABLE1
  	ACALL DISPLAY
  	ACALL SECOND
  	MOV   DPTR,#TABLE2
  	ACALL DISPLAY
XX:	ACALL THIRD
  	MOV A,41H
  	SWAP A
  	ANL A,#0FH
 	ACALL TABLE
  	ACALL WRDATA
  	LCALL DELAY
  	MOV A,41H
  	ANL A,#0FH
  	ACALL TABLE
  	ACALL WRDATA
  	LCALL DELAY
  	AJMP   XX
INIT:
  	MOV A,#01H
	ACALL WRCON
  	MOV   A,#38H
  	ACALL WRCON
  	MOV A,#0CH
  	ACALL WRCON
  	MOV   A,#01H
  	ACALL WRCON
  	MOV   A,#06H
  	ACALL WRCON
  	MOV   A,#0CH
  	ACALL WRCON
  	RET
DISPLAY:
  	MOV   R1,#00H
NEXT:
  	MOV   A, R1
  	MOVC  A, @A+DPTR
  	CJNE  A, #23H,DSP
  	RET
DSP:
  	ACALL  WRDATA
  	INC    R1
  	AJMP   NEXT
FIRST:
  	MOV    A,#10000000B
  	ACALL  WRCON
  	RET
SECOND:
  	MOV    A,#11000000B
  	ACALL  WRCON
  	RET
THIRD:
  	MOV    A,#11001000B
  	ACALL  WRCON
  	RET
WRCON:
  	ACALL  BUSY
  	MOV    P3,#11110001B
  	NOP
  	SETB P3.3
  	MOV P0,A
  	NOP
  	CLR    P3.3
  	RET
WRDATA:
  	ACALL  BUSY
  	MOV   P3,#11110011B
  	NOP
  	SETB   P3.3
  	MOV    P0,A
  	NOP
  	CLR    P3.3
RET

BUSY:
  	PUSH   ACC
WAIT:
 	MOV   P3,#11110101B
  	NOP
  	SETB   P3.3
  	MOV    A,P0
  	JB     ACC.7,WAIT
  	POP    ACC
  	RET
DELAY:
  	MOV     R6,#80H
D1:
 	MOV     R7,#80H
  	DJNZ    R7,$
  	DJNZ    R6,D1
  	RET
TABLE1:
       DB  "Triffic program:"
       DB  "#"

TABLE2:
       DB  "time is:"
       DB  "#"

TABLE:  INC     A	         
        MOVC    A,   @A+PC    
        RET
DB     "0123456789"	

PIPO: INC R6			;1秒闪烁二次
	CJNE R6,#32H,NEXT1	
	MOV R6,#00H
	INC 44H
NEXT1:PUSH PSW			;10MS已到
	PUSH ACC
	MOV TH0,#0DCH		;重置初值 
	MOV TL0,#00H
	INC 40H      
	MOV A,40H
	CJNE A,#64H,RET0
	MOV 40H,#00H
	MOV A,41H
	DEC A
KK:	CJNE A,#1FH,KK0		;到1F时减6
	SUBB A,#06H
	AJMP KK1
KK0:	CJNE A,#0FH,KK1		;到0F时减6
	SUBB A,#06H
KK1:	MOV 41H,A
KK2:	CJNE A,#0FFH,RET0
	MOV R7,42H
AA0:	CJNE R7,#00H,AA1		;控制25S到5S到15S到5S的倒计时循环显示
	MOV 41H,#05H
	INC 42H
AA1:	CJNE R7,#01H,AA2
	MOV 41H,#15H
	INC 42H
AA2:	CJNE R7,#02H,AA3
	MOV 41H,#05H
	INC 42H
AA3: 	CJNE R7,#03H,RET0
	MOV 41H,#25H	
	MOV 42H,#00H
RET0: POP ACC
	POP PSW
	RETI
    

END



⌨️ 快捷键说明

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