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

📄 test_pc10_main.s

📁 AVR单片机开发中
💻 S
📖 第 1 页 / 共 4 页
字号:
	.module test_pc10_main.c
	.area data(ram, con, rel)
_char_len::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile H:\m128_test\test_pc10_main.c
	.dbsym e char_len _char_len c
_rob_angle::
	.blkb 4
	.area idata
	.word 0x0,0x0
	.area data(ram, con, rel)
	.dbfile H:\m128_test\test_pc10_main.c
	.dbsym e rob_angle _rob_angle D
_len_test::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile H:\m128_test\test_pc10_main.c
	.dbsym e len_test _len_test I
	.area text(rom, con, rel)
	.dbfile H:\m128_test\test_pc10_main.c
	.dbfunc e delay_1us _delay_1us fV
	.even
_delay_1us::
	.dbline -1
	.dbline 48
; //ICC-AVR application builder : 2005-3-21 10:06:01
; // Target : M128
; // Crystal: 16.000Mhz
; 
; #include <iom128v.h>
; #include <macros.h>
; #include  <stdio.h>
; 
; 
; 
; #define BUFF_SIZE       20
; #define EN_ADDR        	7
; #define CLR_ADDR    	6
; #define CH1    		    1
; #define CH2    		    2
; #define CH3    		    4
; #define DA1    		    8
; #define DA2    		    10
; #define  LIGHT_CN      8
; #define OK          	1
; #define PARAMETER_ERR   0
; #define HBYTE  		    1
; #define LBYTE  		    0
; #define CNT_BASE        0x270
; #define  WRB_BASE	    0x240
; #define FLIGHT_BASE     0x240
; #define GYRO_BASE       0x290
; 
; 
; 
; union  char_int{
;         unsigned char half[2];
;         unsigned int i1;
;     };
; union char_int kk;
; unsigned char send_buffer[BUFF_SIZE];    //发宋缓冲区
; unsigned char  rec0;                     // 接收到的字符
; unsigned char  char_len=0;
; float rob_angle=0.0;
; int left,right;
; long len;
; int  len_test=0;
; //SPI initialize
; // clock rate: 2000000hz
; 
; //call this routine to initialize all peripherals
; void delay_1us(void)                 //1us延时函数
;   {
	.dbline 49
;    asm("nop");
	nop
	.dbline 50
;    asm("nop");
	nop
	.dbline 51
;    asm("nop");
	nop
	.dbline 52
;    asm("nop");
	nop
	.dbline -2
	.dbline 53
;   }
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_nus _delay_nus fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nus::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 56
; 
; void delay_nus(unsigned int n)       //N us延时函数
;   {
	.dbline 57
;    unsigned int i=0;
	clr R20
	clr R21
	.dbline 58
;    for (i=0;i<n;i++)
	xjmp L6
L3:
	.dbline 59
	xcall _delay_1us
L4:
	.dbline 58
	subi R20,255  ; offset = 1
	sbci R21,255
L6:
	.dbline 58
	cp R20,R22
	cpc R21,R23
	brlo L3
	.dbline -2
	.dbline 60
;    delay_1us();
;   }
L2:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
;              i -> R16,R17
	.even
_delay_1ms::
	.dbline -1
	.dbline 63
;   
; void delay_1ms(void)                 //1ms延时函数
;   {
	.dbline 65
	clr R16
	clr R17
	xjmp L11
L8:
	.dbline 65
L9:
	.dbline 65
	subi R16,255  ; offset = 1
	sbci R17,255
L11:
	.dbline 65
;    unsigned int i;
;    for (i=0;i<1716;i++);
	cpi R16,180
	ldi R30,6
	cpc R17,R30
	brlo L8
	.dbline -2
	.dbline 66
;   }
L7:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e delay_nms _delay_nms fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nms::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 69
;   
; void delay_nms(unsigned int n)       //N ms延时函数
;   {
	.dbline 70
;    unsigned int i=0;
	clr R20
	clr R21
	.dbline 71
;    for (i=0;i<n;i++)
	xjmp L16
L13:
	.dbline 72
	xcall _delay_1ms
L14:
	.dbline 71
	subi R20,255  ; offset = 1
	sbci R21,255
L16:
	.dbline 71
	cp R20,R22
	cpc R21,R23
	brlo L13
	.dbline -2
	.dbline 73
;    delay_1ms();
;   }
L12:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e uart0_init _uart0_init fV
	.even
