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

📄 display.s

📁 测量脉搏的源码 Cypress公司使用 CY27443 完成相关的功能
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module display.c
	.area lit(rom, con, rel)
_FontLookup:
	.byte 0,0
	.byte 0,0
	.byte 0
	.byte 0,0
	.byte 47,0
	.byte 0
	.byte 0,7
	.byte 0,7
	.byte 0
	.byte 20,127
	.byte 20,127
	.byte 20
	.byte 36,42
	.byte 127,42
	.byte 18
	.byte 196,200
	.byte 16,38
	.byte 'F
	.byte 54,'I
	.byte 'U,34
	.byte 'P
	.byte 0,5
	.byte 3,0
	.byte 0
	.byte 0,28
	.byte 34,'A
	.byte 0
	.byte 0,'A
	.byte 34,28
	.byte 0
	.byte 20,8
	.byte 62,8
	.byte 20
	.byte 8,8
	.byte 62,8
	.byte 8
	.byte 0,0
	.byte 'P,48
	.byte 0
	.byte 16,16
	.byte 16,16
	.byte 16
	.byte 0,96
	.byte 96,0
	.byte 0
	.byte 32,16
	.byte 8,4
	.byte 2
	.byte 62,'Q
	.byte 'I,'E
	.byte 62
	.byte 0,'B
	.byte 127,64
	.byte 0
	.byte 'B,'a
	.byte 'Q,'I
	.byte 'F
	.byte 33,'A
	.byte 'E,'K
	.byte 49
	.byte 24,20
	.byte 18,127
	.byte 16
	.byte 39,'E
	.byte 'E,'E
	.byte 57
	.byte 60,'J
	.byte 'I,'I
	.byte 48
	.byte 1,'q
	.byte 9,5
	.byte 3
	.byte 54,'I
	.byte 'I,'I
	.byte 54
	.byte 6,'I
	.byte 'I,41
	.byte 30
	.byte 0,54
	.byte 54,0
	.byte 0
	.byte 0,'V
	.byte 54,0
	.byte 0
	.byte 8,20
	.byte 34,'A
	.byte 0
	.byte 20,20
	.byte 20,20
	.byte 20
	.byte 0,'A
	.byte 34,20
	.byte 8
	.byte 2,1
	.byte 'Q,9
	.byte 6
	.byte 50,'I
	.byte 'Y,'Q
	.byte 62
	.byte 126,17
	.byte 17,17
	.byte 126
	.byte 127,'I
	.byte 'I,'I
	.byte 54
	.byte 62,'A
	.byte 'A,'A
	.byte 34
	.byte 127,'A
	.byte 'A,34
	.byte 28
	.byte 127,'I
	.byte 'I,'I
	.byte 'A
	.byte 127,9
	.byte 9,9
	.byte 1
	.byte 62,'A
	.byte 'I,'I
	.byte 'z
	.byte 127,8
	.byte 8,8
	.byte 127
	.byte 0,'A
	.byte 127,'A
	.byte 0
	.byte 32,64
	.byte 'A,63
	.byte 1
	.byte 127,8
	.byte 20,34
	.byte 'A
	.byte 127,64
	.byte 64,64
	.byte 64
	.byte 127,2
	.byte 12,2
	.byte 127
	.byte 127,4
	.byte 8,16
	.byte 127
	.byte 62,'A
	.byte 'A,'A
	.byte 62
	.byte 127,9
	.byte 9,9
	.byte 6
	.byte 62,'A
	.byte 'Q,33
	.byte 94
	.byte 127,9
	.byte 25,41
	.byte 'F
	.byte 'F,'I
	.byte 'I,'I
	.byte 49
	.byte 1,1
	.byte 127,1
	.byte 1
	.byte 63,64
	.byte 64,64
	.byte 63
	.byte 31,32
	.byte 64,32
	.byte 31
	.byte 63,64
	.byte 56,64
	.byte 63
	.byte 'c,20
	.byte 8,20
	.byte 'c
	.byte 7,8
	.byte 'p,8
	.byte 7
	.byte 'a,'Q
	.byte 'I,'E
	.byte 'C
	.byte 0,127
	.byte 'A,'A
	.byte 0
	.byte 'U,42
	.byte 'U,42
	.byte 'U
	.byte 0,'A
	.byte 'A,127
	.byte 0
	.byte 4,2
	.byte 1,2
	.byte 4
	.byte 64,64
	.byte 64,64
	.byte 64
	.byte 0,1
	.byte 2,4
	.byte 0
	.byte 32,'T
	.byte 'T,'T
	.byte 'x
	.byte 127,'H
	.byte 'D,'D
	.byte 56
	.byte 56,'D
	.byte 'D,'D
	.byte 32
	.byte 56,'D
	.byte 'D,'H
	.byte 127
	.byte 56,'T
	.byte 'T,'T
	.byte 24
	.byte 8,126
	.byte 9,1
	.byte 2
	.byte 12,'R
	.byte 'R,'R
	.byte 62
	.byte 127,8
	.byte 4,4
	.byte 'x
	.byte 0,'D
	.byte 125,64
	.byte 0
	.byte 32,64
	.byte 'D,61
	.byte 0
	.byte 127,16
	.byte 40,'D
	.byte 0
	.byte 0,'A
	.byte 127,64
	.byte 0
	.byte 124,4
	.byte 24,4
	.byte 'x
	.byte 124,8
	.byte 4,4
	.byte 'x
	.byte 56,'D
	.byte 'D,'D
	.byte 56
	.byte 124,20
	.byte 20,20
	.byte 8
	.byte 8,20
	.byte 20,24
	.byte 124
	.byte 124,8
	.byte 4,4
	.byte 8
	.byte 'H,'T
	.byte 'T,'T
	.byte 32
	.byte 4,63
	.byte 'D,64
	.byte 32
	.byte 60,64
	.byte 64,32
	.byte 124
	.byte 28,32
	.byte 64,32
	.byte 28
	.byte 60,64
	.byte 48,64
	.byte 60
	.byte 'D,40
	.byte 16,40
	.byte 'D
	.byte 12,'P
	.byte 'P,'P
	.byte 60
	.byte 'D,'d
	.byte 'T,'L
	.byte 'D
	.dbfile ./small_font.h
	.dbsym s FontLookup _FontLookup A[455:91:5]c
	.area text(rom, con, rel)
	.dbfile ./small_font.h
	.dbfile ./display.c
	.dbfunc e LcdInit _LcdInit fV
