📄 chuankou.lis
字号:
005E 8FEF ldi R24,255
0060 80936200 sts 98,R24
0064 .dbline 75
0064 ; DDRF = 0xFF;
0064 80936100 sts 97,R24
0068 .dbline 76
0068 ; PORTG = 0xFF;
0068 80936500 sts 101,R24
006C .dbline 77
006C ; DDRG = 0x00;
006C 20926400 sts 100,R2
0070 .dbline -2
0070 L14:
0070 .dbline 0 ; func end
0070 0895 ret
0072 .dbend
0072 .dbfunc e usart0_init _usart0_init fV
.even
0072 _usart0_init::
0072 .dbline -1
0072 .dbline 81
0072 ; }
0072 ; /*****************串口初始化*********************************/
0072 ; void usart0_init(void)
0072 ; {
0072 .dbline 82
0072 ; UCSR0B = 0x00; //禁止发送和接收
0072 2224 clr R2
0074 2AB8 out 0xa,R2
0076 .dbline 83
0076 ; UCSR0A = 0x02; //倍速异步模式USX0=1
0076 82E0 ldi R24,2
0078 8BB9 out 0xb,R24
007A .dbline 84
007A ; UCSR0C = 0x06; //0000 0110,UCSZ01=1,UCSZ00=1;8位字符,1位停止位
007A 86E0 ldi R24,6
007C 80939500 sts 149,R24
0080 .dbline 85
0080 ; UBRR0L=(Crystal/8/(Baud+1))%256; //若为正常异步模式USX0=0则位(Crystal/16/(Baud+1))%256
0080 88E6 ldi R24,104
0082 89B9 out 0x9,R24
0084 .dbline 86
0084 ; UBRR0H=(Crystal/8/(Baud+1))/256; //参见ATMAGE128使用手册
0084 20929000 sts 144,R2
0088 .dbline 87
0088 ; UCSR0B=0xD8 ; //允许发送和接收,接收和发送结束中断使能
0088 88ED ldi R24,216
008A 8AB9 out 0xa,R24
008C .dbline -2
008C L15:
008C .dbline 0 ; func end
008C 0895 ret
008E .dbend
008E .dbfunc e init_devices _init_devices fV
.even
008E _init_devices::
008E .dbline -1
008E .dbline 91
008E ; }
008E ; /******************初始器件**************************************/
008E ; void init_devices(void)
008E ; {
008E .dbline 92
008E ; port_init();
008E DCDF xcall _port_init
0090 .dbline 93
0090 ; usart0_init();
0090 .dbline -2
0090 L16:
0090 .dbline 0 ; func end
0090 F0CF xjmp _usart0_init
0092 .dbend
.area vector(rom, abs)
.org 72
0048 0C944900 jmp _usart0_RX_interrupt
.area text(rom, con, rel)
0092 .dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
0092 .dbfunc e usart0_RX_interrupt _usart0_RX_interrupt fV
.even
0092 _usart0_RX_interrupt::
0092 2A92 st -y,R2
0094 8A93 st -y,R24
0096 2FB6 IN R2,63
0098 2A92 st -y,R2
009A .dbline -1
009A .dbline 99
009A ; }
009A ;
009A ; /****************中断接收服务处理子程序*******************************/
009A ; #pragma interrupt_handler usart0_RX_interrupt:iv_USART0_RX // 19
009A ; void usart0_RX_interrupt(void)
009A ; {
009A .dbline 101
009A ;
009A ; UCSR0B=0x00; //禁止发送和接收
009A 2224 clr R2
009C 2AB8 out 0xa,R2
009E .dbline 102
009E ; data_temp = UDR0; //从数据缓冲器中接收数据
009E 2CB0 in R2,0xc
00A0 20920000 sts _data_temp,R2
00A4 .dbline 103
00A4 ; UCSR0B=0xD8 ; //允许发送和接收,接收和发送结束中断使能
00A4 88ED ldi R24,216
00A6 8AB9 out 0xa,R24
00A8 .dbline 104
00A8 ; if(data_temp=='0') //如果接收到的字符为'0'
00A8 80910000 lds R24,_data_temp
00AC 8033 cpi R24,48
00AE 21F4 brne L18
00B0 X3:
00B0 .dbline 105
00B0 ; UDR0 = data; //将数据data放入缓冲器,发送数据
00B0 20900000 lds R2,_data
00B4 2CB8 out 0xc,R2
00B6 03C0 xjmp L19
00B8 L18:
00B8 .dbline 107
00B8 ; else
00B8 ; UDR0=data_temp; //否则将接收到的数据返回
00B8 20900000 lds R2,_data_temp
00BC 2CB8 out 0xc,R2
00BE L19:
00BE .dbline -2
00BE L17:
00BE .dbline 0 ; func end
00BE 2990 ld R2,y+
00C0 2FBE OUT 63,R2
00C2 8991 ld R24,y+
00C4 2990 ld R2,y+
00C6 1895 reti
00C8 .dbend
.area vector(rom, abs)
.org 80
0050 0C946400 jmp _usart0_TX_interrupt
.area text(rom, con, rel)
00C8 .dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
00C8 .dbfunc e usart0_TX_interrupt _usart0_TX_interrupt fV
.even
00C8 _usart0_TX_interrupt::
00C8 0A92 st -y,R0
00CA 0FB6 IN R0,63
00CC 0A92 st -y,R0
00CE .dbline -1
00CE .dbline 114
00CE ;
00CE ; }
00CE ;
00CE ; /*********************中断发送服务处理子程序**************************/
00CE ; #pragma interrupt_handler usart0_TX_interrupt:iv_USART0_TX // 21
00CE ; void usart0_TX_interrupt(void)
00CE ; {
00CE .dbline 115
00CE ; _NOP();
00CE 0000 nop
00D0 .dbline 116
00D0 ; UCSR0A |= (1<<6); //发送结束清零
00D0 5E9A sbi 0xb,6
00D2 .dbline -2
00D2 L20:
00D2 .dbline 0 ; func end
00D2 0990 ld R0,y+
00D4 0FBE OUT 63,R0
00D6 0990 ld R0,y+
00D8 1895 reti
00DA .dbend
00DA .dbfunc e main _main fV
.even
00DA _main::
00DA .dbline -1
00DA .dbline 120
00DA ; }
00DA ; /*******************主程序****************************/
00DA ; void main(void)
00DA ; {
00DA .dbline 122
00DA ;
00DA ; CLI(); //总中断禁止
00DA F894 cli
00DC .dbline 123
00DC ; init_devices();
00DC D8DF xcall _init_devices
00DE .dbline 124
00DE ; SEI(); //总中断允许
00DE 7894 sei
00E0 L22:
00E0 .dbline 127
00E0 ;
00E0 ; while(1) //循环等待中断处理
00E0 ; {
00E0 .dbline 129
00E0 ;
00E0 ; }
00E0 L23:
00E0 .dbline 126
00E0 FFCF xjmp L22
00E2 X4:
00E2 .dbline -2
00E2 L21:
00E2 .dbline 0 ; func end
00E2 0895 ret
00E4 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
0000 _data_temp::
0000 .blkb 1
0001 .dbsym e data_temp _data_temp c
0001 ; }
0001 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -