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

📄 1602b_lcd_test.s

📁 用avr的m16产生pwm波控制舵机的程序!
💻 S
📖 第 1 页 / 共 2 页
字号:
	swap R22
	andi R22,#0x0F
	.dbline 104
;    	  LCD_write_char(0,th+48);
	mov R18,R22
	clr R19
	subi R18,208  ; offset = 48
	sbci R19,255
	clr R16
	clr R17
	xcall _LCD_write_char
	.dbline 105
;       LCD_write_char(0,tl+48);
	mov R18,R20
	clr R19
	subi R18,208  ; offset = 48
	sbci R19,255
	clr R16
	clr R17
	xcall _LCD_write_char
	.dbline -2
L7:
	adiw R28,2
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym l i 3 c
	.dbsym r th 22 c
	.dbsym r tl 20 c
	.dbsym r s 10 c
	.dbend
	.dbfunc e main _main fV
;           dout -> y+11
;              i -> y+10
;             aa -> y+9
	.even
_main::
	sbiw R28,12
	.dbline -1
	.dbline 230
;      //date
; }
; //////////////////////////////////////////////////////////////
; //k1接pd0 k2接pd1 k3接pd2
; /*void settime()
; {
; uchar dout=0,i,j,k;
; ret:;
; PORTC  = 0x00;
; DDRC  = 0xff;
; write_data(0x8e,0x00);      //关闭寄存器写保护
; dout=PINC;
; i=((dout&0x40)==0x40);
; delay_nms(100);
; if(i)
; {
; n++;
; t=0;
; LCD_write_char(0x10,0);//光标自动右移
; if(n==15)n=0;}
;  switch(n)
; 	  {
; 		case 1 :dout=PINC;j=((dout&0x80)==0x80);
; 		      if(j)
; 		      { t++;
; 			   write_data(0x80,((read_data(0x81))&0xf0)|t);;
; 			   LCD_set_xy(1,1);
; 			   k=((read_data(0x81))&0xf0);
; 			   LCD_write_char(0,k+48);
; 				 break;//0
; 			  }
; 		       
; 				//else goto ret;
; 		case 2 :dout=PINC;j=((dout&0x80)==0x80);
; 		      if(j)
; 			  { t++;
; 			    write_data(0x80,((read_data(0x81))&0x0f)|(t<<4));
; 				LCD_set_xy(2,1);
; 				k=(read_data(0x81));
; 				k=(k>>4);
; 				LCD_write_char(0,k+48);
; 				break;
; 			  }
; 				//else goto ret;
; 		case 4 :dout=PINC;j=((dout&0x80)==0x80);
; 		      if(j)
; 			  { t++;
; 			   write_data(0x82,((read_data(0x83))&0xf0)|t);
; 			   LCD_set_xy(4,1);
; 			   k=((read_data(0x83))&0xf0);
; 			   LCD_write_char(0,k+48);
; 				break;
; 			  }
; 		case 5 :dout=PINC;j=((dout&0x80)==0x80);
; 		      if(j)
; 			  { t++;
; 			    write_data(0x82,((read_data(0x83))&0x0f)|(t<<4));
; 				LCD_set_xy(5,1);
; 				k=(read_data(0x83));
; 				k=(k>>4);
; 				LCD_write_char(0,k+48);
; 				break;
; 			  }
; 		case 7 :dout=PINC;j=((dout&0x80)==0x80);
; 		      if(j)
; 			  { t++;
; 			    write_data(0x84,((read_data(0x85))&0xf0)|t);
; 				LCD_set_xy(7,1);
; 				k=((read_data(0x85))&0xf0);
; 			   LCD_write_char(0,k+48);
; 				break;
; 			  }
; 		case 8 :dout=PINC;j=((dout&0x80)==0x80);
; 		      if(j)
; 			  { t++;
; 			    write_data(0x84,((read_data(0x85))&0x0f)|(t<<4));
; 				LCD_set_xy(8,1);
; 				k=(read_data(0x85));
; 				k=(k>>4);
; 				LCD_write_char(0,k+48);
; 				break;
; 			  }
; 		case 10 :dout=PINC;j=((dout&0x80)==0x80);
; 		      if(j)
; 			  { t++;
; 			   write_data(0x86,((read_data(0x87))&0xf0)|t);
; 			   LCD_set_xy(10,1);
; 				k=((read_data(0x87))&0xf0);
; 			   LCD_write_char(0,k+48);
; 				break;
; 			  }
; 		case 11 :dout=PINC;j=((dout&0x80)==0x80);
; 		      if(j)
; 			  { t++;
; 			   write_data(0x86,((read_data(0x87))&0x0f)|(t<<4));
; 			   LCD_set_xy(11,1);
; 				k=(read_data(0x87));
; 				k=(k>>4);
; 				LCD_write_char(0,k+48);
; 				break;
; 			  }
; 		case 13 :dout=PINC;j=((dout&0x80)==0x80);
; 		      if(j)
; 			  { t++;
; 			   write_data(0x88,((read_data(0x89))&0xf0)|t);
; 			   LCD_set_xy(13,1);
; 				k=((read_data(0x89))&0xf0);
; 			   LCD_write_char(0,k+48);
; 				break;
; 			  }
; 		case 14 :dout=PINC;j=((dout&0x80)==0x80);
; 		      if(j)
; 			  { t++;
; 			  write_data(0x88,((read_data(0x89))&0x0f)|(t<<4));
; 			  LCD_set_xy(14,1);
; 				k=(read_data(0x89));
; 				k=(k>>4);
; 				LCD_write_char(0,k+48);
; 				break;
; 			  }
; 	   else break;
; 	  }
; }*/
; void main(void)
;   {
	.dbline 231
;      volatile char aa=20,i=0,dout;
	ldi R24,20
	std y+9,R24
	.dbline 231
	clr R2
	std y+10,R2
	.dbline 232
;      OSCCAL=0X95;
	ldi R24,149
	out 0x31,R24
	.dbline 234
; 	 /********************************************/
; 	 CLI();
	cli
	.dbline 235
; 	 PORTD=0x00;
	out 0x12,R2
	.dbline 236
; 	 DDRD |= LCD_DATA | LCD_RW;
	in R24,0x11
	ori R24,248
	out 0x11,R24
	.dbline 237
; 	 DDRD |= LCD_RS   | LCD_EN;
	in R24,0x11
	ori R24,48
	out 0x11,R24
	.dbline 238
; 	 PORTA = 0xc7;//端口设置
	ldi R24,199
	out 0x1b,R24
	.dbline 239
;      DDRA  = 0xff;
	ldi R24,255
	out 0x1a,R24
	.dbline 242
; 	// PORTC  = 0x00;
;      //DDRC  = 0xff;
; 	 init_1302();
	xcall _init_1302
	.dbline 243
; 	 init_1302();
	xcall _init_1302
	.dbline 244
; 	 init_time(0x00,0x58,0x20,0x19,0x04,0x06,0x08);//秒、分、时、日、月、星期、年
	ldi R24,8
	std y+8,R24
	ldi R24,6
	std y+6,R24
	ldi R24,4
	std y+4,R24
	ldi R24,25
	std y+2,R24
	ldi R24,32
	std y+0,R24
	ldi R18,88
	clr R16
	xcall _init_time
	.dbline 245
; 	 DDRC|=0x01;      //置为输出
	sbi 0x14,0
	.dbline 246
; 	 PORTC|=0x01;
	sbi 0x15,0
	.dbline 247
; 	 timer2_init();
	xcall _timer2_init
	.dbline 248
; 	 MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 249
; 	 GICR  = 0x00;
	out 0x3b,R2
	.dbline 250
; 	 TIMSK = 0x40;
	ldi R24,64
	out 0x39,R24
	.dbline 251
;      LCD_init();
	xcall _LCD_init
	.dbline 253
; 	   /*初始化参数*/
; 	 zkb=1500;    
	ldi R24,1500
	ldi R25,5
	sts _zkb+1,R25
	sts _zkb,R24
	.dbline 254
; 	 t1=zkb/20;        
	ldi R18,20
	ldi R19,0
	lds R16,_zkb
	lds R17,_zkb+1
	xcall div16s
	sts _t1+1,R17
	sts _t1,R16
	.dbline 255
; 	 t2=(20000-zkb)/20; 
	lds R2,_zkb
	lds R3,_zkb+1
	ldi R16,20000
	ldi R17,78
	sub R16,R2
	sbc R17,R3
	ldi R18,20
	ldi R19,0
	xcall div16s
	sts _t2+1,R17
	sts _t2,R16
	.dbline 256
; 	 zq=t1;
	lds R2,_t1
	lds R3,_t1+1
	sts _zq+1,R3
	sts _zq,R2
	.dbline 258
; // Global enable interrupts
;     SEI();
	sei
	xjmp L27
L26:
	.dbline 260
;     while(1)
;        {
	.dbline 263
; 	   //settime();
; 	    // showtime();
; 		delay2_nms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay2_nms
	.dbline 264
;          zkb+=aa;
	ldd R2,y+9
	clr R3
	lds R4,_zkb
	lds R5,_zkb+1
	add R4,R2
	adc R5,R3
	sts _zkb+1,R5
	sts _zkb,R4
	.dbline 265
	lds R24,_zkb
	lds R25,_zkb+1
	cpi R24,244
	ldi R30,1
	cpc R25,R30
	breq L31
	lds R24,_zkb
	lds R25,_zkb+1
	cpi R24,196
	ldi R30,9
	cpc R25,R30
	brne L29
L31:
	.dbline 265
;          if(zkb==500||zkb==2500){    //标准应该是1000至2000
	.dbline 266
;           aa=-aa;          
	ldd R2,y+9
	neg R2
	std y+9,R2
	.dbline 267
;         }
L29:
	.dbline 268
	ldi R18,20
	ldi R19,0
	lds R16,_zkb
	lds R17,_zkb+1
	xcall div16s
	sts _t1+1,R17
	sts _t1,R16
	.dbline 269
	lds R2,_zkb
	lds R3,_zkb+1
	ldi R16,20000
	ldi R17,78
	sub R16,R2
	sbc R17,R3
	ldi R18,20
	ldi R19,0
	xcall div16s
	sts _t2+1,R17
	sts _t2,R16
	.dbline 279
L27:
	.dbline 259
	xjmp L26
X2:
	.dbline -2
L25:
	adiw R28,12
	.dbline 0 ; func end
	ret
	.dbsym l dout 11 c
	.dbsym l i 10 c
	.dbsym l aa 9 c
	.dbend
	.dbfunc e delay2_1ms _delay2_1ms fV
;              i -> R16,R17
	.even
_delay2_1ms::
	.dbline -1
	.dbline 282
;         t1=zkb/20;        
;         t2=(20000-zkb)/20;
; 		//////////////////////////////////////////////
;         /* LCD_write_char(0x01,0);      //显示清屏
;          LCD_write_string(3,0,"Welcome");
;          LCD_write_string(1,1,"www.527dz.com!");
;          delay_nms(5000);
;          LCD_write_char(0x01,0);      //显示清屏
;          LCD_write_string(0,0,"Tel:13308844201");
;          LCD_write_string(0,1,"527dz@527dz.com");
;          delay_nms(5000);*/
;        }
;   } 	
; void delay2_1ms(void)//1ms延时函数
; {
	.dbline 284
;   unsigned int i;
;   for (i=0;i<150;i++)
	clr R16
	clr R17
	xjmp L36
L33:
	.dbline 285
	.dbline 286
L34:
	.dbline 284
	subi R16,255  ; offset = 1
	sbci R17,255
L36:
	.dbline 284
	cpi R16,150
	ldi R30,0
	cpc R17,R30
	brlo L33
	.dbline -2
L32:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e delay2_nms _delay2_nms fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay2_nms::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 290
;   {
;   } 
; }   
; 
; void delay2_nms(unsigned int n)//延时n毫秒
; {
	.dbline 292
;   unsigned int i;
;   for (i=0;i<n;i++)//执行n次1毫秒延时
	clr R20
	clr R21
	xjmp L41
L38:
	.dbline 293
	xcall _delay2_1ms
L39:
	.dbline 292
	subi R20,255  ; offset = 1
	sbci R21,255
L41:
	.dbline 292
	cp R20,R22
	cpc R21,R23
	brlo L38
	.dbline -2
L37:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
_t2::
	.blkb 2
	.dbsym e t2 _t2 I
_t1::
	.blkb 2
	.dbsym e t1 _t1 I
_zq::
	.blkb 2
	.dbsym e zq _zq I
_zkb::
	.blkb 2
	.dbsym e zkb _zkb I
	.area data(ram, con, rel)
	.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L24:
	.blkb 7
	.area idata
	.byte 's,'u,'n,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L22:
	.blkb 9
	.area idata
	.byte 's,'a,'t,'u,'r,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L20:
	.blkb 7
	.area idata
	.byte 'f,'r,'i,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L18:
	.blkb 9
	.area idata
	.byte 't,'h,'u,'r,'s,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L16:
	.blkb 10
	.area idata
	.byte 'w,'e,'d,'n,'e,'s,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L14:
	.blkb 8
	.area idata
	.byte 't,'u,'e,'s,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c
L12:
	.blkb 7
	.area idata
	.byte 'm,'o,'n,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile E:\mcu\avr\test\1602_duoji\1602B_LCD_TEST.c

⌨️ 快捷键说明

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