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

📄 shuma.s

📁 AVR单片机视频教程的课件和每一次课的源程序是学习AVR单片机的首选 第4节
💻 S
字号:
	.module shuma.c
	.area code(ram, con, rel)
	.area lit(rom, con, rel)
_table::
	.word 63
	.word 6
	.word 91
	.word 79
	.word 102
	.word 109
	.word 125
	.word 7
	.word 127
	.word 111
	.word 119
	.word 124
	.word 57
	.word 94
	.word 121
	.word 113
	.dbfile C:\icc\examples.avr\learn\shumaguan\shuma.c
	.dbsym e table _table A[32:16]I
	.area text(rom, con, rel)
	.dbfile C:\icc\examples.avr\learn\shumaguan\shuma.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 table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
; 		           0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
; void delay(uint MS)		  
; {
	.dbline 12
;  uint i,j;
;  for( i=0;i<MS;i++)
	clr R20
	clr R21
	xjmp L5
L2:
	.dbline 13
	clr R22
	clr R23
	xjmp L9
L6:
	.dbline 13
L7:
	.dbline 13
	subi R22,255  ; offset = 1
	sbci R23,255
L9:
	.dbline 13
	cpi R22,117
	ldi R30,4
	cpc R23,R30
	brlo L6
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 14
;  for(j=0;j<1141;j++);	//1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
; }
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 show _show fV
;            num -> R20
;           data -> R22
	.even
_show::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 17
; 
; void show(uchar data,uchar num)
; {
	.dbline 18
;         PORTB=table[data];
	ldi R24,2
	mul R24,R22
	movw R30,R0
	ldi R24,<_table
	ldi R25,>_table
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	out 0x18,R30
	.dbline 19
;      	PORTA|=BIT(3);//00001000
	sbi 0x1b,3
	.dbline 20
;      	PORTA&=~BIT(3);
	cbi 0x1b,3
	.dbline 22
; 	
; 	PORTB=0XFF;		 
	ldi R24,255
	out 0x18,R24
	.dbline 23
;      	PORTB&=~BIT(num);//0XFE;
	ldi R16,1
	mov R17,R20
	xcall lsl8
	mov R2,R16
	com R2
	in R3,0x18
	and R3,R2
	out 0x18,R3
	.dbline 24
;      	PORTA|=BIT(4);
	sbi 0x1b,4
	.dbline 25
;      	PORTA&=~BIT(4);
	cbi 0x1b,4
	.dbline 26
; 	delay(1);
	ldi R16,1
	ldi R17,0
	xcall _delay
	.dbline -2
	.dbline 27
; }
L10:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r num 20 c
	.dbsym r data 22 c
	.dbend
	.dbfunc e main _main fV
;              j -> R20,R21
;              i -> R22,R23
	.even
_main::
	.dbline -1
	.dbline 29
; void main()
; {
	.dbline 31
;      uint i,j;
;      DDRA=0XFF;
	ldi R24,255
	out 0x1a,R24
	.dbline 32
;      DDRB=0XFF;
	out 0x17,R24
	.dbline 33
;      PORTA|=BIT(6);
	sbi 0x1b,6
	xjmp L13
L12:
	.dbline 43
;      
; /*     PORTB=0X3F;
;      PORTA|=BIT(3);//00001000
;      PORTA&=~BIT(3);
;      
;      PORTB=0XFE;
;      PORTA|=BIT(4);
;      PORTA&=~BIT(4);*/
;      while(1)
;      {
	.dbline 44
;       for(j=0;j<600;j++)
	clr R20
	clr R21
	xjmp L18
L15:
	.dbline 45
;        {
	.dbline 46
;         for(i=0;i<6;i++)
	clr R22
	clr R23
	xjmp L22
L19:
	.dbline 47
	.dbline 48
	mov R18,R22
	ldi R24,100
	ldi R25,0
	push R18
	push R19
	movw R18,R24
	movw R16,R20
	xcall div16u
	movw R2,R16
	pop R19
	pop R18
	movw R16,R22
	add R16,R2
	adc R17,R3
	ldi R24,6
	ldi R25,0
	push R18
	push R19
	movw R18,R24
	xcall mod16u
	pop R19
	pop R18
	xcall _show
	.dbline 49
L20:
	.dbline 46
	subi R22,255  ; offset = 1
	sbci R23,255
L22:
	.dbline 46
	cpi R22,6
	ldi R30,0
	cpc R23,R30
	brlo L19
	.dbline 50
L16:
	.dbline 44
	subi R20,255  ; offset = 1
	sbci R21,255
L18:
	.dbline 44
	cpi R20,88
	ldi R30,2
	cpc R21,R30
	brlo L15
	.dbline 51
L13:
	.dbline 42
	xjmp L12
X0:
	.dbline -2
	.dbline 53
;         {
;  	  show((i+j/100)%6,i);     
;         }
;        }
;      }
; 
; }
L11:
	.dbline 0 ; func end
	ret
	.dbsym r j 20 i
	.dbsym r i 22 i
	.dbend

⌨️ 快捷键说明

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