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

📄 main.s

📁 bootloader
💻 S
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 8
; //ICC-AVR application builder : 2006-11-11 12:55:39
; // Target : M16
; // Crystal: 7.3728Mhz
; 
; #include "config.h"
; 
; void port_init(void)
; {
	.dbline 9
;  PORTA = 0x03;
	ldi R24,3
	out 0x1b,R24
	.dbline 10
;  DDRA  = 0x03;
	out 0x1a,R24
	.dbline 11
;  PORTB = 0x00;
	clr R2
	out 0x18,R2
	.dbline 12
;  DDRB  = 0x00;
	out 0x17,R2
	.dbline 13
;  PORTC = 0x00; //m103 output only
	out 0x15,R2
	.dbline 14
;  DDRC  = 0x00;
	out 0x14,R2
	.dbline 15
;  PORTD = 0x00;
	out 0x12,R2
	.dbline 16
;  DDRD  = 0x00;
	out 0x11,R2
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 21
; }
; 
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
	.dbline 23
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
	cli
	.dbline 24
;  port_init();
	xcall _port_init
	.dbline 26
; 
;  MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 27
;  GICR  = 0x00;
	out 0x3b,R2
	.dbline 28
;  TIMSK = 0x00; //timer interrupt sources
	out 0x39,R2
	.dbline 29
;  Com_init();  //串行口初始化
	xcall _Com_init
	.dbline 30
;  SEI(); //re-enable interrupts
	sei
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Delay _Delay fV
;              i -> R16
;              j -> R18
	.even
_Delay::
	.dbline -1
	.dbline 35
;  //all peripherals are now initialized
; }
; 
; void Delay(void)  //软件延时
; {
	.dbline 37
;  unsigned char i,j;
;   for(i=200;i>0;i--)
	ldi R16,200
	xjmp L8
L5:
	.dbline 38
;    {
	.dbline 39
;    	for(j=200;j>0;j--)
	ldi R18,200
	xjmp L12
L9:
	.dbline 40
L10:
	.dbline 39
	dec R18
L12:
	.dbline 39
	clr R2
	cp R2,R18
	brlo L9
	.dbline 41
; 	;
; 	for(j=200;j>0;j--)
	ldi R18,200
	xjmp L16
L13:
	.dbline 42
L14:
	.dbline 41
	dec R18
L16:
	.dbline 41
	clr R2
	cp R2,R18
	brlo L13
	.dbline 43
L6:
	.dbline 37
	dec R16
L8:
	.dbline 37
	clr R2
	cp R2,R16
	brlo L5
	.dbline -2
L4:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 c
	.dbsym r j 18 c
	.dbend
	.dbfunc e main _main fV
;       SIO_buff -> y+2
	.even
_main::
	sbiw R28,6
	.dbline -1
	.dbline 47
; 	;
;    }
; }
; 
; void main(void)
; {
	.dbline 49
;   uint8 SIO_buff[4];  //定义串口数据缓冲区
;   init_devices();
	xcall _init_devices
	.dbline 51
;   //指示单片机正常开始工作,一亮,二亮,都亮,都灭
;   PORTA = 0x02;       //1脚为高,0脚为低,0脚灯亮
	ldi R24,2
	out 0x1b,R24
	.dbline 52
;   Delay();           //延时
	xcall _Delay
	.dbline 53
;   PORTA = 0x01;	     //0脚为高,1脚为低,1脚灯亮
	ldi R24,1
	out 0x1b,R24
	.dbline 54
;   Delay();           //延时
	xcall _Delay
	.dbline 55
;   PORTA = 0x00;      //同时亮
	clr R2
	out 0x1b,R2
	.dbline 56
;   Delay();           //延时
	xcall _Delay
	.dbline 57
;   PORTA = 0x03;      //同时灭
	ldi R24,3
	out 0x1b,R24
	.dbline 59
;   
;   Com_putstring ("ww",2,&RTbuf_UART0); //输出一个字符串到串行口
	ldi R24,<_RTbuf_UART0
	ldi R25,>_RTbuf_UART0
	std y+1,R25
	std y+0,R24
	ldi R18,2
	ldi R16,<L18
	ldi R17,>L18
	xcall _Com_putstring
	xjmp L20
L19:
	.dbline 62
; 
;   while(1)
;   {
	.dbline 63
;    if(Com_R_count(&RTbuf_UART0)!=0)
	ldi R16,<_RTbuf_UART0
	ldi R17,>_RTbuf_UART0
	xcall _Com_R_count
	tst R16
	breq L22
	.dbline 64
;      {
	.dbline 65
; 	     Com_getstring (SIO_buff,1,&RTbuf_UART0);
	ldi R24,<_RTbuf_UART0
	ldi R25,>_RTbuf_UART0
	std y+1,R25
	std y+0,R24
	ldi R18,1
	movw R16,R28
	subi R16,254  ; offset = 2
	sbci R17,255
	xcall _Com_getstring
	.dbline 66
; 		 Com_Rbuf_Clear(&RTbuf_UART0); //清空buffer
	ldi R16,<_RTbuf_UART0
	ldi R17,>_RTbuf_UART0
	xcall _Com_Rbuf_Clear
	.dbline 67
; 		 if(SIO_buff[0]==1)  //接收到一个一
	ldd R24,y+2
	cpi R24,1
	brne L24
	.dbline 68
; 		 {
	.dbline 69
; 		    Com_putstring ("ok!!",4,&RTbuf_UART0); //输出一个字符串到串行口
	ldi R24,<_RTbuf_UART0
	ldi R25,>_RTbuf_UART0
	std y+1,R25
	std y+0,R24
	ldi R18,4
	ldi R16,<L26
	ldi R17,>L26
	xcall _Com_putstring
	.dbline 70
; 		    PORTA = 0x00;      //同时亮
	clr R2
	out 0x1b,R2
	.dbline 71
; 			Delay();           //延时
	xcall _Delay
	.dbline 72
; 			PORTA = 0x03;      //同时灭
	ldi R24,3
	out 0x1b,R24
	.dbline 73
; 		 }
L24:
	.dbline 74
;      } //end of if(Com_R_count(&RTbuf_UART0)!=0)
L22:
	.dbline 75
	xcall _Delay
	.dbline 76
	ldi R24,<_RTbuf_UART0
	ldi R25,>_RTbuf_UART0
	std y+1,R25
	std y+0,R24
	ldi R18,4
	ldi R16,<L27
	ldi R17,>L27
	xcall _Com_putstring
	.dbline 77
L20:
	.dbline 61
	xjmp L19
X0:
	.dbline -2
L17:
	adiw R28,6
	.dbline 0 ; func end
	ret
	.dbsym l SIO_buff 2 A[4:4]c
	.dbend
	.area data(ram, con, rel)
	.dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
L27:
	.blkb 5
	.area idata
	.byte 'w,'w,48,48,0
	.area data(ram, con, rel)
	.dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
L26:
	.blkb 5
	.area idata
	.byte 'o,'k,33,33,0
	.area data(ram, con, rel)
	.dbfile D:\桌面\avr程序设计\串口通讯范例\main.c
L18:
	.blkb 3
	.area idata
	.byte 'w,'w,0
	.area data(ram, con, rel)
	.dbfile D:\桌面\avr程序设计\串口通讯范例\main.c

⌨️ 快捷键说明

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