📄 twimain.lis
字号:
0044 ; //UART0 initialize
0044 ; // desired baud rate: 9600
0044 ; // actual: baud rate:9600 (0.0%)
0044 ; // char size: 8 bit
0044 ; // parity: Disabled
0044 ; void uart0_init(void)
0044 ; {
0044 .dbline 71
0044 ; UCSRB = 0x00; //disable while setting baud rate
0044 2224 clr R2
0046 2AB8 out 0xa,R2
0048 .dbline 72
0048 ; UCSRA = 0x00;
0048 2BB8 out 0xb,R2
004A .dbline 73
004A ; UCSRC = BIT(URSEL) | 0x0E;
004A 8EE8 ldi R24,142
004C 80BD out 0x20,R24
004E .dbline 74
004E ; UBRRL = 0x47; //set baud rate lo
004E 87E4 ldi R24,71
0050 89B9 out 0x9,R24
0052 .dbline 75
0052 ; UBRRH = 0x00; //set baud rate hi
0052 20BC out 0x20,R2
0054 .dbline 76
0054 ; UCSRB = 0x98;
0054 88E9 ldi R24,152
0056 8AB9 out 0xa,R24
0058 .dbline -2
0058 .dbline 77
0058 ; }
0058 L12:
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbend
005A .dbfunc e USART_Transmit _USART_Transmit fV
005A ; data -> R16
.even
005A _USART_Transmit::
005A .dbline -1
005A .dbline 81
005A ; //********************串口程序函数实现部分**************************************
005A ; //******************************************************************************
005A ; void USART_Transmit( unsigned char data )
005A ; {
005A L14:
005A .dbline 82
005A L15:
005A .dbline 82
005A ; while ( !( UCSRA & (1<<UDRE))); // 等待发送缓冲器为空
005A 5D9B sbis 0xb,5
005C FECF rjmp L14
005E .dbline 83
005E ; UDR = data; // 将数据放入缓冲器,发送数据
005E 0CB9 out 0xc,R16
0060 .dbline -2
0060 .dbline 84
0060 ; }
0060 L13:
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbsym r data 16 c
0062 .dbend
.area vector(rom, abs)
.org 22
0016 31C0 rjmp _uart0_rx_isr
.area text(rom, con, rel)
0062 .dbfile E:\iccavr\无线+I2C\test1--sr\twimain.c
0062 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
0062 _uart0_rx_isr::
0062 .dbline -1
0062 .dbline 88
0062 ;
0062 ; #pragma interrupt_handler uart0_rx_isr:12
0062 ; void uart0_rx_isr(void)
0062 ; {
0062 .dbline -2
0062 .dbline 90
0062 ; //uart has received a character in UDR
0062 ; }
0062 L17:
0062 .dbline 0 ; func end
0062 1895 reti
0064 .dbend
0064 .dbfunc e init_devices _init_devices fV
.even
0064 _init_devices::
0064 .dbline -1
0064 .dbline 94
0064 ; //****************************** 初始化外围 ************************************
0064 ; //******************************************************************************
0064 ; void init_devices(void)
0064 ; {
0064 .dbline 96
0064 ; //stop errant interrupts until set up
0064 ; CLI(); //disable all interrupts
0064 F894 cli
0066 .dbline 97
0066 ; port_init();
0066 E3DF rcall _port_init
0068 .dbline 98
0068 ; uart0_init();
0068 EDDF rcall _uart0_init
006A .dbline 99
006A ; MCUCR = 0x00;
006A 2224 clr R2
006C 25BE out 0x35,R2
006E .dbline 100
006E ; GICR = 0x00;
006E 2BBE out 0x3b,R2
0070 .dbline 101
0070 ; TIMSK = 0x00; //timer interrupt sources
0070 29BE out 0x39,R2
0072 .dbline 102
0072 ; SEI(); //re-enable interrupts
0072 7894 sei
0074 .dbline -2
0074 .dbline 104
0074 ; //all peripherals are now initialized
0074 ; }
0074 L18:
0074 .dbline 0 ; func end
0074 0895 ret
0076 .dbend
0076 .dbfunc e main _main fV
0076 ; i -> <dead>
.even
0076 _main::
0076 .dbline -1
0076 .dbline 111
0076 ; //****************************** 主函数 ***************************************
0076 ; /*该程序工作于从收模式下,在基于中断的该模式下,cpu顺序接收来自主机的字符,并根
0076 ; 据字符的值去置位PC0--PC3为低,PC0--PC3可以外接LED以显示操作的结果
0076 ; */
0076 ; //******************************************************************************
0076 ; void main(void)
0076 ; {
0076 .dbline 113
0076 ; int i;
0076 ; init_devices();
0076 F6DF rcall _init_devices
0078 .dbline 114
0078 ; Delay_Nms(2000);
0078 00ED ldi R16,2000
007A 17E0 ldi R17,7
007C CBDF rcall _Delay_Nms
007E 0FC0 rjmp L21
0080 L20:
0080 .dbline 116
0080 ; while(1)
0080 ; {
0080 .dbline 117
0080 ; if(receive_data == 0x00)
0080 20900000 lds R2,_receive_data
0084 2220 tst R2
0086 11F4 brne L23
0088 .dbline 118
0088 ; {
0088 .dbline 119
0088 ; PORTC &= ~BIT(PC0);
0088 A898 cbi 0x15,0
008A .dbline 120
008A ; }
008A 09C0 rjmp L24
008C L23:
008C .dbline 121
008C ; else if(receive_data == 0x01)
008C 80910000 lds R24,_receive_data
0090 8130 cpi R24,1
0092 11F4 brne L25
0094 .dbline 122
0094 ; {
0094 .dbline 123
0094 ; PORTC &= ~BIT(PC1);
0094 A998 cbi 0x15,1
0096 .dbline 124
0096 ; }
0096 03C0 rjmp L26
0098 L25:
0098 .dbline 126
0098 ; else
0098 ; PORTC |= 0X0f;
0098 85B3 in R24,0x15
009A 8F60 ori R24,15
009C 85BB out 0x15,R24
009E L26:
009E L24:
009E .dbline 134
009E L21:
009E .dbline 115
009E F0CF rjmp L20
00A0 X0:
00A0 .dbline -2
00A0 .dbline 135
00A0 ;
00A0 ;
00A0 ; /* for(i = 0 ; i < num ; i ++)
00A0 ; {
00A0 ; USART_Transmit( receive_data ) //给下位机发送接收到的数据,
00A0 ; Delay_1ms();
00A0 ; }*/
00A0 ; }
00A0 ; }
00A0 L19:
00A0 .dbline 0 ; func end
00A0 0895 ret
00A2 .dbsym l i 1 I
00A2 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -