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

📄 uart.s

📁 万能遥控器解码
💻 S
字号:
	.module uart.c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator.27F5F4061F03467\桌面\uart\uart.c
	.dbfunc e delay_nus _delay_nus fV
;              i -> R20,R21
;              n -> R16,R17
	.even
_delay_nus::
	st -y,R20
	st -y,R21
	.dbline -1
	.dbline 11
; //ICC-AVR application builder : 2008-8-5 14:38:41
; // Target : M8515
; // Crystal: 8.0000Mhz
; 
; #include <iom8515v.h>
; #include <macros.h>
; 
; #define uchar unsigned char
; #define uint unsigned int
; void delay_nus(unsigned int n)//n微秒延时函数 
; { 
	.dbline 13
; unsigned int i; 
; for (i=0;i<n;i++) 
	clr R20
	clr R21
	rjmp L5
L2:
	.dbline 14
;   { 
	.dbline 15
;       asm("nop"); 
	nop
	.dbline 16
;   } 
L3:
	.dbline 13
	subi R20,255  ; offset = 1
	sbci R21,255
L5:
	.dbline 13
	cp R20,R16
	cpc R21,R17
	brlo L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r i 20 i
	.dbsym r n 16 i
	.dbend
	.dbfunc e delay_nms _delay_nms fV
;              i -> R20,R21
;              n -> R10,R11
	.even
_delay_nms::
	rcall push_xgset300C
	movw R10,R16
	.dbline -1
	.dbline 19
; } 
; void delay_nms(unsigned int n)//n毫秒延时函数 
; { 
	.dbline 21
;   unsigned int i; 
;   for (i=0;i<n;i++) //执行n次1毫秒延时 
	clr R20
	clr R21
	rjmp L10
L7:
	.dbline 22
;   delay_nus(1000);  
	ldi R16,1000
	ldi R17,3
	rcall _delay_nus
L8:
	.dbline 21
	subi R20,255  ; offset = 1
	sbci R21,255
L10:
	.dbline 21
	cp R20,R10
	cpc R21,R11
	brlo L7
X1:
	.dbline -2
L6:
	.dbline 0 ; func end
	rjmp pop_xgset300C
	.dbsym r i 20 i
	.dbsym r n 10 i
	.dbend
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 25
; }             
; void port_init(void)
; {
	.dbline 26
;  PORTA = 0x00;
	clr R2
	out 0x1b,R2
	.dbline 27
;  DDRA  = 0x00;
	out 0x1a,R2
	.dbline 28
;  PORTB = 0x00;
	out 0x18,R2
	.dbline 29
;  DDRB  = 0x00;
	out 0x17,R2
	.dbline 30
;  PORTC = 0x00;
	out 0x15,R2
	.dbline 31
;  DDRC  = 0x00;
	out 0x14,R2
	.dbline 32
;  PORTD = 0x00;
	out 0x12,R2
	.dbline 33
;  DDRD  = 0x00; 
	out 0x11,R2
	.dbline 34
;  PORTE = 0x00;
	out 0x7,R2
	.dbline 35
;  DDRE  = 0x00; 
	out 0x6,R2
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart0_init _uart0_init fV
	.even
_uart0_init::
	.dbline -1
	.dbline 42
; }
; 
; //UART0 initialize
; // desired baud rate: 9600
; // actual: baud rate:9615 (0.2%)
; void uart0_init(void)
; {
	.dbline 43
;  UCSRB = 0x00; //disable while setting baud rate
	clr R2
	out 0xa,R2
	.dbline 44
;  UCSRA = 0x00;
	out 0xb,R2
	.dbline 45
;  UCSRC = BIT(URSEL) | 0x26;
	ldi R24,166
	out 0x20,R24
	.dbline 46
;  UBRRL = 0x33; //set baud rate lo
	ldi R24,51
	out 0x9,R24
	.dbline 47
;  UBRRH = 0x00; //set baud rate hi
	out 0x20,R2
	.dbline 48
;  UCSRB = 0x18;
	ldi R24,24
	out 0xa,R24
	.dbline -2
L12:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e sendchar _sendchar fV
;            num -> R16
	.even
_sendchar::
	.dbline -1
	.dbline 53
; }
; 
; 
; void sendchar(uchar num)
;   { 	   
	.dbline 54
;       UDR=num;
	out 0xc,R16
L14:
	.dbline 55
;       while(!(UCSRA&(1<<TXC)));
L15:
	.dbline 55
	sbis 0xb,6
	rjmp L14
X2:
	.dbline 56
; 	  UCSRA |= (1<<TXC);
	sbi 0xb,6
	.dbline -2
L13:
	.dbline 0 ; func end
	ret
	.dbsym r num 16 c
	.dbend
	.dbfunc e PutChar _PutChar fI
;              c -> R20
	.even
_PutChar::
	st -y,R20
	mov R20,R16
	.dbline -1
	.dbline 59
;   }
; int PutChar(char c)
; {
	.dbline 60
;     if(c == '\n')
	cpi R20,10
	brne L18
X3:
	.dbline 61
;     {
	.dbline 62
;         PutChar('\r');
	ldi R16,13
	rcall _PutChar
	.dbline 63
;     }
L18:
	.dbline 64
;     UDR = c;
	out 0xc,R20
L20:
	.dbline 65
;     while(!(UCSRA &(1<<UDRE)));
L21:
	.dbline 65
	sbis 0xb,5
	rjmp L20
X4:
	.dbline 66
;     UCSRA |= (1<<UDRE);
	sbi 0xb,5
	.dbline 67
;     return 0;
	clr R16
	clr R17
	.dbline -2
L17:
	.dbline 0 ; func end
	ld R20,y+
	ret
	.dbsym r c 20 c
	.dbend
	.dbfunc e main _main fV
;              j -> <dead>
;              i -> <dead>
	.even
_main::
	.dbline -1
	.dbline 71
; }
; 
; void main(void)
; {
	.dbline 73
;     uchar i,j;
;     uart0_init();
	rcall _uart0_init
	rjmp L25
L24:
	.dbline 75
; while(1)
;    {
	.dbline 76
;      delay_nms(500);
	ldi R16,500
	ldi R17,1
	rcall _delay_nms
	.dbline 77
; 	 sendchar(0xaa);
	ldi R16,170
	rcall _sendchar
	.dbline 78
;    }
L25:
	.dbline 74
	rjmp L24
X5:
	.dbline -2
L23:
	.dbline 0 ; func end
	ret
	.dbsym l j 1 c
	.dbsym l i 1 c
	.dbend
; 	;
; 	
; }

⌨️ 快捷键说明

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