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

📄 megalcd.s

📁 单片机开发资料光盘-双龙-686M.zip
💻 S
📖 第 1 页 / 共 3 页
字号:
; 			 }
; 	     case 0x01:
; 		     {
	.dbline 171
;               adc2=temp;
	sts _adc2+1,R17
	sts _adc2,R16
	.dbline 172
; 			  ADMUX=0;
	clr R2
	out 0x7,R2
	.dbline 173
; 			  break;
	xjmp L6
L5:
	.dbline 176
; 			 }
; 	     default :
; 		     {
	.dbline 177
; 			  ADMUX=0;
	clr R2
	out 0x7,R2
	.dbline 178
; 			 }			 
	.dbline 179
; 		 }
L6:
	.dbline 180
;    	ADCSR|=0x40;	 			 	 		 
	sbi 0x6,6
	.dbline -2
	.dbline 181
;    } 
L1:
	ld R2,y+
	out 0x3f,R2
	ld R30,y+
	ld R24,y+
	ld R19,y+
	ld R18,y+
	ld R17,y+
	ld R16,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbsym r temp 16 i
	.dbfunc s adctoasc _adctoasc fI
;         char_p -> R10,R11
;              i -> R12
;           temp -> R14,R15
;            adc -> R10,R11
	.even
_adctoasc::
	xcall push_gset5
	mov R10,R16
	mov R11,R17
	.dbline -1
	.dbline 185
; /*     AD结果转换成电压     */
; #define vref   473
; unsigned char * adctoasc(unsigned int adc)
;     {
	.dbline 189
; 	 unsigned int temp;
; 	 unsigned char i;
; 	 unsigned char *char_p;
;      temp=(unsigned int)(((unsigned long)((unsigned long)adc*vref))/1024);
	mov R2,R10
	mov R3,R11
	clr R4
	clr R5
	ldi R16,<L11
	ldi R17,>L11
	xcall lpm32
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	xcall mpy32u
	ldi R24,10
	ldi R25,0
	st -y,R24
	xcall lsr32
	mov R14,R16
	mov R15,R17
	.dbline 190
;      for(i=0;i<3;i++)
	clr R12
	xjmp L15
L12:
	.dbline 191
	.dbline 192
	mov R2,R12
	clr R3
	ldi R30,3
	ldi R31,0
	sub R30,R2
	sbc R31,R3
	ldi R24,<_adcval
	ldi R25,>_adcval
	add R30,R24
	adc R31,R25
	ldi R18,10
	ldi R19,0
	mov R16,R14
	mov R17,R15
	xcall mod16u
	mov R24,R16
	mov R25,R17
	adiw R24,48
	std z+0,R24
	.dbline 193
	ldi R18,10
	ldi R19,0
	mov R16,R14
	mov R17,R15
	xcall div16u
	mov R14,R16
	mov R15,R17
	.dbline 194
L13:
	.dbline 190
	inc R12
L15:
	.dbline 190
	mov R24,R12
	cpi R24,3
	brlo L12
	.dbline 195
; 	    {
; 		 adcval[3-i]=temp%10+0x30;
; 		 temp=temp/10;
; 		}
; 	 adcval[0]=adcval[1];
	lds R2,_adcval+1
	sts _adcval,R2
	.dbline 196
; 	 adcval[1]='.';	
	ldi R24,46
	sts _adcval+1,R24
	.dbline 197
; 	 adcval[4]='V';	
	ldi R24,86
	sts _adcval+4,R24
	.dbline 198
; 	 adcval[5]=0;	
	clr R2
	sts _adcval+5,R2
	.dbline 199
; 	 char_p=adcval;
	ldi R24,<_adcval
	ldi R25,>_adcval
	mov R10,R24
	mov R11,R25
	.dbline 200
; 	 return char_p;
	mov R16,R10
	mov R17,R11
	.dbline -2
L10:
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r char_p 10 pc
	.dbsym r i 12 c
	.dbsym r temp 14 i
	.dbsym r adc 10 i
	.dbfunc s ocmj_init _ocmj_init fI
	.even
_ocmj_init::
	.dbline -1
	.dbline 204
; 	}
; /*     OCMJ4X8LCD初始化     */
; void ocmj_init(void)
;     {
	.dbline 205
; 	 MCUCR=0;
	clr R2
	out 0x35,R2
	.dbline 206
; 	 DDRA=0xff;
	ldi R24,255
	out 0x1a,R24
	.dbline 207
; 	 PORTA=0xff;
	out 0x1b,R24
	.dbline 208
; 	 DDRE=0x80;
	ldi R24,128
	out 0x2,R24
	.dbline 209
; 	 PORTE=0xff;
	ldi R24,255
	out 0x3,R24
	.dbline 210
; 	 PORTC=0xff; 
	out 0x15,R24
	.dbline 211
; 	 DDRD=0x00;
	out 0x11,R2
	.dbline 212
; 	 PORTD=0xff;
	out 0x12,R24
	.dbline 213
; 	 clr_reset;//LCD复位
	cbi 0x15,3
	.dbline 214
; 	 delay_ms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline 215
; 	 set_reset;
	sbi 0x15,3
	.dbline 216
; 	 clr_answer;
	cbi 0x03,7
	.dbline 217
; 	 delay_ms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline -2
	.dbline 218
; 	 }
L20:
	.dbline 0 ; func end
	ret
	.dbfunc s ocmj_write _ocmj_write fI
