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

📄 lcd12864.s

📁 用proteus仿真AVR单片机12864LCD,实现波形的实时显示。
💻 S
📖 第 1 页 / 共 5 页
字号:
	ldi R24,4
	out 0x39,R24
	.dbline 104
; 	   {	     	      
	sei
	.dbline -2
L5:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_us _delay_us fV
;           time -> R16,R17
	.even
_delay_us::
	.dbline -1
	.dbline 111
; 	     dis_one_zi(2,1,X26);
; 	     dis_one_zi(2,2,X26);
; 	     dis_one_zi(2,3,X26);
; 	   }
; 	   else
; 	   {
; 	     dis_one_zi(2,1,tu);//汉字:图片3
	.dbline 112
; 	     dis_one_zi(2,2,pian);
	wdr
	xjmp L8
L7:
	.dbline 114
	.dbline 115
	nop
	.dbline 115
	nop
	.dbline 115
	nop
	.dbline 115
	nop
	.dbline 115
	nop
	.dbline 115
	nop
	.dbline 115
	nop
	.dbline 115
	nop
	.dbline 116
L8:
	.dbline 113
; 	     dis_one_abc(2,6,n_3);
	movw R2,R16
	subi R16,1
	sbci R17,0
	tst R2
	brne L7
	tst R3
	brne L7
X0:
	.dbline -2
L6:
	.dbline 0 ; func end
	ret
	.dbsym r time 16 I
	.dbend
	.dbfunc e delay_ms _delay_ms fV
;           time -> R20,R21
	.even
_delay_ms::
	xcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 119
; 	   }	   
; 	  }
; 	  else
; 	  {
; 	     dis_one_zi(2,1,tu);//汉字:图片3
; 	     dis_one_zi(2,2,pian);
	.dbline 120
; 	     dis_one_abc(2,6,n_3);
	wdr
	xjmp L12
L11:
	.dbline 122
	.dbline 123
	ldi R16,1000
	ldi R17,3
	xcall _delay_us
	.dbline 124
L12:
	.dbline 121
; 	  }
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L11
	tst R3
	brne L11
X1:
	.dbline 125
; 	  
; 	  
; 	  
; 	  if(graphy_num==4)
	wdr
	.dbline -2
L10:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r time 20 I
	.dbend
	.dbfunc e lcd_read_code _lcd_read_code fc
;           code -> R20
	.even
_lcd_read_code::
	xcall push_gset1
	.dbline -1
	.dbline 130
; 	  {	   
; 	   if(flash_flag%2==1)
; 	   {	     	      
; 	     dis_one_zi(3,1,X26);
; 	     dis_one_zi(3,2,X26);
	.dbline 132
; 	     dis_one_zi(3,3,X26);
; 		 dis_one_zi(3,4,X26);
	clr R2
	out 0x1a,R2
	.dbline 133
; 	   }
	cbi 0x15,2
	.dbline 134
; 	   else
	nop
	.dbline 135
; 	   {
	sbi 0x15,3
	.dbline 136
; 	     dis_one_zi(3,1,buo);//汉字:波形显示
	nop
	.dbline 137
; 	     dis_one_zi(3,2,xing);
	in R20,0x16
	.dbline 138
; 	     dis_one_zi(3,3,xian);
	sbi 0x15,4
	.dbline 139
; 		 dis_one_zi(3,4,shi);
	ldi R16,1
	ldi R17,0
	xcall _delay_us
	.dbline 140
; 	   }	   
	cbi 0x15,4
	.dbline 141
; 	  }
	ldi R24,255
	out 0x1a,R24
	.dbline 142
; 	  else
	mov R16,R20
	.dbline -2
L14:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r code 20 c
	.dbend
	.dbfunc e judgebusy _judgebusy fV
	.even
_judgebusy::
	.dbline -1
	.dbline 149
