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

📄 st7920iccavrmega8.s

📁 AVR学习开发 板
💻 S
📖 第 1 页 / 共 2 页
字号:
;             us -> R22
;             MS -> R16,R17
	.even
_Delay::
	rcall push_gset2
	.dbline -1
	.dbline 108
; }
; //===延时程序 ,12M/ms==
; void Delay(unsigned int MS)
; {
	rjmp L30
L29:
	.dbline 111
;     unsigned char us,usn;
;     while(MS!=0)             		//for 12M
;     { 
	.dbline 112
; 	    usn = 2;
	ldi R20,2
	rjmp L33
L32:
	.dbline 114
;     	while(usn!=0)
;         {
	.dbline 115
;             us=0xf5;
	ldi R22,245
	rjmp L36
L35:
	.dbline 116
	.dbline 116
	dec R22
	.dbline 116
L36:
	.dbline 116
	tst R22
	brne L35
	.dbline 116
	.dbline 117
	dec R20
	.dbline 118
L33:
	.dbline 113
	tst R20
	brne L32
	.dbline 119
	subi R16,1
	sbci R17,0
	.dbline 120
L30:
	.dbline 110
	cpi R16,0
	cpc R16,R17
	brne L29
X0:
	.dbline -2
L28:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r usn 20 c
	.dbsym r us 22 c
	.dbsym r MS 16 i
	.dbend
	.dbfunc e LcmInit _LcmInit fV
	.even
_LcmInit::
	.dbline -1
	.dbline 124
;             while (us!=0){us--;};
;             usn--;
;         }
;         MS--;
;     }
; }
; //=====液晶初始化======
; void LcmInit( void )          
; {
	.dbline 125
;     WriteCommand(0x30); //基本指令,选择8位CPU控制方式,关图显
	ldi R16,48
	rcall _WriteCommand
	.dbline 126
;     WriteCommand(0x03); //复位地址计数器
	ldi R16,3
	rcall _WriteCommand
	.dbline 127
;     WriteCommand(0x0C); //开整体显示
	ldi R16,12
	rcall _WriteCommand
	.dbline 128
;     WriteCommand(0x01); //清除屏显的数据
	ldi R16,1
	rcall _WriteCommand
	.dbline 129
;     WriteCommand(0x06); //设置地址计数器递增
	ldi R16,6
	rcall _WriteCommand
	.dbline -2
L38:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LcmClearTXT _LcmClearTXT fV
	.even
_LcmClearTXT::
	.dbline -1
	.dbline 133
; }
; //=======清文字========
; void LcmClearTXT( void )     
; {
	.dbline 134
;     LcmInit();
	rcall _LcmInit
	.dbline -2
L39:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LcmClearBMP _LcmClearBMP fV
;              i -> R20
;              j -> R22
	.even
_LcmClearBMP::
	rcall push_gset2
	.dbline -1
	.dbline 138
; }
; //=======清图片========
; void LcmClearBMP( void )    
; {
	.dbline 140
;     unsigned char i,j;
;     WriteCommand(0x34);		 	//关图显
	ldi R16,52
	rcall _WriteCommand
	.dbline 141
;     for(i=0;i<32;i++)
	clr R20
	rjmp L44
L41:
	.dbline 142
;     {
	.dbline 143
;         WriteCommand(0x80|i);	//写入列地址
	mov R16,R20
	ori R16,128
	rcall _WriteCommand
	.dbline 144
;         WriteCommand(0x80);  	//写入行地址
	ldi R16,128
	rcall _WriteCommand
	.dbline 145
;         for(j=0;j<32;j++)
	clr R22
	rjmp L48
L45:
	.dbline 146
	clr R16
	rcall _WriteData
L46:
	.dbline 145
	inc R22
L48:
	.dbline 145
	cpi R22,32
	brlo L45
	.dbline 147
L42:
	.dbline 141
	inc R20
L44:
	.dbline 141
	cpi R20,32
	brlo L41
	.dbline -2
L40:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 22 c
	.dbend
	.dbfunc e PutStr _PutStr fV
;           puts -> R20,R21
;            col -> R22
;            row -> R10
	.even
_PutStr::
	rcall push_gset3
	mov R22,R18
	mov R10,R16
	ldd R20,y+6
	ldd R21,y+7
	.dbline -1
	.dbline 152
;         WriteData(0);
;     }
; 	//WriteCommand(0x36);//开图显
; }
; //==写入一段文字,写完一屏,清屏,从头在写新的一屏=======
; void PutStr(unsigned char row,unsigned char col,unsigned char *puts)
; {
	.dbline 153
;     WriteCommand(0x30);	  		//基本指令,选择8位CPU控制方式,关图显
	ldi R16,48
	rcall _WriteCommand
	.dbline 154
;     WriteCommand(AC_TABLE[8*row+col]);
	ldi R24,8
	mul R24,R10
	movw R30,R0
	mov R2,R22
	clr R3
	add R30,R2
	adc R31,R3
	ldi R24,<_AC_TABLE
	ldi R25,>_AC_TABLE
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	rcall _WriteCommand
	rjmp L51
L50:
	.dbline 156
;     while(*puts != '\0')
;     {
	.dbline 157
;         if(col==8)
	cpi R22,8
	brne L53
	.dbline 158
;         {
	.dbline 159
;             col=0;
	clr R22
	.dbline 160
;             row++;
	inc R10
	.dbline 161
;         }
L53:
	.dbline 162
;         if(row==4) row=0;
	mov R24,R10
	cpi R24,4
	brne L55
	.dbline 162
	clr R10
L55:
	.dbline 163
	ldi R24,8
	mul R24,R10
	movw R30,R0
	mov R2,R22
	clr R3
	add R30,R2
	adc R31,R3
	ldi R24,<_AC_TABLE
	ldi R25,>_AC_TABLE
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	rcall _WriteCommand
	.dbline 164
	movw R30,R20
	ldd R16,z+0
	rcall _WriteData
	.dbline 165
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 166
	movw R30,R20
	ldd R16,z+0
	rcall _WriteData
	.dbline 167
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 168
	inc R22
	.dbline 169
L51:
	.dbline 155
	movw R30,R20
	ldd R2,z+0
	tst R2
	brne L50
	.dbline -2
L49:
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r puts 20 pc
	.dbsym r col 22 c
	.dbsym r row 10 c
	.dbend
	.dbfunc e PutBMP _PutBMP fV
;              k -> R20
;              x -> R22
;              j -> R14
;              y -> R12
;              i -> R10
;           puts -> y+10
	.even
_PutBMP::
	st -y,r17
	st -y,r16
	rcall push_gset5
	.dbline -1
	.dbline 173
;         WriteCommand(AC_TABLE[8*row+col]);
;         WriteData(*puts);		//一个汉字的ASC码是一个16位的,所以要写入两个字节
;         puts++;
;         WriteData(*puts);
;         puts++;
;         col++;
; 	}
; }
; //========写入一屏图片128*64=======
; void PutBMP(unsigned char *puts)
; {
	.dbline 175
;     unsigned char x,y,i,j,k;
; 	x=0x80;
	ldi R22,128
	.dbline 176
; 	WriteCommand(0x34);	  		//关图显
	ldi R16,52
	rcall _WriteCommand
	.dbline 177
;     for(k=0;k<2;k++)
	clr R20
	rjmp L61
L58:
	.dbline 178
; 	{	
	.dbline 179
; 	    y=0x80;
	ldi R24,128
	mov R12,R24
	.dbline 180
; 		for(j=0;j<32;j++)
	clr R14
	rjmp L65
L62:
	.dbline 181
; 		{
	.dbline 182
; 		    WriteCommand(y);	//写入列地址
	mov R16,R12
	rcall _WriteCommand
	.dbline 183
;             WriteCommand(x);  	//写入行地址
	mov R16,R22
	rcall _WriteCommand
	.dbline 184
;             for(i=0;i<16;i++)
	clr R10
	rjmp L69
L66:
	.dbline 185
	.dbline 186
	ldd R30,y+10
	ldd R31,y+11
	ld R16,Z+
	std y+11,R31
	std y+10,R30
	rcall _WriteData
	.dbline 187
L67:
	.dbline 184
	inc R10
L69:
	.dbline 184
	mov R24,R10
	cpi R24,16
	brlo L66
	.dbline 188
	inc R12
	.dbline 189
L63:
	.dbline 180
	inc R14
L65:
	.dbline 180
	mov R24,R14
	cpi R24,32
	brlo L62
	.dbline 190
	ldi R22,136
	.dbline 191
L59:
	.dbline 177
	inc R20
L61:
	.dbline 177
	cpi R20,2
	brlo L58
	.dbline 192
; 			{
; 			 WriteData(*(puts++));			
; 			}
; 			y++;
; 		}
; 		x=0x88;
; 	}
; 	WriteCommand(0x36);			//开图显
	ldi R16,54
	rcall _WriteCommand
	.dbline -2
L57:
	rcall pop_gset5
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbsym r k 20 c
	.dbsym r x 22 c
	.dbsym r j 14 c
	.dbsym r y 12 c
	.dbsym r i 10 c
	.dbsym l puts 10 pc
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\AVR学习专区\AVR学习板\st7920iccavrmega8.c
_bmp1::
	.blkb 1
	.dbsym e bmp1 _bmp1 A[1:1]c

⌨️ 快捷键说明

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