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

📄 lcda.asm

📁 5402DSP程序设计语言
💻 ASM
字号:
;*****************************************************
; LCD main program : lcd.asm
		.include  MMRegs_sdt.h 
 		.ref ms_delay ,us_delay ,fill_chinese_word; ,gdram_disp
 		.ref write_command,write_data
 		.ref cgram_make_word ,cgram_make_word2 ;  ,set_gdram_addr  
		.global _InitC5402 
		.global _Write_lcd
;===============================================		
_InitC5402:
	LD #0, DP 		; reset data–page pointer
	STM #0, CLKMD 	; software setting of DSP clock
	STM #0, CLKMD 	; (to divider mode before setting)
	STM #0x1007, CLKMD ; set C5402 DSP clock to 20MHz=10X2		
;	STM #0x4007, CLKMD ; set C5402 DSP clock to 50MHz=10X5
;	STM #0x9007, CLKMD ; set C5402 DSP clock to 100MHz =10X10
					; (based on DSK crystal at 10MHz)
******* Configure C5402 System Registers *******
	STM #0x0000, SWCR   ;The SWSM bit of the SWCR defines
						; a multiplication factor of 1 or 2 for wait cycle
	STM #0x2000, SWWSR 	; 2 wait cycle for IO space   
						; 0 wait cycle for data&prog spaces
	STM #0x0000,BSCR 	; set wait states for bank switch:
						; 64k mem bank, extra 0 cycle between
; consecutive prog/data read
	STM #0x1800,ST0 	; ST0 at default setting
	STM #0x2900,ST1 	; ST1 at default setting(note:INTX=1)
;	STM #0x3fe1,PMST	; MP/MC=0 mode & OVLY=1, vectors at FF80h
	STM #0x00A0,PMST 	; MP/MC=0 & OVLY=1,  CLKOFF=0 (Enable clkout) vectors at 0080h
******* Set up Timer Control Registers *******
	STM #0x0010, TCR 	; stop on–chip timer0
	STM #0x0010, TCR1 	; stop on–chip timer1
; Timer0 is used as main loop timer
;	STM #2499, PRD ; timer0 rate=CPUCLK/1/(PRD+1)
; =40M/2500=16KHz
* STM #6249, PRD ; if CPU at 100M/6250=16KHz  	
******* Finish DSP Initialization *******
	STM #0x0000, IMR 	; disable peripheral interrupts
	STM #0xFFFF, IFR 	; clear the intrupts’ flag
	nop
	nop
	;STM 2000H,SP
	RET ; return to main
	NOP
	NOP 	
;===============================================
_Write_lcd:
        call init_lcm
 		call ddram_clear       ;clear ddram  
;		b LED
		stm #1111h,ar3			;load "田" word piont
		stm m3h_table1,ar5
		rpt		#31
		mvdd	*ar5+,*ar3+
		
		stm #1024h,ar3			;load "m3/h" piont
		stm m3h_table2,ar5
		rpt		#31
		mvdd	*ar5+,*ar3+
		call fill_with_cgram    ;display cgram

        stm #600,ar3           ;delay 600ms
	   	call ms_delay 
		call fill_chinese_word  ;display chinese  
;		stm #600,ar3           ;delay 600ms
;	   	call ms_delay 
      	
;		call gdram_clear        ;clear gdram
;	    call gdram_test3
LED:  ;	stm		#3000h,sp
		rsbx	xf
		stm  #800,ar3
      	call ms_delay
      	ssbx	xf        		; clear flag bit
      	stm  #800,ar3
      	call ms_delay
      	NOP
		RET
		nop
		nop
;===============================================
;===============================================
init_lcm:
;delay> 40ms 
		stm #40,ar3
	    call ms_delay
		stm #30h,ar5 
        call write_command 
;delay >100us
		stm #100,ar3
		call us_delay
		stm #30h,ar5
		call write_command
;delay >100us
		stm #100,ar3
		call us_delay
;turn on lcd
		stm #0ch,ar5
		call write_command
;delay >100us
		stm #100,ar3
		call us_delay
;clear ddram
		stm #01h,ar5
		call write_command
;delay >10ms 
		stm #10,ar3     ;10d=0ah
		call ms_delay
;enter mode set
		stm #06h,ar5
        call write_command
		RET 
;===============================================
;================================================
ddram_clear: 
;set basic mode
		stm #30h,ar5
		call write_command
;clear ddram
		stm #01h,ar5
		call write_command
;set expand mode
		stm #36h,ar5
		call write_command
;turn off graphic mode
		stm #30h,ar5 
		call write_command
		ret