; 	  {
; 	    dis_one_zi(3,1,buo);//汉字:波形显示
; 	     dis_one_zi(3,2,xing);
; 	     dis_one_zi(3,3,xian);
; 		 dis_one_zi(3,4,shi);
; 	  }
; 	  
	xjmp L17
L16:
	.dbline 153
	.dbline 156
	wdr
	.dbline 157
L17:
	.dbline 152
; 	  if((enter==1)&&(graphy_num!=0))
; 	  {
; 	   CLRLCD();
	xcall _lcd_read_code
	mov R2,R16
	clr R3
	sbrc R2,7
	rjmp L16
	.dbline -2
L15:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e lcd_write_data _lcd_write_data fV
;           data -> R20
	.even
_lcd_write_data::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 162
; 	   enter=0;	   
; 	   switch(graphy_num)
; 	   {
; //******************************************************************
; 	    case 1:
; 		{
; 	      scroll(tu1);		  
; 		  break;
; 		}
; //******************************************************************
	.dbline 163
; 		case 2:		
	wdr
	.dbline 164
; 		{
	ldi R24,255
	out 0x17,R24
	.dbline 165
; 	      scroll(tu2);		 
	sbi 0x15,2
	.dbline 166
; 		  break;
	nop
	.dbline 167
; 		}
	cbi 0x15,3
	.dbline 168
; //******************************************************************
	nop
	.dbline 169
; 		case 3:
	out 0x18,R20
	.dbline 170
; 		{
	sbi 0x15,4
	.dbline 172
; 	      scroll(tu3);		 
; 		  break;
	ldi R16,1
	ldi R17,0
	xcall _delay_us
	.dbline 173
; 		}
	cbi 0x15,4
	.dbline 174
; //*******************************************************************
	clr R2
	out 0x17,R2
	.dbline 175
;         case 4:
	wdr
	.dbline -2
L19:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r data 20 c
	.dbend
	.dbfunc e lcd_write_code _lcd_write_code fV
;           code -> R20
	.even
_lcd_write_code::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 180
; 		{
; 		  adc_init();
; 		  wave_display();
; 		  break;
; 		}
	.dbline 181
; 	   }
	wdr
	.dbline 182
; 	   graphy_num=0;   	  
	ldi R24,255
	out 0x17,R24
	.dbline 183
; 	   //lcd_init();
	cbi 0x15,2
	.dbline 184
; 	   CLRLCD();
	nop
	.dbline 185
; 	   lcd_write_code(0xc0);	    	  
	cbi 0x15,3
	.dbline 186
; 	  }
	nop
	.dbline 187
; 	  WDR(); 
	out 0x18,R20
	.dbline 188
; 	}
	sbi 0x15,4
	.dbline 190
; 
; }
	ldi R16,1
	ldi R17,0
	xcall _delay_us
	.dbline 191
; //***********************************************************************
	cbi 0x15,4
	.dbline 192
; #pragma interrupt_handler int0_isr:2
	clr R2
	out 0x17,R2
	.dbline 193
; void int0_isr(void)
	wdr
	.dbline -2
L20:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r code 20 c
	.dbend
	.dbfunc e dis_one_zi _dis_one_zi fV
;         column -> R22
;            row -> R10
;              i -> R20
;    po_to_flash -> R12,R13
;          y_add -> R20
;          x_add -> R22
	.even
_dis_one_zi::
	xcall push_gset4
	mov R20,R18
	mov R22,R16
	ldd R12,y+8
	ldd R13,y+9
	.dbline -1
	.dbline 200