_uart0_init::
	.dbline -1
	.dbline 80
;   
; //////////////////////////////////////////////////////////////////////////////////  
; /////////////////////////////////////////////////////////////////////////////////
; /////////////////////串口UCSR0
; ////////////////////////////////////////////////////////////////////////////////
; void uart0_init(void)
; {
	.dbline 81
;  UCSR0B = 0x00;     //disable while setting baud rate
	clr R2
	out 0xa,R2
	.dbline 82
;  UCSR0A = 0x00;
	out 0xb,R2
	.dbline 83
;  UCSR0C = 0x06;
	ldi R24,6
	sts 149,R24
	.dbline 84
;  UBRR0L = 0x67;     //set baud rate lo
	ldi R24,103
	out 0x9,R24
	.dbline 85
;  UBRR0H = 0x00;     //set baud rate hi
	sts 144,R2
	.dbline 86
;  UCSR0B = 0x18;
	ldi R24,24
	out 0xa,R24
	.dbline -2
	.dbline 89
;  
; 
; }
L17:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e USART_Transmit _USART_Transmit fV
;           data -> R16
	.even
_USART_Transmit::
	.dbline -1
	.dbline 94
; 
; 
; 
; void USART_Transmit( unsigned char data )
; {
L19:
	.dbline 97
L20:
	.dbline 97
;  
; 
; while ( !( UCSR0A & (1<<UDRE0)) );
	sbis 0xb,5
	rjmp L19
	.dbline 99
; 
; UDR0 = data;
	out 0xc,R16
	.dbline -2
	.dbline 103
; 
;  
; 
; }
L18:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.dbfunc e uart1_init _uart1_init fV
	.even
_uart1_init::
	.dbline -1
	.dbline 108
; //////////////////////////////////////////////////////////////////////////////////
; /////////////////串口UCSR1
; ///////////////////////////////////////////////////////////////////////////////////
; void uart1_init(void)
; {
	.dbline 109
;  UCSR1B = 0x00; //disable while setting baud rate
	clr R2
	sts 154,R2
	.dbline 110
;  UCSR1A = 0x00;
	sts 155,R2
	.dbline 111
;  UCSR1C = 0x06;
	ldi R24,6
	sts 157,R24
	.dbline 112
;  UBRR1L = 0x19; //set baud rate lo
	ldi R24,25
	sts 153,R24
	.dbline 113
;  UBRR1H = 0x00; //set baud rate hi
	sts 152,R2
	.dbline 114
;  UCSR1B = 0x1C;
	ldi R24,28
	sts 154,R24
	.dbline -2
	.dbline 115
; }
L22:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e serial_send _serial_send fV
;              i -> R20
;        command -> R16
	.even
_serial_send::
	xcall push_gset1
	.dbline -1
	.dbline 120