;              i -> X+0
_LcdInit::
	.dbline -1
	push X
	mov X,SP
	add SP,2
	.dbline 13
; #include "m8c.h"
; #include "PSoCAPI.h"
; #include "utils.h"
; #include "globdefs.h"
; 
; #include "spim.h"
; #include "display.h"
; 
; void LcdSendData ( char data );
; void LcdSendCommand ( char command );
; 
; void LcdInit ( void )
; {
	.dbline 15
;   int i;
;   SPIM_Start(SPIM_SPIM_MODE_0 | SPIM_SPIM_MSB_FIRST);
	push X
	mov A,0
	xcall _SPIM_Start
	pop X
	.dbline 17
;   
;   CLEARBIT(LCD_PORT, LCD_RST_BIT);
	and REG[4],-3
	.dbline 18
;   delayi(0xFF);
	mov A,0
	push A
	mov A,-1
	push A
	xcall _delayi
	.dbline 19
;   SETBIT(LCD_PORT, LCD_RST_BIT);
	or REG[4],2
	.dbline 22
;   // Enable SPI port: No interrupt, MSBit first, Master mode
;   
;   LcdSendCommand(0x21);
	mov A,33
	push A
	xcall _LcdSendCommand
	add SP,-3
	.dbline 23
;   LcdSendCommand(0xBF);
	mov A,-65
	push A
	xcall _LcdSendCommand
	.dbline 24
;   LcdSendCommand(0x13);
	mov A,19
	push A
	xcall _LcdSendCommand
	add SP,-2
	.dbline 26
; 
;   LcdSendCommand(0x20); 
	mov A,32
	push A
	xcall _LcdSendCommand
	.dbline 27
;   LcdSendCommand(0x0C); // LCD in normal mode.
	mov A,12
	push A
	xcall _LcdSendCommand
	add SP,-2
	.dbline 30
;   
;   //clear display
;   LcdSendCommand(0x40);
	mov A,64
	push A
	xcall _LcdSendCommand
	.dbline 31
;   LcdSendCommand(0x80);
	mov A,-128
	push A
	xcall _LcdSendCommand
	add SP,-2
	.dbline 32
	mov [X+1],0
	mov [X+0],0
L3:
	.dbline 32
	mov A,0
	push A
	xcall _LcdSendData
	add SP,-1
L4:
	.dbline 32
;   for(i=0; i<504; i++) LcdSendData(0x00);
	inc [X+1]
	adc [X+0],0
	.dbline 32
	mov A,[X+0]
	xor A,-128
	mov [__rY],A
	mov A,1
	xor A,-128
	mov [__rZ],A
	mov [__rX],0
	mov A,[X+1]
	sub A,-8
	or [__rX],A
	mov A,[__rY]
	sbb A,[__rZ]
	or [__rX],A
	jc L3
X0:
	.dbline -2
	.dbline 33
; }
L2:
	add SP,-2
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l i 0 I
	.dbend
	.dbfunc e LcdContrast _LcdContrast fV