; {
;  //external interupt on INT0
;  WDR();
;  GICR=0X40;     //清除INT0中断,延时20MS判断是否为干扰;
;  delay_ms(20); 
;  if((PIND&0x04)==0x00)
;  {
	.dbline 203
;   if(hanzi_flag==1)
;   {
;     graphy_num++;
	ldi R24,2
	mul R24,R22
	mov R24,R0
	subi R24,72    ; addi 184
	mov R10,R24
	.dbline 204
; 	TCNT1H = 0xF3; //counter high value
	cpi R20,4
	brsh L22
	mov R22,R20
	clr R23
	xjmp L23
L22:
	mov R22,R20
	clr R23
	subi R22,4
	sbci R23,0
L23:
	ldi R16,16
	ldi R17,0
	movw R18,R22
	xcall empy16s
	mov R22,R16
	subi R22,192  ; offset = 64
	sbci R23,255
	.dbline 205
;     TCNT1L = 0xCB; //counter low value
	cpi R20,4
	brsh L24
	.dbline 206
; 	if(graphy_num==5)
	.dbline 207
; 	{
	sbi 0x15,1
	.dbline 208
; 	  graphy_num=0;
L24:
	.dbline 209
; 	}
	cpi R20,4
	brlo L26
	.dbline 210
;   }
	.dbline 211
;   if(graphy_flag==1)
	sbi 0x15,0
	.dbline 212
;   {
L26:
	.dbline 214
;     graphy_flag=0;
; 	hanzi_flag=1;
	mov R16,R10
	xcall _lcd_write_code
	.dbline 215
;   }
	mov R16,R22
	xcall _lcd_write_code
	.dbline 216
;  }
	clr R20
	xjmp L31
L28:
	.dbline 217
;  while((PIND&0x04)==0x00)//判断按键是否释放;
	.dbline 218
;  {
	cpi R20,16
	brne L32
	.dbline 219
;   WDR();      
	.dbline 220
;  }
	mov R16,R10
	subi R16,255    ; addi 1
	xcall _lcd_write_code
	.dbline 221
;  GICR=0XC0;
	mov R16,R22
	xcall _lcd_write_code
	.dbline 222
; }
L32:
	.dbline 223
	movw R2,R12
	movw R24,R2
	adiw R24,1
	movw R12,R24
	movw R30,R2
	lpm R16,Z
	xcall _lcd_write_data
	.dbline 224
L29:
	.dbline 216
	inc R20
L31:
	.dbline 216
	cpi R20,32
	brlo L28
	.dbline 225
; 
; 
; #pragma interrupt_handler int1_isr:3
	cbi 0x15,0
	.dbline 226
; void int1_isr(void)//确认键;
	cbi 0x15,1
	.dbline 227
; {
	wdr
	.dbline -2
L21:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r column 22 c
	.dbsym r row 10 c
	.dbsym r i 20 c
	.dbsym r po_to_flash 12 pkc
	.dbsym r y_add 20 c
	.dbsym r x_add 22 c
	.dbend
	.dbfunc e dis_one_abc _dis_one_abc fV
;         column -> R22
;            row -> R10
;              i -> R20
;    po_to_flash -> R12,R13
;          y_add -> R20
;          x_add -> R22
	.even
_dis_one_abc::
	xcall push_gset4
	mov R20,R18
	mov R22,R16
	ldd R12,y+8
	ldd R13,y+9
	.dbline -1
	.dbline 234
;  //external interupt on INT1
;  WDR();
;  GICR=0X80;
;  delay_ms(20); 
;  if((PIND&0x08)==0x00)
;  {
;    if(graphy_num!=0)
	.dbline 237
;    {
;      enter=1;
; 	 hanzi_flag=0;
	ldi R24,2
	mul R24,R22
	mov R24,R0
	subi R24,72    ; addi 184
	mov R10,R24
	.dbline 238
; 	 graphy_flag=1;
	cpi R20,8
	brsh L35
	mov R22,R20
	clr R23
	xjmp L36
L35:
	mov R22,R20
	clr R23
	subi R22,8
	sbci R23,0
L36:
	ldi R16,8
	ldi R17,0
	movw R18,R22
	xcall empy16s
	mov R22,R16
	subi R22,192  ; offset = 64
	sbci R23,255
	.dbline 239
;    }
	cpi R20,8
	brsh L37
	.dbline 240
;  }
	.dbline 241
;  while((PIND&0x08)==0x00)
	sbi 0x15,1
	.dbline 242
;  {
L37:
	.dbline 243
;   WDR();
	cpi R20,8
	brlo L39
	.dbline 244
;  }
	.dbline 245
;  GICR=0XC0;
	sbi 0x15,0
	.dbline 246
; }
L39:
	.dbline 247
