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

📄 main.asm

📁 2407的一些源代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
		LACC	R_CON
		SACL	DATA
		CALL	WRITE 
		CALL	ACK
		CALL	READ
		CALL	STOP
		RET 
;****************READ END**********************
;*********************************************
;****************I2C时序程序******************
;*********************************************
;***************开始子程序*******************		
START   
		LDP		#PBDATDIR>>7
		LACC	PBDATDIR
		SPLK	#0C0C0H,PBDATDIR
		CALL	DELAY3
		LDP		#PBDATDIR>>7
		SPLK	#0C040H,PBDATDIR
		NOP
		CALL	DELAY3 
		SPLK	#0C000H,PBDATDIR
		CALL	DELAY3 
        RET
;***************写数据子程序*****************       
WRITE
		CALL	DELAY3
		LDP		#DATA
		LACC	DATA,1
		SACL	DATA
		BIT		DATA,BIT8
		BCND	SET,TC
		LDP		#PBDATDIR>>7 
		LACC	PBDATDIR
		AND		#0F070H
		SACL	PBDATDIR 
		NOP
		B		CONTIUE
SET
		LDP		#PBDATDIR>>7 
		LACC	PBDATDIR
		OR		#0F080H
		SACL	PBDATDIR
		NOP
CONTIUE
		CALL	DELAY3
		LDP		#PBDATDIR>>7 
		LACC	PBDATDIR
		OR		#0F040H
		SACL	PBDATDIR
		NOP 
		CALL	DELAY3
		CALL	DELAY3 
		LDP		#PBDATDIR>>7 
		LACC	PBDATDIR
		AND		#0F080H
		SACL	PBDATDIR
		NOP
		LDP		#COUNT
		LACC	COUNT
		ADD		#1
		SACL	COUNT
		SUB		#8
		BNZ		WRITE
		LDP		#COUNT
		SPLK	#0,COUNT
	    RET 

;*************应答信号子程序********************		   
ACK		
		CALL	DELAY3
		LDP		#PBDATDIR>>7
		SPLK	#04000H,PBDATDIR
		NOP
		NOP
		CALL	DELAY3
		LACC	PBDATDIR
		NOP 
ACK_C	
		BIT		PBDATDIR,BIT7
		BCND	ACK_C,TC
		SPLK	#04040H,PBDATDIR
		CALL	DELAY3
		
		SPLK	#04000H,PBDATDIR
		NOP  
		CALL    DELAY3
		SPLK	#0C000H,PBDATDIR
		RET       
;******************结束子程序*******************
STOP    
		
		CALL	DELAY3
		LDP		#PBDATDIR>>7
		SPLK	#0C000H,PBDATDIR
		CALL	DELAY3 
		SPLK	#0C040H,PBDATDIR
		CALL	DELAY3
		SPLK	#0C0C0H,PBDATDIR
		CALL	DELAY3  
		SPLK	#00000H,PBDATDIR
		RET	
;*******************读数据子程序*****************
READ	
		LDP		#PBDATDIR>>7
		LACC	PBDATDIR
		SPLK	#4000H,PBDATDIR
READ_L		
		CALL	DELAY3
		CALL	DELAY3 
		SPLK	#04040H,PBDATDIR
		CALL	DELAY3
		LACC	PBDATDIR
		BIT		PBDATDIR,BIT7
		BCND	R_SET,TC
		LDP		#R_DAT
		LACC	R_DAT
		SFL
		AND		#0FFFEH
		SACL	R_DAT
		B		CON_R
R_SET
		LDP		#R_DAT
		LACC	R_DAT 
		SFL
		OR		#01H
		SACL	R_DAT
CON_R
		LDP		#COUNT
		LACC	COUNT
		ADD		#1
		SACL	COUNT
		SUB		#8
		BZ		READ_END 
		CALL	DELAY3
		LDP		#PBDATDIR>>7
		LACC	PBDATDIR
		SPLK	#4000H,PBDATDIR
		B		READ_L
