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

📄 lesson6.s

📁 AVR单片机C语言编程及应用实例 适合初学者的学习研究 其中包含Atmega16中文资料及Protel部分电路图
💻 S
字号:
	.module lesson6.c
	.area code(ram, con, rel)
	.area lit(rom, con, rel)
_table::
	.byte 'I,32,'L,'I,'K,'E,32,'A,'V,'R,32,33,0
	.dbfile I:\AVR视频教程\视频教程\lesson6\chengxu\lesson6\lesson6.c
	.dbsym e table _table A[13:13]c
_table1::
	.byte 'W,'W,'W,46,'T,'X,'M,'C,'U,46,'C,'O,'M,0
	.dbsym e table1 _table1 A[14:14]c
	.area text(rom, con, rel)
	.dbfile I:\AVR视频教程\视频教程\lesson6\chengxu\lesson6\lesson6.c
	.dbfunc e delay _delay fV
;              i -> R20,R21
;              j -> R22,R23
;             ms -> R16,R17
	.even
_delay::
	xcall push_gset2
	.dbline -1
	.dbline 10
; #include <iom16v.h>
; #include <macros.h>
; #define  uchar unsigned char
; #define  uint  unsigned int
; #pragma data:code 
; const uchar table[]="I LIKE AVR !";
; const uchar table1[]="WWW.TXMCU.COM";
; 
; void delay(uint ms)
; {
	.dbline 12
;         uint i,j;
; 	for(i=0;i<ms;i++)
	clr R20
	clr R21
	xjmp L5
L2:
	.dbline 13
; 	   {
	.dbline 14
	clr R22
	clr R23
	xjmp L9
L6:
	.dbline 14
L7:
	.dbline 14
	subi R22,255  ; offset = 1
	sbci R23,255
L9:
	.dbline 14
	cpi R22,117
	ldi R30,4
	cpc R23,R30
	brlo L6
	.dbline 15
L3:
	.dbline 12
	subi R20,255  ; offset = 1
	sbci R21,255
L5:
	.dbline 12
	cp R20,R16
	cpc R21,R17
	brlo L2
	.dbline -2
	.dbline 16
; 	   for(j=0;j<1141;j++);
;        }
; }
L1:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r j 22 i
	.dbsym r ms 16 i
	.dbend
	.dbfunc e write_com _write_com fV
;            com -> R20
	.even
_write_com::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 18
; void write_com(uchar com)
; {
	.dbline 19
;        PORTD&=~BIT(4);
	cbi 0x12,4
	.dbline 20
; 	   PORTD&=~BIT(5);
	cbi 0x12,5
	.dbline 21
; 	   PORTB=com;
	out 0x18,R20
	.dbline 22
; 	   PORTD|=BIT(6);
	sbi 0x12,6
	.dbline 23
; 	   delay(1);
	ldi R16,1
	ldi R17,0
	xcall _delay
	.dbline 24
; 	   PORTD&=~BIT(6);
	cbi 0x12,6
	.dbline -2
	.dbline 25
; }
L10:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r com 20 c
	.dbend
	.dbfunc e write_dat _write_dat fV
;            dat -> R20
	.even
_write_dat::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 28
; 
; void write_dat(uchar dat)
; {     
	.dbline 29
;        PORTD|=BIT(4);
	sbi 0x12,4
	.dbline 30
; 	   PORTD&=~BIT(5);
	cbi 0x12,5
	.dbline 31
; 	   PORTB=dat;
	out 0x18,R20
	.dbline 32
; 	   PORTD|=BIT(6);
	sbi 0x12,6
	.dbline 33
; 	   delay(1);
	ldi R16,1
	ldi R17,0
	xcall _delay
	.dbline 34
; 	   PORTD&=~BIT(6);
	cbi 0x12,6
	.dbline -2
	.dbline 36
; 
; }
L11:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r dat 20 c
	.dbend
	.dbfunc e main _main fV
;              i -> R20
	.even
_main::
	.dbline -1
	.dbline 38
; void  main()
; {
	.dbline 40
;      uchar i;
; 	  DDRB=0XFF;
	ldi R24,255
	out 0x17,R24
	.dbline 41
; 	  DDRD|=BIT(4)|BIT(5)|BIT(6);
	in R24,0x11
	ori R24,112
	out 0x11,R24
	.dbline 42
; 	  PORTD&=~BIT(6);
	cbi 0x12,6
	.dbline 44
; 	  
; 	  write_com(0X38);
	ldi R16,56
	xcall _write_com
	.dbline 45
; 	  delay(5);
	ldi R16,5
	ldi R17,0
	xcall _delay
	.dbline 46
; 	  write_com(0X01);
	ldi R16,1
	xcall _write_com
	.dbline 47
; 	  delay(5);
	ldi R16,5
	ldi R17,0
	xcall _delay
	.dbline 48
; 	  write_com(0X0C);
	ldi R16,12
	xcall _write_com
	.dbline 49
; 	  delay(5);
	ldi R16,5
	ldi R17,0
	xcall _delay
	.dbline 50
; 	  write_com(0X06);
	ldi R16,6
	xcall _write_com
	.dbline 51
; 	  delay(5);
	ldi R16,5
	ldi R17,0
	xcall _delay
	.dbline 52
; 	  write_com(0X80+0X10);
	ldi R16,144
	xcall _write_com
	.dbline 53
; 	  delay(5);
	ldi R16,5
	ldi R17,0
	xcall _delay
	.dbline 54
; 	  for(i=0;i<12;i++)
	clr R20
	xjmp L16
L13:
	.dbline 55
	.dbline 56
	ldi R24,<_table
	ldi R25,>_table
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	lpm R16,Z
	xcall _write_dat
	.dbline 57
	ldi R16,5
	ldi R17,0
	xcall _delay
	.dbline 58
L14:
	.dbline 54
	inc R20
L16:
	.dbline 54
	cpi R20,12
	brlo L13
	.dbline 59
; 	  {
; 	     write_dat(table[i]);
; 		 delay(5);
; 	  }
; 	  write_com(0X80+0X50);
	ldi R16,208
	xcall _write_com
	.dbline 60
; 	  delay(5);
	ldi R16,5
	ldi R17,0
	xcall _delay
	.dbline 61
; 	    for(i=0;i<13;i++)
	clr R20
	xjmp L20
L17:
	.dbline 62
	.dbline 63
	ldi R24,<_table1
	ldi R25,>_table1
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	lpm R16,Z
	xcall _write_dat
	.dbline 64
	ldi R16,5
	ldi R17,0
	xcall _delay
	.dbline 65
L18:
	.dbline 61
	inc R20
L20:
	.dbline 61
	cpi R20,13
	brlo L17
	.dbline 66
; 	  {
; 	     write_dat(table1[i]);
; 		 delay(5);
; 	  }
; 	  for(i=0;i<16;i++)
	clr R20
	xjmp L24
L21:
	.dbline 67
	.dbline 68
	ldi R16,24
	xcall _write_com
	.dbline 69
	ldi R16,500
	ldi R17,1
	xcall _delay
	.dbline 70
L22:
	.dbline 66
	inc R20
L24:
	.dbline 66
	cpi R20,16
	brlo L21
	.dbline -2
	.dbline 72
; 	  {
; 	     write_com(0X18);
; 		 delay(500);
; 	  }
; 	  
; }
L12:
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend

⌨️ 快捷键说明

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