;===============================================
;================================================
fill_with_cgram:
; 设cgram 中的字摸代码(bit4=bit5)
        stm #0h,ar5
; 指定在相应的(cgram) 区中造字 
		call cgram_make_word2
;turn off display
		stm #08h,ar5
		call write_command
;clear ddram
		stm #01h,ar5
		call write_command
;turn on display 
		stm #0ch,ar5
		call write_command  
;set display address
		stm #96h,ar5		;set display address 
		call write_command	
;调用字摸代码, 显示字模数据
		stm #00h,ar5
		mvdk ar5,1023h
		call write_data
		stm #00h,ar5
		mvdk ar5,1023h
		call write_data 

        stm #800,ar3           ;delay 600ms
	   	call ms_delay 
; 设cgram 中的字摸代码(bit4=bit5)
        stm #0h,ar5
; 指定在相应的(cgram) 区中造字 
		call cgram_make_word
;turn off display
		stm #08h,ar5
		call write_command
;clear ddram
		stm #01h,ar5
		call write_command
;turn on display 
		stm #0ch,ar5
		call write_command  
;set display address
		stm #96h,ar5		;set display address 
		call write_command	
;调用字摸代码, 显示字模数据
		stm #00h,ar5
		mvdk ar5,1023h
		call write_data
		stm #00h,ar5
		mvdk ar5,1023h
		call write_data 

        ret
        
;=;==============================================
;==;;==============================================
;gdram_clear:  
;turn off display
;		LDP  #GPR0>>7
;		SPLK #08h, GPR0
;		call _write_command
;;clear ddram
;		LDP  #GPR0>>7
;		SPLK #01h, GPR0 
;		call _write_command
;;internal gdram=16word(256dot/line)*64line
;		LDP  #gdram_cur_x>>7
;		SPLK #0, gdram_cur_x      ; up: left-right 0-7  down:left-right 8-15
;		SPLK #0, gdram_cur_y      ; up-down 0-31
;		SPLK #34h, GPR0
;		call _write_command
;write_gdram_0_loop:    
;		LDP  #gdram_cur_y>>7
;		lacl gdram_cur_y 
;		call _set_gdram_addr
;
;		LDP  #gdram_cur_x>>7
;		lacl  gdram_cur_x
;		call _set_gdram_addr
;
;		LDP  #GPR0>>7
;		SPLK #081h, GPR0
;		call _write_data
 ;       LDP  #GPR0>>7
;		SPLK #002h, GPR0
;		call _write_data 
 ;    
;		LDP  #gdram_cur_x>>7
;		lacl  gdram_cur_x
;		add #1
;		sacl gdram_cur_x
;		sub #16 
;		bcnd _write_gdram_0_loop,lt 
;		
;		SPLK #0, gdram_cur_x
;		lacl gdram_cur_y 
;		add #1 
;		sacl gdram_cur_y
;		sub #32
;		bcnd _write_gdram_0_loop,lt
 ;	   
;		LDP  #GPR0>>7
;		SPLK #36h, GPR0
;		call _write_command
;		ret
;;===============================================
;=;===============================================
;gdram_test3:
;		LDP  #gdram_cur_x>>7
;		SPLK #0, gdram_cur_x
;		SPLK #0, gdram_cur_y
;		SPLK #(128/8), bmp_width
;		SPLK #16, bmp_height
;		lar		ar4,#0A000h
;		mar		*,ar4
;		rpt		#255
;		blpd	#rectangle0,*+
;		rpt     #255
;		blpd	#rectangle1,*+
;		rpt		#255
;		blpd	#rectangle2,*+
;		rpt		#255
;		blpd	#rectangle3,*+ 
;		lar		ar4,#0A000h   
;		b LED
;		call gdram_disp
;		ret
;;===============================================
;=;===============================================
;INT1:	RET
;INT23:	RET
;TINT:	RET 
;RINT:	RET
;===============================================
;================================================
; 字模数据16line*2byte=16*16dot 
m3h_table1:
		.word  	0f0h,0f0h,0f0h,0f0h,0ffh,0ffh,0c1h,083h
		.word	0c1h,083h,0c1h,083h,0c1h,083h,0ffh,0ffh
		.word	0ffh,0ffh,0c1h,083h,0c1h,083h,0c1h,083h
		.word	0c1h,083h,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh
m3h_table2:
		.word  	01h,80h,02h,40h,00h,40h,01h,80h
		.word 	00h,48h,02h,50h,0B9h,90h,54h,20h
		.word  	54h,48h,54h,48h,54h,88h,55h,0Eh
		.word	01h,09h,02h,09h,00h,09h,00h,09h

        .end     
;===============================================
;===============================================

⌨️ 快捷键说明

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