READ_END
		LDP		#COUNT
		SPLK	#0,COUNT
		CALL	DELAY3
		RET		  
;****************I2C时序子程序结束***************  
DELAY3
		LACC	#050H
D3_LOOP		
		SUB		#1
		BNZ		D3_LOOP
		RET
		   
DELAY2
		LACC	#05800H
D2_LOOP		
		SUB		#1
		BNZ		D2_LOOP
		RET
		
;*************************************************		
;****************显示子程序***********************
;*************************************************
		
		
LCD_SHOW
		LDP		#L_COUNT
		SPLK	#0,L_COUNT
		LDP		#TEMP1
		SPLK	#80H,TEMP1
		CALL	ADD_SET

SHOW_LP
		LDP		#L_COUNT
		LACC	L_COUNT
;		LACC    #20h
		AND     #00FFH  
		ADD     #TABLE1
		TBLR    TEMP1
		CALL	DATA_SET
		LACC	L_COUNT 
		ADD		#1
		SACL	L_COUNT
		SUB		#64
		BCND	SHOW_LP,LT
		RET



LCD_INIT
		CALL	A11               ;送数据,基本功能指令
		CALL	A0                ;清寄存器子程序
		CALL	A2                ;送数据,使显示关
		CALL	A3                ;整体显示
		NOP
		RET
A0
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H       ;送数据到液晶使能显示锁存器
		SPLK	#01H,TEMP		  ;清寄存器,也为待命模式
		OUT		TEMP,04000H       ;送数据到液晶显示寄存器
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H       ;片选,加一时钟信号,使负责液晶数据输入显示的锁存器工作
		CALL	DELAY1
		CALL	DELAY1
		CALL	DELAY1
		RET
A1
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H       ;送数据到液晶使能显示锁存器
		SPLK	#02H,TEMP         ;地址复位
		OUT		TEMP,04000H       ;送数据到液晶显示锁存器
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H       ;送数据到液晶使能显示锁存器
		CALL	DELAY1
		CALL	DELAY1
		CALL	DELAY1
		RET

A2		
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H       ;送数据到液晶使能显示锁存器
		SPLK	#08H,TEMP         ;送数据,显示关(整体显示,游标,游标位置均关)
		OUT		TEMP,04000H       ;送数据到液晶显示寄存器
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H       ;送数据到液晶使能显示锁存器
		CALL	DELAY
		RET
A3
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H        ;送数据到液晶使能显示锁存器
		SPLK	#0cH,TEMP          ;整体显示,字体左右移可通过修改此数据实现
		OUT		TEMP,04000H        ;送数据到液晶显示锁存器
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H        ;送数据到液晶使能显示锁存器
		CALL	DELAY
		RET		
A4
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H        ;送数据到液晶使能显示寄存器
		SPLK	#0EH,TEMP          ;游标显示
		OUT		TEMP,04000H        ;送数据到液晶显示寄存器
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H        
		CALL	DELAY
		RET
A5
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H        
		SPLK	#0FH,TEMP          ;游标位置显示
		OUT		TEMP,04000H
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H
		CALL	DELAY
		RET
A6
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H
		SPLK	#10H,TEMP          ;光标左移
		OUT		TEMP,04000H
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H
		CALL	DELAY
		RET
A7
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H
		SPLK	#14H,TEMP          ;光标右移
		OUT		TEMP,04000H
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H
		CALL	DELAY
		RET
A8
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H
		SPLK	#18H,TEMP          ;整体显示左移
		OUT		TEMP,04000H
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H
		CALL	DELAY
		RET
A9
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H
		SPLK	#02H,TEMP          ;整体显示右移
		OUT		TEMP,04000H
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H
		CALL	DELAY
		RET
A10
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H
		SPLK	#34H,TEMP          ;扩充指令
		OUT		TEMP,04000H
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H
		CALL	DELAY
		RET
A11
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H
		SPLK	#30H,TEMP          ;基本指令
		OUT		TEMP,04000H
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H
		CALL	DELAY
		RET