; 
; 
; 
; 
; void serial_send(unsigned char command){
	.dbline 121
; unsigned char i=0;
	clr R20
	xjmp L25
X0:
	.dbline 122
;    while( i < char_len){
L27:
	.dbline 123
L28:
	.dbline 123
;    		  while ( !( UCSR1A & (1<<UDRE1)) );
	lds R2,155
	sbrs R2,5
	rjmp L27
	.dbline 124
;    		  UCSR1B &= ~(1<<TXB81);  
	lds R24,154
	andi R24,254
	sts 154,R24
	.dbline 125
; 		  if ( command & 0x01 )
	sbrs R16,0
	rjmp L30
	.dbline 126
;               UCSR1B |= (1<<TXB81);
	lds R24,154
	ori R24,1
	sts 154,R24
L30:
	.dbline 127
	ldi R24,<_send_buffer
	ldi R25,>_send_buffer
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts 156,R2
	.dbline 128
	inc R20
	.dbline 129
L25:
	.dbline 122
	lds R2,_char_len
	cp R20,R2
	brlo L28
	.dbline 131
;    		  UDR1 = send_buffer[i];
;    		  i++;
;    }
; 
;    char_len = 0 ;  
	clr R2
	sts _char_len,R2
	.dbline 132
;    return;  
	.dbline -2
L23:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r command 16 c
	.dbend
	.dbfunc e scanf_int _scanf_int fI
;              i -> R16
	.even
_scanf_int::
	.dbline -1
	.dbline 137
; }
; 
; 
; int scanf_int(void)
; {
	.dbline 138
;    unsigned char i=0;
	clr R16
	xjmp L34
X1:
	.dbline 140
;    
;    while( i < 2){
L36:
	.dbline 141
L37:
	.dbline 141
	lds R2,155
	sbrs R2,7
	rjmp L36
	.dbline 142
	lds R2,154
	sts _rec0,R2
	.dbline 143
	lds R2,156
	sts _rec0,R2
	.dbline 144
	mov R2,R16
	clr R3
	ldi R30,1
	ldi R31,0
	sub R30,R2
	sbc R31,R3
	ldi R24,<_kk
	ldi R25,>_kk
	add R30,R24
	adc R31,R25
	lds R2,_rec0
	std z+0,R2
	.dbline 145
	inc R16
	.dbline 146
L34:
	.dbline 140
	cpi R16,2
	brlo L37
	.dbline 147
;    		  while ( !(UCSR1A& (1<<RXC1)));
;    		  rec0 = UCSR1B;
; 	      rec0 = UDR1;
; 		  kk.half[1 - i] = rec0;
; 		  i++;
;    }  
;    return kk.i1;  
	lds R16,_kk
	lds R17,_kk+1
	.dbline -2
L32:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 c
	.dbend
	.dbfunc e xy_set _xy_set fV
;        address -> R20
;              x -> R22
;              y -> R10
;             xy -> R20
	.even
_xy_set::
	xcall push_gset3
	mov R20,R16
	.dbline -1
	.dbline 167
; }
; /*----------------------------------------------------------------------------
; 0x01    //清屏,AC自动加1,光标归位,但并不改变设置
; 0x02    //归位
; 0x06    //自动加一
; 0x04    //自动减一
; 0x0f    //开显示,开光标,光标闪烁
; 0x0e    //光标开
; 0x0d    //光标所在字符闪烁  
; 0x0c    //光标关  
; 0x18    //光标,字符一起左移
; 0x1c    //光标,字符一起右移
; 0x38    //8位数据宽度
; LCD第一行显示寄存器地址:0X80-0X8f
; LCD第二行显示寄存器地址:0XC0-0Xcf
; LCD第三行显示寄存器地址:0x90-0x9f
; LCD第四行显示寄存器地址:0xd0-0xdf
; -----------------------------------------------------------------------------*/
; void xy_set(unsigned char xy)
; {
	.dbline 169
; unsigned char x,y,address;
; 		x = xy;
	mov R22,R20
	.dbline 170
; 	    x = x & 0x0f;
	andi R22,15
	.dbline 171
; 	    y = xy;
	mov R10,R20
	.dbline 172
; 		y = y >> 4; 
	mov R24,R10
	swap R24
	andi R24,#0x0F
	mov R10,R24
	.dbline 174
; 		
;     if (y == 0) 
	tst R24
	brne L40
	.dbline 175
; 	   address = 0x80 + x;
	mov R20,R22
	subi R20,128    ; addi 128
	xjmp L41
L40:
	.dbline 176
;     else if(y == 1) 
	mov R24,R10
	cpi R24,1
	brne L42
	.dbline 177
;        address = 0xc0 + x;
	mov R20,R22
	subi R20,64    ; addi 192
	xjmp L43
L42:
	.dbline 178
; 	else if(y == 2) 
	mov R24,R10
	cpi R24,2
	brne L44
	.dbline 179
;        address = 0x90 + x;
	mov R20,R22
	subi R20,112    ; addi 144
	xjmp L45
L44:
	.dbline 180
; 	else if(y == 3) 
	mov R24,R10
	cpi R24,3
	brne L46
	.dbline 181
;        address = 0xd0 + x; 
	mov R20,R22
	subi R20,48    ; addi 208
L46:
L45:
L43:
L41:
	.dbline 183
; 	
;     send_buffer[0] = address;
	sts _send_buffer,R20
	.dbline 185
; 	
; 	char_len = 1;
	ldi R24,1
	sts _char_len,R24
	.dbline 186
; 	serial_send(1);  
	ldi R16,1
	xcall _serial_send
	.dbline 187
; 	return ;
	.dbline -2
L39:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r address 20 c
	.dbsym r x 22 c
	.dbsym r y 10 c
	.dbsym r xy 20 c
	.dbend
	.dbfunc e init_lcd _init_lcd fV
	.even
_init_lcd::
	.dbline -1
	.dbline 191
; }
; 
; void init_lcd ()
; {
	.dbline 192
;     send_buffer[0] = 0x01;
	ldi R24,1
	sts _send_buffer,R24
	.dbline 193
; 	char_len = 1;
	sts _char_len,R24
	.dbline 194
; 	serial_send(1);  
	ldi R16,1
	.dbline 195
; 	return ;
	.dbline -2
L48:
	.dbline 0 ; func end
	xjmp _serial_send
	.dbend
	.dbfunc e shift_r _shift_r fV
	.even
_shift_r::
	.dbline -1
	.dbline 199
; }
; 
; void shift_r()
; {
	.dbline 200
;     send_buffer[0] = 0x1c ;
	ldi R24,28
	sts _send_buffer,R24
	.dbline 201
; 	char_len = 1;
	ldi R24,1
	sts _char_len,R24
	.dbline 202
; 	serial_send(1);  
	ldi R16,1
	.dbline 203
; 	return ;
	.dbline -2
L49:
	.dbline 0 ; func end
	xjmp _serial_send
	.dbend
	.dbfunc e shift_l _shift_l fV
	.even
_shift_l::
	.dbline -1
	.dbline 207
; }
; 
; void shift_l()
; {
	.dbline 208
;     send_buffer[0] =  0x18;
	ldi R24,24
	sts _send_buffer,R24
	.dbline 209
; 	char_len = 1;
	ldi R24,1
	sts _char_len,R24
	.dbline 210
; 	serial_send(1); 
	ldi R16,1
	.dbline 211
; 	return ;
	.dbline -2
L50:
	.dbline 0 ; func end
	xjmp _serial_send
	.dbend
	.dbfunc e printf_char _printf_char fV
;              s -> R20
	.even
_printf_char::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 213
; }
; void printf_char(char s){
	.dbline 215
; 
;     send_buffer[0] = s;
	sts _send_buffer,R20
	.dbline 216
;     char_len = 1;
	ldi R24,1
	sts _char_len,R24
	.dbline 217
; 	serial_send(0);  
	clr R16
	xcall _serial_send
	.dbline 218
; 	return ;
	.dbline -2
L51:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r s 20 c
	.dbend
	.dbfunc e printf_hex _printf_hex fV
;           temp -> R20,R21
;              s -> R22
	.even
_printf_hex::
	xcall push_gset2
	mov R22,R16
	.dbline -1
	.dbline 223
; 	
; }
; 
; 
; void printf_hex(unsigned char s){
	.dbline 224
;      unsigned int temp = 0;
	clr R20
	clr R21
	.dbline 226
; 	 
; 	 temp = hextochar(s);
	mov R16,R22
	clr R17
	xcall _hextochar
	movw R20,R16
	.dbline 227
; 	 send_buffer[1] = temp;
	sts _send_buffer+1,R20
	.dbline 228
; 	 temp = temp >> 8;
	mov R20,R21

⌨️ 快捷键说明

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