;       contrast -> X-4
_LcdContrast::
	.dbline -1
	push X
	mov X,SP
	.dbline 43
; 
; //--------------------------------------------------------------------------------------------------
; // Name : LcdContrast
; // Description : Set display contrast.
; // Argument(s) : contrast -> Contrast value from 0x00 to 0x7F.
; // Return value : None.
; // Notes : No change visible at ambient temperature.
; //--------------------------------------------------------------------------------------------------
; void LcdContrast ( char contrast )
; {
	.dbline 45
;   // LCD Extended Commands.
;   LcdSendCommand(0x21);
	mov A,33
	push A
	xcall _LcdSendCommand
	add SP,-1
	.dbline 47
;   // Set LCD Vop (Contrast).
;   LcdSendCommand(0x80);
	mov A,-128
	push A
	xcall _LcdSendCommand
	.dbline 49
;   // LCD Standard Commands, horizontal addressing mode.
;   LcdSendCommand(0x20);
	mov A,32
	push A
	xcall _LcdSendCommand
	add SP,-2
	.dbline -2
	.dbline 50
; }
L7:
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l contrast 0 I
	.dbsym l contrast -4 c
	.dbend
	.dbfunc e LcdClear _LcdClear fV
;              i -> X+0
_LcdClear::
	.dbline -1
	push X
	mov X,SP
	add SP,2
	.dbline 59
; 
; //--------------------------------------------------------------------------------------------------
; // Name : LcdClear
; // Description : Clears the display.
; // Argument(s) : None.
; // Return value : None.
; //--------------------------------------------------------------------------------------------------
; void LcdClear ( void )
; {
	.dbline 61
	mov [X+1],0
	mov [X+0],0
L9:
	.dbline 61
	mov A,0
	push A
	xcall _LcdSendData
	add SP,-1
L10:
	.dbline 61
;   int i;
;   for(i=0; i<504; i++) LcdSendData(0x00);
	inc [X+1]
	adc [X+0],0
	.dbline 61
	mov A,[X+0]
	xor A,-128
	mov [__rY],A
	mov A,1
	xor A,-128
	mov [__rZ],A
	mov [__rX],0
	mov A,[X+1]
	sub A,-8
	or [__rX],A
	mov A,[__rY]
	sbb A,[__rZ]
	or [__rX],A
	jc L9
X1:
	.dbline 62
;   LcdSendCommand(0x40);
	mov A,64
	push A
	xcall _LcdSendCommand
	.dbline 63
;   LcdSendCommand(0x80);
	mov A,-128
	push A
	xcall _LcdSendCommand
	add SP,-2
	.dbline -2
	.dbline 64
; }
L8:
	add SP,-2
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l i 0 I
	.dbend
	.dbfunc e LcdGoto _LcdGoto fV