;           data -> R16
	.even
_ocmj_write::
	.dbline -1
	.dbline 221
; /*            写数据到LCD        */
; void ocmj_write(unsigned char data)
;     {
L22:
	.dbline 223
L23:
	.dbline 222
; 	 while(ask!=0)
	sbic 0x1,6
	rjmp L22
	.dbline 224
; 	      ;
;      data_port=data;
	out 0x1b,R16
	.dbline 225
;    	 wait;
	nop
	 nop
	.dbline 226
; 	 set_answer;
	sbi 0x03,7
	.dbline 227
; 	 wait;
	nop
	 nop
L25:
	.dbline 229
L26:
	.dbline 228
; 	 while(ask==0)
	sbis 0x1,6
	rjmp L25
	.dbline 230
; 	      ;		  
; 	 clr_answer; 
	cbi 0x03,7
	.dbline -2
	.dbline 231
;     }
L21:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbfunc s ico_tran _ico_tran fI
;              j -> R20
;              i -> R22
;          ico_p -> R10,R11
;              y -> R12
;              x -> R14
	.even
_ico_tran::
	xcall push_gset5
	mov R12,R18
	mov R14,R16
	ldd R10,y+10
	ldd R11,y+11
	.dbline -1
	.dbline 236
; /*         传送32*32ICO点阵数据到LCD       */
; /*         x:0~15(字节为单位)  y:0~64      */
; /*         ico_p:指向图形数据的指针        */	
; void ico_tran(unsigned char x,unsigned char y,const unsigned char *ico_p)
;      {
	.dbline 238
; 	  unsigned char i,j;
; 	  x+=4;
	mov R24,R14
	subi R24,252	; addi 4
	mov R14,R24
	.dbline 239
; 	  for(j=0;j<32;j++)
	clr R20
	xjmp L32
L29:
	.dbline 240
; 	     {
	.dbline 241
; 		  for(i=0;i<4;i++)
	clr R22
	xjmp L36
L33:
	.dbline 242
	.dbline 243
	ldi R16,243
	xcall _ocmj_write
	.dbline 244
	mov R16,R14
	xcall _ocmj_write
	.dbline 245
	mov R16,R12
	xcall _ocmj_write
	.dbline 246
	mov R30,R10
	mov R31,R11
	lpm
	mov R16,R0
	xcall _ocmj_write
	.dbline 247
	mov R24,R10
	mov R25,R11
	adiw R24,1
	mov R10,R24
	mov R11,R25
	.dbline 248
	inc R14
	.dbline 249
L34:
	.dbline 241
	inc R22
L36:
	.dbline 241
	cpi R22,4
	brlo L33
	.dbline 250
	mov R24,R14
	subi R24,4
	mov R14,R24
	.dbline 251
	inc R12
	.dbline 252
L30:
	.dbline 239
	inc R20
L32:
	.dbline 239
	cpi R20,32
	brlo L29
	.dbline -2
	.dbline 253
; 		    {
; 			 ocmj_write(0xf3);
; 			 ocmj_write(x);
; 			 ocmj_write(y);
; 			 ocmj_write(*ico_p);
; 			 ico_p++;
; 			 x++;
; 			}
; 		  x-=4;
; 		  y++;	
; 		 }
; 	 }
L28:
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r i 22 c
	.dbsym r ico_p 10 pc
	.dbsym r y 12 c
	.dbsym r x 14 c
	.dbfunc s cls _cls fI
