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

📄 dataosforlcd.asm

📁 可以通过向电子指南针模组发送不同的命令字
💻 ASM
字号:
//专为任意点显示而存在的代码
/////-----       图形显示模式	    -----/////
.define PAINT_COVER		0
.define PAINT_SET		1
.define PAINT_CLR		2
.define PAINT_REV		3
.define PAINT_RECO		4

.ram
.external _CurPaintMode			//Painting mode
.external _Shift_Data_buf//:	.DW 	5	 Dup(0)
.external _Cover_Data_buf
.var Data_Add
.var Num_buf
.var Cover_Mask
.var Bit_Num

.external _Shift_Buff
.code
.public _F_Data_Cover
_F_Data_Cover:
	push r5 to [sp]
	r5 = sp+1
	push r2,r4 to [sp]
	r1 = [r5+3]						//Get the Buffer Address
	r2 = [r5+4]						//Get Shift Num
	r3 = [r5+5]						//Get All the Data`s number want shift
	r4 = [r5+6]						//Get bit Numbers
	call F_Data_Move
	[Num_buf] = r3
	r1 = _Shift_Data_buf
	r1 = r1+3
	[Data_Add] = r1// to [sp]
	[Bit_Num] = r4
	test r2,0xffff
	jnz F_Data_Cover_L1
	jmp F_Data_Cover_NotS
F_Data_Cover_L1:					//Shift the Number of the source begin....
	r1 = [Data_Add]
	r3 = [Num_buf]
	r4 = 0
	r4 = r4 lsl 4
F_Data_Cover_L2:
	r4 = [r1]
	r4 = r4 rol 1
	[r1--] = r4
	r4 = r4 lsl 3
	r3-=1
	jnz	F_Data_Cover_L2
	r2-=1
	jnz	F_Data_Cover_L1				//...end
F_Data_Cover_NotS:
	r3 = [Num_buf]					//Get the data number for all(word)
	r4 = _Shift_Buff			//index to Data of LCD Read Back
	r4 += 3
	r2 = _Shift_Data_buf		//index to Data of Source
	r2 += 3
	r1 = [_CurPaintMode]
	jz ?F_Data_Cover_Cover
	cmp r1,PAINT_RECO//VER
	jnz	?F_Data_Cover_Not
?F_Data_Cover_Cover:
	r5 = _Cover_Data_buf
	r5 += 3
?F_Data_Cover_L21:
	r1 = [r4--]
	r1 = r1 & [r5--]
	r1 = r1 | [r2]
	[r2--] = r1
	r3 -= 1
	jnz ?F_Data_Cover_L21
	jmp F_Data_Cover_Exit
?F_Data_Cover_Not:
	cmp r1,PAINT_SET
	jnz ?F_Data_Cover_Not1
?F_Data_SET_L1:
	r1 = [r4--]
	r1 = r1|[r2]
	[r2--] = r1
	r3-=1
	jnz ?F_Data_SET_L1
	jmp F_Data_Cover_Exit
?F_Data_Cover_Not1:
	cmp r1,PAINT_CLR
	jnz ?F_Data_Cover_Not2
?F_Data_CLR_L1:
	r1 = [r2]
	r1 = r1^0xffff
	r1 = r1&[r4--]
	[r2--] = r1
	r3-=1
	jnz ?F_Data_CLR_L1
	jmp	F_Data_Cover_Exit
?F_Data_Cover_Not2:
?F_Data_REV_L1:
	r1 = [r4--]
	r1 = r1^[r2]
	[r2--] = r1
	r3-=1
	jnz ?F_Data_REV_L1
F_Data_Cover_Exit:
	pop r2,r4 from [sp]
	pop r5 from [sp]
	retf
	
F_Data_Move:
	push r2,r5 to [sp]
	r3 = r4&0x0f
	r4 = r4 lsr 4
	r1 = r1+r4
	test r3,0xff
	jnz F_Data_Move_NotAd
	r1-=1
	jmp	F_Data_Move_22
F_Data_Move_NotAd:
	r4 = r4+1
F_Data_Move_22:
	r2 = _Shift_Data_buf
	r2 = r2+3
	r5 = [_CurPaintMode]
	cmp r5,PAINT_RECO
	jnz F_Data_Move_Loop
F_Data_Move_Loop1:
	r3 = [r1--]
	r3 = r3^0xffff
	[r2--] = r3				//bug1
	r4-=1
	jnz	F_Data_Move_Loop1
	jmp F_Data_Move_Exit
F_Data_Move_Loop:
	r3 = [r1--]
	[r2--] = r3				//bug1
	r4-=1
	jnz	F_Data_Move_Loop
F_Data_Move_Exit:
	pop r2,r5 from [sp]
	retf

//************************************************************************
// 
// 设计者: xinqiang
// 描  述:
// 日  期: 2005.6.20
// 版本号: 1.0
//*************************************************************************
.public _F_Cover_Initial
_F_Cover_Initial:
	push r5 to [sp]
	r5 = sp+1
	push r1,r4 to [sp]
	r2 = [r5+4]				//Get the shift number
//	r4 = [r5+5]
	r1 = [r5+3]				//Get the bit number
	jnz	?F_Cover_NZ
	jmp	?F_Cover_Exit	
?F_Cover_NZ:
	r5 = _Cover_Data_buf
	r5+=3
	r3 = 4
	r4 = 0xffff
	[r5] = r4
	r4 = 0
	r4 = r4 lsl 4
?F_Cover_Loop1:
	r4 = [r5]
	r4 = r4 rol 1
	[r5--] = r4
	r4 = r4 rol 3
	r3-=1
	jnz ?F_Cover_Loop1
	r5+=4
	r4 = 0
	r4 = r4 lsl 4
	r3 = 4
	r1-=1
	jnz ?F_Cover_Loop1
	test r2,0xffff
	jnz	?F_Cover_Loop2
	jmp	?F_Cover_Exit
?F_Cover_Loop2:
	r4 = 0xffff;
	r4 = r4 lsl 4
	r3 = 4
?F_Cover_Loop3:
	r4 = [r5]
	r4 = r4 rol 1
	[r5--] = r4
	r4 = r4 lsl 3
	r3-=1
	jnz ?F_Cover_Loop3
	r5+=4
	r2-=1
	jnz ?F_Cover_Loop2
?F_Cover_Exit:
	pop r1,r4 from [sp]
	pop r5 from [sp]
	retf

//****************************************************************************************************
// 128X64I液晶底层驱动画圆误差计算  W_Red_Err(int *a,int *b,int *r)
// 设计者: powerint
// 描  述: 系统初始化
// 日  期: 2004.5.9
// 版本号: 1.2
//****************************************************************************************************
.PUBLIC _W_Red_Err
_W_Red_Err: push bp,bp to [sp]
            bp = sp+1
            r3 = [bp+3]
            r3 = [r3]
            r3 = r3+1
            r4 = r3
            mr = r3*r4,us
            r1 = r3
            r3 = [bp+4]
            r3 = [r3]
            r4 = r3
            mr = r3*r4,us
            r1+= r3
            r3 = [bp+5]
            r3 = [r3]
            r4 = r3
            mr = r3*r4,us
            r1-=r3
            jl squ1
            r4 = [bp+4]
            r3 = [r4]
            r1-= r3
            jl squ1
            r3-=1
            [r4] = r3;
      squ1: r4 = [bp+3]
            r3 = [r4]
            r3+=1
            [r4] = r3
            pop bp,bp from [sp]
            retf       

⌨️ 快捷键说明

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