;              y -> X-5
;              x -> X-4
_LcdGoto::
	.dbline -1
	push X
	mov X,SP
	.dbline 73
; 
; //--------------------------------------------------------------------------------------------------
; // Name : LcdGotoXY
; // Description : Sets cursor location to xy location corresponding to basic font size.
; // Argument(s) : x, y -> Coordinate for new cursor position. x range 0..83, y - 0..5
; // Return value : None.
; //--------------------------------------------------------------------------------------------------
; void LcdGoto ( char x, char y )
; {
	.dbline 74
;   LcdSendCommand(0x40 | y);
	mov A,[X-5]
	or A,64
	push A
	xcall _LcdSendCommand
	.dbline 75
;   LcdSendCommand(0x80 | x);
	mov A,[X-4]
	or A,-128
	push A
	xcall _LcdSendCommand
	add SP,-2
	.dbline -2
	.dbline 76
; }
L13:
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l y 0 I
	.dbsym l y -5 c
	.dbsym l x 0 I
	.dbsym l x -4 c
	.dbend
	.dbfunc e LcdChr _LcdChr fV
;              i -> X+0
;             ch -> X-4
_LcdChr::
	.dbline -1
	push X
	mov X,SP
	add SP,2
	.dbline 87
; 
; //--------------------------------------------------------------------------------------------------
; // Name : LcdChr
; // Description : Displays a character at current cursor location and increment cursor location.
; // Argument(s) : ch -> Character to write.
; //               dt (available only with DRAW_OVER_BACKGROUND directive) -> drawing type  
; // Return value : None.
; //--------------------------------------------------------------------------------------------------
; 
; void LcdChr ( char ch )
; {
	.dbline 89
	mov [X+1],0
	mov [X+0],0
L15:
	.dbline 89
	mov [__r1],5
	mov [__r0],0
	mov A,[X-4]
	mov [__r3],A
	mov [__r2],0
	mov [__rX],0
	mov [__rY],0
X2:
	cmp [__r0],0
	jnz X5
	cmp [__r1],0
	jz X4
X5:
	and F,-5
	rrc [__r0]
	rrc [__r1]
	jnc X3
	mov A,[__r3]
	add [__rX],A
	mov A,[__r2]
	adc [__rY],A
X3:
	asl [__r3]
	rlc [__r2]
	jmp X2
X4:
	mov [__r1],[__rX]
	mov [__r0],[__rY]
	add [__r1],<_FontLookup-160
	adc [__r0],>_FontLookup-160
	mov A,[X+1]
	add A,[__r1]
	mov [__r1],A
	mov A,[X+0]
	adc A,[__r0]
	push X
	mov X,[__r1]
	romx
	pop X
	push A
	xcall _LcdSendData
	add SP,-1
L16:
	.dbline 89
;   int i;
;   for(i=0; i<5; i++) LcdSendData(FontLookup[ch-32][i]);
	inc [X+1]
	adc [X+0],0
	.dbline 89
	mov A,[X+0]
	xor A,-128
	mov [__rY],A
	mov A,0
	xor A,-128
	mov [__rZ],A
	mov [__rX],0
	mov A,[X+1]
	sub A,5
	or [__rX],A
	mov A,[__rY]
	sbb A,[__rZ]
	or [__rX],A
	jc L15
X6:
	.dbline 91
;   // empty space after character 
;   LcdSendData(0x00);
	mov A,0
	push A
	xcall _LcdSendData
	add SP,-1
	.dbline -2
	.dbline 92
; }
L14:
	add SP,-2
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l i 0 I
	.dbsym l ch 0 I
	.dbsym l ch -4 c
	.dbend
	.dbfunc e LcdStr _LcdStr fV
;             ch -> X+2
;              i -> X+0
;        dataPtr -> X-5
_LcdStr::
	.dbline -1
	push X
	mov X,SP
	add SP,3
	.dbline 95
