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

📄 main.s

📁 avr单片机与flash存储器通信程序,调试通过,希望对大家有所帮助.
💻 S
字号:
	.module main.c
	.area lit(rom, con, rel)
_Tab::
	.byte 33,249
	.byte 19,'Q
	.byte 201,'E
	.byte 5,241
	.byte 1,'A
	.byte 129,13
	.byte 39,25
	.byte 7,135
	.dbfile C:\ATMega8515\数码管/ForATmega8515.h
	.dbsym e Tab _Tab A[16:16]kc
	.area text(rom, con, rel)
	.dbfile C:\ATMega8515\数码管/ForATmega8515.h
	.dbfile C:\ATMega8515\数码管\main.c
	.dbfunc e main _main fV
;      softdelay -> R20,R21
;          count -> R22
	.even
_main::
	.dbline -1
	.dbline 8
; #include <iom8515v.h>
; #include"ForATmega8515.h"
; 
; void delay(uint ticks);
; void display(uchar left,uchar right);
; 
; void main()
; {
	.dbline 9
;  uchar count=0;
	clr R22
	.dbline 10
;  uint softdelay=1000;
	ldi R20,1000
	ldi R21,3
	.dbline 11
;  init_devices();
	rcall _init_devices
	rjmp L3
X0:
	.dbline 13
;  while(1)
;  {
L5:
	.dbline 14
	ldi R17,10
	mov R16,R22
	rcall mod8u
	mov R18,R16
	ldi R17,10
	mov R16,R22
	rcall div8u
	rcall _display
L6:
	.dbline 14
;  while(softdelay--)display(count/10,count%10);
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L5
	tst R3
	brne L5
X1:
	.dbline 15
;  softdelay=1000;
	ldi R20,1000
	ldi R21,3
	.dbline 16
;  if(++count==100)count=0;
	mov R24,R22
	subi R24,255    ; addi 1
	mov R22,R24
	cpi R22,100
	brne L8
	.dbline 16
	clr R22
L8:
	.dbline 17
L3:
	.dbline 12
	rjmp L6
X2:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r softdelay 20 i
	.dbsym r count 22 c
	.dbend
	.dbfunc e delay _delay fV
;              i -> R20
;          ticks -> R16,R17
	.even
_delay::
	rcall push_gset1
	.dbline -1
	.dbline 21
;  }
; }
; 
; void delay(uint ticks)
; {
	.dbline 23
	rjmp L14
L11:
	.dbline 23
	ldi R20,200
	rjmp L18
L15:
	.dbline 23
L16:
	.dbline 23
	dec R20
L18:
	.dbline 23
	tst R20
	brne L15
L12:
	.dbline 23
	subi R16,1
	sbci R17,0
L14:
	.dbline 23
;  uchar i;
;  for(;ticks!=0;ticks--)for(i=200;i!=0;i--);
	cpi R16,0
	cpc R16,R17
	brne L11
X3:
	.dbline -2
L10:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r ticks 16 i
	.dbend
	.dbfunc e display _display fV
;          right -> R20
;           left -> R22
	.even
_display::
	rcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 27
; }
; 
; void display(uchar left,uchar right)
; {
	.dbline 28
;  PORTA=Tab[left];//查表显示数码管
	ldi R24,<_Tab
	ldi R25,>_Tab
	mov R30,R22
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	out 0x1b,R30
	.dbline 29
;  PORTC&=~SEG0;  //选通左边的数码管
	cbi 0x15,7
	.dbline 30
;  delay(1);		//延时
	ldi R16,1
	ldi R17,0
	rcall _delay
	.dbline 31
;  PORTC|=SEG0;   //关左边的数码管
	sbi 0x15,7
	.dbline 32
;  PORTA=Tab[right];//查表显示数码管
	ldi R24,<_Tab
	ldi R25,>_Tab
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	out 0x1b,R30
	.dbline 33
;  PORTC&=~SEG1;		//选通右边的数码管			  
	cbi 0x15,6
	.dbline 34
;  delay(1);
	ldi R16,1
	ldi R17,0
	rcall _delay
	.dbline 35
;  PORTC|=SEG1;    //关右边的数码管
	sbi 0x15,6
	.dbline -2
L19:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r right 20 c
	.dbsym r left 22 c
	.dbend

⌨️ 快捷键说明

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