; 
	mov R16,R10
	xcall _lcd_write_code
	.dbline 248
; 
	mov R16,R22
	xcall _lcd_write_code
	.dbline 249
; #pragma interrupt_handler timer1_ovf_isr:9
	clr R20
	xjmp L44
L41:
	.dbline 250
; void timer1_ovf_isr(void)
	.dbline 251
; {
	cpi R20,8
	brne L45
	.dbline 252
;  //TIMER1 has overflowed
	.dbline 253
;  WDR();
	mov R16,R10
	subi R16,255    ; addi 1
	xcall _lcd_write_code
	.dbline 254
;  flash_flag++;
	mov R16,R22
	xcall _lcd_write_code
	.dbline 255
;  if(graphy_num!=0)//只在选择状态下开定时器;
L45:
	.dbline 256
	movw R2,R12
	movw R24,R2
	adiw R24,1
	movw R12,R24
	movw R30,R2
	lpm R16,Z
	xcall _lcd_write_data
	.dbline 257
L42:
	.dbline 249
	inc R20
L44:
	.dbline 249
	cpi R20,16
	brlo L41
	.dbline 258
;  {
;    TCNT1H = 0xF3; //reload counter high value
;    TCNT1L = 0xCB; //reload counter low value
	cbi 0x15,0
	.dbline 259
;  }
	cbi 0x15,1
	.dbline 260
;  WDR();
	wdr
	.dbline -2
L34:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r column 22 c
	.dbsym r row 10 c
	.dbsym r i 20 c
	.dbsym r po_to_flash 12 pkc
	.dbsym r y_add 20 c
	.dbsym r x_add 22 c
	.dbend
	.dbfunc e dis_one_ban_zi _dis_one_ban_zi fV
;              e -> R20
;              w -> R22
;              j -> R10
;              i -> R12
;    po_to_flash -> R14,R15
;          k_add -> y+10
;          y_add -> R12
;          x_add -> R22
	.even
_dis_one_ban_zi::
	xcall push_gset5
	mov R12,R18
	mov R22,R16
	ldd R14,y+12
	ldd R15,y+13
	.dbline -1
	.dbline 265
; }
; 
; #pragma interrupt_handler adc_isr:15
; void adc_isr(void)
; {
	.dbline 268
;  WDR();
;  //conversion complete, read value (int) using...
;   //value=ADCL;            //Read 8 low bits first (important)
	ldd R0,y+10
	tst R0
	brne L48
	.dbline 268
	.dbline 268
	clr R20
	.dbline 268
L48:
	.dbline 269
;   //value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
	ldd R24,y+10
	cpi R24,1
	brne L50
	.dbline 269
	.dbline 269
	ldi R20,8
	.dbline 269
L50:
	.dbline 270
;   //delay_us(50);
	ldi R24,2
	mul R24,R22
	mov R24,R0
	subi R24,72    ; addi 184
	mov R10,R24
	.dbline 271
;  adc_value=ADC&0X3FF;
	mov R24,R12
	cpi R24,4
	brsh L52
	mov R22,R24
	clr R23
	xjmp L53
L52:
	mov R22,R12
	clr R23
	subi R22,4
	sbci R23,0
L53:
	ldi R16,16
	ldi R17,0
	movw R18,R22
	xcall empy16s
	mov R22,R16
	subi R22,192  ; offset = 64
	sbci R23,255
	.dbline 272
;  adc_value=(adc_value>>4);
	mov R24,R12
	cpi R24,4
	brsh L54
	.dbline 273
;  if(hanzi_flag==0)// 只在显示波形的时候开AD
	.dbline 274
;  {ADCSRA = 0xCD;} 
	sbi 0x15,1
	.dbline 275
; }
L54:
	.dbline 276
