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

📄 main.s

📁 meg16 的所有功能实例
💻 S
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile D:\MYWORK~1\我的小设计\AVR开发板光盘\程序范例\Mega16程序包\8.双机通信实验_M16\main.c
	.dbfunc e Delay_us _Delay_us fV
;           time -> R16,R17
	.even
_Delay_us::
	.dbline -1
	.dbline 12
; //ICC-AVR application builder : 2006-6-20 9:25:59
; // Target : M16
; // Crystal: 1Mhz
; 
; #include <iom16v.h>
; #include <macros.h>
; #include "main.h"
; 
; uint8 Buffer;
; 
; void Delay_us(unsigned int time)
; {
L2:
	.dbline 13
L3:
	.dbline 13
; while(time--);
	movw R2,R16
	subi R16,1
	sbci R17,0
	tst R2
	brne L2
	tst R3
	brne L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r time 16 i
	.dbend
	.dbfunc e Delay_ms _Delay_ms fV
;           time -> R20,R21
	.even
_Delay_ms::
	xcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 17
; }
; 
; void Delay_ms(unsigned int time)
; {
	xjmp L7
L6:
	.dbline 19
	.dbline 20
	ldi R16,10000
	ldi R17,39
	xcall _Delay_us
	.dbline 21
L7:
	.dbline 18
; while(time--)
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L6
	tst R3
	brne L6
X1:
	.dbline -2
L5:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r time 20 i
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 24
; 	{
; 	Delay_us(10000);
; 	}
; }
; void main(void)
; {
	.dbline 25
;  Delay_ms(1);
	ldi R16,1
	ldi R17,0
	xcall _Delay_ms
	.dbline 26
;  SPI_SS_IN;
	cbi 0x17,4
	.dbline 26
	sbi 0x18,4
	.dbline 26
	.dbline 27
;  SPI_DO_OUT;
	sbi 0x17,5
	.dbline 27
	.dbline 28
;  SPI_DI_IN;
	cbi 0x17,6
	.dbline 28
	sbi 0x18,6
	.dbline 28
	.dbline 29
;  SPI_CLK_IN;
	cbi 0x17,7
	.dbline 29
	sbi 0x18,7
	.dbline 29
	.dbline 31
;  
;  uart_init();                 //TART初始化
	xcall _uart_init
	.dbline 32
;  SEI();                       //全局中断使能
	sei
	.dbline 35
;  
;  
;  for(;;)
L10:
	.dbline 36
	.dbline 37
	sbis 0x16,4
	rjmp L10
	.dbline 38
	.dbline 40
	ldi R16,240
	xcall _Spi_Send
	sts _Buffer,R16
	.dbline 42
	xcall _USART_TXD
	.dbline 43
	.dbline 44
	.dbline 35
	.dbline 35
	xjmp L10
X2:
	.dbline -2
L9:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart_init _uart_init fV
	.even
_uart_init::
	.dbline -1
	.dbline 49
;  {
;   if(SS)
;    {
;     
; 	Buffer=Spi_Send(0XF0);
; 	
; 	USART_TXD(Buffer);
;    } 
;  }
; }
; 
; //===============================================================
; void uart_init(void)          //UART初始化
;   { 
	.dbline 52
;     //设置侦格式
; 	//异步,8位数据,无奇偶校验,一个停止位,无倍速
; 	UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
	ldi R24,134
	out 0x20,R24
	.dbline 55
; 	
;     //设置波特率
;     UBRRL= (F_osc/Baud_rate/16-1)%256;
	ldi R24,25
	out 0x9,R24
	.dbline 56
;     UBRRH= (F_osc/Baud_rate/16-1)/256;
	clr R2
	out 0x20,R2
	.dbline 59
; 
; 	//使能接收中断,使能接收,使能发送
;     UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
	ldi R24,152
	out 0xa,R24
	.dbline -2
L16:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e USART_TXD _USART_TXD fV
;           data -> R16
	.even
_USART_TXD::
	.dbline -1
	.dbline 65
;   }
;   
; 
; //===============================================================
; void USART_TXD(uint8 data) //发送采用查询方式
; {
L18:
	.dbline 66
L19:
	.dbline 66
; 	while( !(UCSRA & BIT(UDRE)) );
	sbis 0xb,5
	rjmp L18
	.dbline 67
; 	UDR=data;
	out 0xc,R16
L21:
	.dbline 68
L22:
	.dbline 68
; 	while( !(UCSRA & BIT(TXC )) );
	sbis 0xb,6
	rjmp L21
	.dbline 69
; 	UCSRA|=BIT(TXC);
	sbi 0xb,6
	.dbline -2
L17:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.area vector(rom, abs)
	.org 44
	jmp _USART_RXC
	.area text(rom, con, rel)
	.dbfile D:\MYWORK~1\我的小设计\AVR开发板光盘\程序范例\Mega16程序包\8.双机通信实验_M16\main.c
	.dbfunc e USART_RXC _USART_RXC fV
	.even
_USART_RXC::
	.dbline -1
	.dbline 76
; }
; 
; //=======================================================================
; 
; #pragma interrupt_handler USART_RXC:12
; void USART_RXC(void)
; {
	.dbline -2
L24:
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e Spi_Send _Spi_Send fc
;           temp -> R20
;              i -> R22
;            dat -> R16
	.even
_Spi_Send::
	xcall push_gset2
	.dbline -1
	.dbline 87
; 
; }
; 
; //*****************************************************************************************
; //函数名:Spi_send(uint8 dat)
; //输入:发送的数据
; //输出:无
; //功能描述:SPI从模式发送一个字节,先发送高位(发送的同时接收)
; //*****************************************************************************************
; uint8 Spi_Send(uint8 dat)
; {
	.dbline 89
; 	uint8 i,temp;
; 	temp = 0;
	clr R20
	.dbline 91
; 
; 	for(i=0; i<8; i++)
	clr R22
	xjmp L29
L26:
	.dbline 92
; 	{   
	.dbline 93
; 		if(dat & 0x80)
	sbrs R16,7
	rjmp L30
	.dbline 94
; 		{
	.dbline 95
; 			MOSI_1;
	sbi 0x18,5
	.dbline 95
	.dbline 96
; 		}
	xjmp L31
L30:
	.dbline 97
	cbi 0x18,5
L31:
	.dbline 97
; 		else MOSI_0;
	.dbline 98
; 		dat <<= 1;
	lsl R16
L32:
	.dbline 99
L33:
	.dbline 99
; 		while(!SCK);
	sbis 0x16,7
	rjmp L32
L35:
	.dbline 100
L36:
	.dbline 100
; 		while(SCK);
	sbic 0x16,7
	rjmp L35
	.dbline 102
; 
; 		temp <<= 1;
	lsl R20
	.dbline 103
; 		if(MISO)temp++; 
	sbis 0x16,6
	rjmp L38
	.dbline 103
	inc R20
L38:
	.dbline 105
L27:
	.dbline 91
	inc R22
L29:
	.dbline 91
	cpi R22,8
	brlo L26
	.dbline 106
; 	
; 	}
; 	return temp;
	mov R16,R20
	.dbline -2
L25:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 c
	.dbsym r i 22 c
	.dbsym r dat 16 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\MYWORK~1\我的小设计\AVR开发板光盘\程序范例\Mega16程序包\8.双机通信实验_M16\main.c
_Buffer::
	.blkb 1
	.dbsym e Buffer _Buffer c

⌨️ 快捷键说明

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