;              j -> R20
;              i -> R10
;          width -> R12
;           high -> R22
;              y -> R14,R15
;              x -> y+10
	.even
_cls::
	xcall push_arg4
	xcall push_gset5
	mov R14,R18
	mov R15,R19
	ldd R22,y+14
	ldd R23,y+15
	ldd R12,y+16
	ldd R13,y+17
	.dbline -1
	.dbline 256
; /*      清除屏幕区域      */	 
; void cls(unsigned x,unsigned y,unsigned char high,unsigned char width)
;   {
	.dbline 258
;    unsigned char i,j;
;    x+=2;
	ldd R24,y+10
	ldd R25,y+11
	adiw R24,2
	std y+10,R24
	std y+11,R25
	.dbline 259
;    for(j=0;j<high;j++)
	clr R20
	xjmp L41
L38:
	.dbline 260
;       {
	.dbline 261
;        for(i=0;i<width;i++)
	clr R10
	xjmp L45
L42:
	.dbline 262
	.dbline 263
	ldi R16,240
	xcall _ocmj_write
	.dbline 264
	ldd R16,y+10
	ldd R17,y+11
	xcall _ocmj_write
	.dbline 265
	mov R16,R14
	xcall _ocmj_write
	.dbline 266
	ldi R16,55
	xcall _ocmj_write
	.dbline 267
	ldi R16,90
	xcall _ocmj_write
	.dbline 268
	ldd R24,y+10
	ldd R25,y+11
	adiw R24,1
	std y+10,R24
	std y+11,R25
	.dbline 269
L43:
	.dbline 261
	inc R10
L45:
	.dbline 261
	cp R10,R12
	brlo L42
	.dbline 270
	mov R2,R12
	clr R3
	ldd R0,y+10
	ldd R1,y+11
	sub R0,R2
	sbc R1,R3
	std y+10,R0
	std y+11,R1
	.dbline 271
	mov R24,R14
	mov R25,R15
	adiw R24,1
	mov R14,R24
	mov R15,R25
	.dbline 272
L39:
	.dbline 259
	inc R20
L41:
	.dbline 259
	cp R20,R22
	brlo L38
	.dbline -2
	.dbline 273
;           {
;             ocmj_write(0xf0);
;             ocmj_write(x);
;             ocmj_write(y);
;             ocmj_write(55);
; 			ocmj_write(90);
;             x++;
;            }
;        x-=width;
;        y++;	
;       }
;   }	 
L37:
	xcall pop_gset5
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r i 10 c
	.dbsym r width 12 c
	.dbsym r high 22 c
	.dbsym r y 14 i
	.dbsym l x 10 i
	.dbfunc s bmp_tran _bmp_tran fI
;              j -> R20
;              i -> R10
;          bmp_p -> R12,R13
;          width -> R14
;           high -> R22
;              y -> y+12
;              x -> y+10
	.even
_bmp_tran::
	xcall push_arg4
	xcall push_gset5
	ldd R22,y+14
	ldd R23,y+15
	ldd R14,y+16
	ldd R15,y+17
	ldd R12,y+18
	ldd R13,y+19
	.dbline -1
	.dbline 280
; /*         传送bmp点阵数据到LCD            */
; /*         x:0~15(字节为单位)  y:0~64      */
; /*         bmp_p:指向图形数据的指针        */	
; /*         high:位图高度(点阵行为单位)     */
; /*         width:位图宽度(以字节为单位)

⌨️ 快捷键说明

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