; }
	mov R24,R12
	cpi R24,4
	brlo L56
	.dbline 277
; }
	.dbline 278
; }
	sbi 0x15,0
	.dbline 279
; }
L56:
	.dbline 280
; }
	mov R16,R10
	xcall _lcd_write_code
	.dbline 281
; }
	mov R16,R22
	add R16,R20
	xcall _lcd_write_code
	.dbline 282
; }
	clr R12
	xjmp L61
L58:
	.dbline 283
; }
	.dbline 284
; }
	mov R24,R12
	cpi R24,8
	brne L62
	.dbline 285
; }
	.dbline 286
; }
	mov R16,R10
	subi R16,255    ; addi 1
	xcall _lcd_write_code
	.dbline 287
; }
	mov R16,R22
	add R16,R20
	xcall _lcd_write_code
	.dbline 288
; }
L62:
	.dbline 289
	movw R2,R14
	movw R24,R2
	adiw R24,1
	movw R14,R24
	movw R30,R2
	lpm R16,Z
	xcall _lcd_write_data
	.dbline 290
L59:
	.dbline 282
	inc R12
L61:
	.dbline 282
	mov R24,R12
	cpi R24,16
	brlo L58
	.dbline 291
; }
; }
; }
	cbi 0x15,0
	.dbline 292
; }
	cbi 0x15,1
	.dbline 293
; }
	wdr
	.dbline -2
L47:
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r e 20 c
	.dbsym r w 22 c
	.dbsym r j 10 c
	.dbsym r i 12 c
	.dbsym r po_to_flash 14 pkc
	.dbsym l k_add 10 c
	.dbsym r y_add 12 c
	.dbsym r x_add 22 c
	.dbend
	.dbfunc e CLRLCD _CLRLCD fV
;              n -> R20
;              m -> R22
	.even
_CLRLCD::
	xcall push_gset2
	sbiw R28,2
	.dbline -1
	.dbline 298
; }
; }
; }
; }
; }
	.dbline 300
; }
; }
	clr R20
	xjmp L68
L65:
	.dbline 301
; }
	.dbline 302
; }
	clr R22
	xjmp L72
L69:
	.dbline 303
	.dbline 304
	ldi R24,<_X26
	ldi R25,>_X26
	sts _p_to_flash+1,R25
	sts _p_to_flash,R24
	.dbline 305
	movw R2,R24
	std y+1,R3
	std y+0,R2
	mov R18,R22
	mov R16,R20
	xcall _dis_one_zi
	.dbline 306
	wdr
	.dbline 307
L70:
	.dbline 302
	inc R22
L72:
	.dbline 302
	cpi R22,8
	brlo L69
	.dbline 308
L66:
	.dbline 300
	inc R20
L68:
	.dbline 300
	cpi R20,4
	brlo L65
	.dbline -2
L64:
	adiw R28,2
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r n 20 c
	.dbsym r m 22 c
	.dbend
	.dbfunc e lcd_init _lcd_init fV
	.even
_lcd_init::
	.dbline -1
	.dbline 312
; }
; }
; }
; }
; }
; }
; }
; }
; }
; }
	.dbline 313
; }
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 315
; }
; }
	ldi R16,63
	xcall _lcd_write_code
	.dbline 317
; }
; }
	ldi R16,192
	xcall _lcd_write_code
	.dbline 319
; }
; }
	ldi R16,184
	xcall _lcd_write_code
	.dbline 321
; }
; }
	ldi R16,64
	xcall _lcd_write_code
	.dbl

⌨️ 快捷键说明

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