ADD_SET
		LDP		#TEMP
		SPLK	#0f6H,TEMP
		OUT		TEMP,0C000H
		LACC	TEMP1
		SACL	TEMP               ;DDRAM地址设定
		OUT		TEMP,04000H
		CALL	DELAY
		SPLK	#0f4H,TEMP
		OUT		TEMP,0C000H
		CALL	DELAY 
		RET
DATA_SET
		LDP		#TEMP
		SPLK	#0f7H,TEMP
		OUT		TEMP,0C000H
		LACC	TEMP1
		SACL	TEMP
		OUT		TEMP,04000H
		CALL	DELAY
		SPLK	#0f5H,TEMP
		OUT		TEMP,0C000H
		CALL	DELAY
		RET
;*******************************************
DELAY
		LACC	#0100H
D_LOOP		
		SUB		#1
		BNZ		D_LOOP
		RET
		     
DELAY1
		LACC	#2000H
D1_LOOP		
		SUB		#1
		BNZ		D1_LOOP
		RET	

						
TABLE1
		.WORD 	#0FH		;80
		.WORD 	#0FH		;80
		.WORD 	#0FH		;1
		.WORD 	#0FH		;80
		.WORD 	#20H		;81
		.WORD 	#54H		;2
		.WORD 	#48H		;82
		.WORD 	#46H		;
		.WORD 	#2DH		;83
		.WORD 	#2DH		;
		.WORD 	#32H		;84
		.WORD 	#20H		;
		.WORD 	#0FH		;80
		.WORD 	#0FH		;80
		.WORD 	#0FH		;80
		.WORD 	#0FH		;80

		

		
		.WORD 	#20H		;1
		.WORD 	#20H		;
		.WORD 	#20H		;2
		.WORD 	#20H		;
		.WORD 	#20H		;3
		.WORD 	#20H		;
		.WORD 	#20H		;4
		.WORD 	#20H		;
		.WORD 	#0d0H		;5
		.WORD 	#0c7H		;
		.WORD 	#0c6H		;6
		.WORD 	#0daH		;
		.WORD 	#0d2H		;7
		.WORD 	#0bbH		;
		.WORD 	#020H		;8
		.WORD 	#020H		;
        
		
		
		.WORD 	#020H		;2
		.WORD 	#020H		;
		.WORD 	#030H		;3
		.WORD 	#030H		;
		.WORD 	#03aH		;4
		.WORD 	#030H		;
		.WORD 	#030H		;5
		.WORD 	#03aH		;
		.WORD 	#030H		;6
		.WORD 	#030H		;
		.WORD 	#020H		;7
		.WORD 	#020H		;
		.WORD 	#020H		;8
		.WORD 	#020H		;
		.WORD 	#020H		;1
		.WORD 	#020H		;

		
		.WORD 	#20H		;1
		.WORD 	#20H		;
		.WORD 	#32H		;2
		.WORD 	#30H		;
		.WORD 	#30H		;3
		.WORD 	#36H		;
		.WORD 	#0c4H		;4
		.WORD 	#0eaH		;
		.WORD 	#30H		;5
		.WORD 	#31H		;
		.WORD 	#0d4H		;6
		.WORD 	#0c2H		;
		.WORD 	#30H		;7
		.WORD 	#31H		;
		.WORD 	#0c8H		;8
		.WORD 	#0d5H		;		
		
TABLE2
		.WORD   #00c8h
		.WORD   #00d5h      ;ri
		
        .WORD   #00d2h
		.WORD   #00bbh      ;1
		
		.WORD   #00b6h
		.WORD   #00feh      ;2
		
		.WORD   #00c8h
		.WORD   #00fdh      ;3
		
		.WORD   #00cbh
		.WORD   #00c4h      ;4
		
		.WORD   #00ceh
		.WORD   #00e5h      ;5
		
		.WORD   #00c1h
		.WORD   #00f9h      ;6
			
        ;.END

⌨️ 快捷键说明

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