; 
; void LcdStr ( char *dataPtr )
; {
	xjmp L22
L21:
	.dbline 98
;   int i;
;   while ( *dataPtr ) 
;   {
	.dbline 99
;     char ch = *dataPtr++; 
	mov A,[X-4]
	mov [__r1],A
	mov A,[X-5]
	mov [__r0],A
	mov A,[__r1]
	add A,1
	mov [X-4],A
	mov A,[__r0]
	adc A,0
	mov [X-5],A
	mvi A,[__r1]
	dec [__r1]
	mov [X+2],A
	.dbline 100
	mov [X+1],0
	mov [X+0],0
L24:
	.dbline 100
	mov [__r1],5
	mov [__r0],0
	mov A,[X+2]
	mov [__r3],A
	mov [__r2],0
	mov [__rX],0
	mov [__rY],0
X7:
	cmp [__r0],0
	jnz X10
	cmp [__r1],0
	jz X9
X10:
	and F,-5
	rrc [__r0]
	rrc [__r1]
	jnc X8
	mov A,[__r3]
	add [__rX],A
	mov A,[__r2]
	adc [__rY],A
X8:
	asl [__r3]
	rlc [__r2]
	jmp X7
X9:
	mov [__r1],[__rX]
	mov [__r0],[__rY]
	add [__r1],<_FontLookup-160
	adc [__r0],>_FontLookup-160
	mov A,[X+1]
	add A,[__r1]
	mov [__r1],A
	mov A,[X+0]
	adc A,[__r0]
	push X
	mov X,[__r1]
	romx
	pop X
	push A
	xcall _LcdSendData
	add SP,-1
L25:
	.dbline 100
	inc [X+1]
	adc [X+0],0
	.dbline 100
	mov A,[X+0]
	xor A,-128
	mov [__rY],A
	mov A,0
	xor A,-128
	mov [__rZ],A
	mov [__rX],0
	mov A,[X+1]
	sub A,5
	or [__rX],A
	mov A,[__rY]
	sbb A,[__rZ]
	or [__rX],A
	jc L24
X11:
	.dbline 102
	mov A,0
	push A
	xcall _LcdSendData
	add SP,-1
	.dbline 103
L22:
	.dbline 97
	mov A,[X-4]
	mov [__r1],A
	mvi A,[__r1]
	jnz L21
	.dbline -2
	.dbline 104
;     for(i=0; i<5; i++) LcdSendData(FontLookup[ch-32][i]);
;     // empty space after character 
;     LcdSendData(0x00);
;   }
; }
L20:
	add SP,-3
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l ch 2 c
	.dbsym l i 0 I
	.dbsym l dataPtr -5 pc
	.dbend
	.dbfunc e LcdCStr _LcdCStr fV
;             ch -> X+2
;              i -> X+0
;        dataPtr -> X-5
_LcdCStr::
	.dbline -1
	push X
	mov X,SP
	add SP,3
	.dbline 107
; 
; void LcdCStr ( const char *dataPtr )
; {
	xjmp L31
L30:
	.dbline 110
;   int i;
;   while ( *dataPtr ) 
;   {
	.dbline 111
;     char ch = *dataPtr++; 
	mov A,[X-4]
	mov [__r1],A
	mov A,[X-5]
	mov [__r0],A
	mov A,[__r1]
	add A,1
	mov [X-4],A
	mov A,[__r0]
	adc A,0
	mov [X-5],A
	mov A,[__r0]
	push X
	mov X,[__r1]
	romx
	pop X
	mov [X+2],A
	.dbline 112
	mov [X+1],0
	mov [X+0],0
L33:
	.dbline 112
	mov [__r1],5
	mov [__r0],0
	mov A,[X+2]
	mov [__r3],A
	mov [__r2],0
	mov [__rX],0
	mov [__rY],0
X12:
	cmp [__r0],0
	jnz X15
	cmp [__r1],0
	jz X14

⌨️ 快捷键说明

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