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

📄 testuart.lis

📁 本代码是AVR单片机的完整IIC通信程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00AC 1501              movw R2,R10
 00AE 260E              add R2,R22
 00B0 371E              adc R3,R23
 00B2 F101              movw R30,R2
 00B4 8181              ldd R24,z+1
 00B6 9927              clr R25
 00B8 9070              andi R25,0
 00BA F101              movw R30,R2
 00BC 2080              ldd R2,z+0
 00BE 3324              clr R3
 00C0 322C              mov R3,R2
 00C2 2224              clr R2
 00C4 280E              add R2,R24
 00C6 391E              adc R3,R25
 00C8 0215              cp R16,R2
 00CA 1305              cpc R17,R3
 00CC 19F4              brne L13
 00CE                   .dbline 65
 00CE           ;               return (1);
 00CE 01E0              ldi R16,1
 00D0 10E0              ldi R17,0
 00D2 02C0              xjmp L12
 00D4           L13:
 00D4                   .dbline 66
 00D4           ;       else return (0);
 00D4 0027              clr R16
 00D6 1127              clr R17
 00D8                   .dbline -2
 00D8           L12:
 00D8 0E940000          xcall pop_gset3
 00DC                   .dbline 0 ; func end
 00DC 0895              ret
 00DE                   .dbsym r crcin 20 S
 00DE                   .dbsym r len 10 I
 00DE                   .dbsym r s 22 pc
 00DE                   .dbend
 00DE                   .dbfunc e delay_nus _delay_nus fV
 00DE           ;              i -> R20,R21
 00DE           ;              n -> R16,R17
                        .even
 00DE           _delay_nus::
 00DE 0E940000          xcall push_gset1
 00E2                   .dbline -1
 00E2                   .dbline 71
 00E2           ;       
 00E2           ; }
 00E2           ; 
 00E2           ; void delay_nus(unsigned int n)//n微秒延时函数
 00E2           ; {
 00E2                   .dbline 73
 00E2           ; unsigned int i;
 00E2           ; for (i=0;i<n;i++)
 00E2 4427              clr R20
 00E4 5527              clr R21
 00E6 03C0              xjmp L19
 00E8           L16:
 00E8                   .dbline 74
 00E8                   .dbline 75
 00E8 0000              nop
 00EA                   .dbline 76
 00EA           L17:
 00EA                   .dbline 73
 00EA 4F5F              subi R20,255  ; offset = 1
 00EC 5F4F              sbci R21,255
 00EE           L19:
 00EE                   .dbline 73
 00EE 4017              cp R20,R16
 00F0 5107              cpc R21,R17
 00F2 D0F3              brlo L16
 00F4                   .dbline -2
 00F4           L15:
 00F4 0E940000          xcall pop_gset1
 00F8                   .dbline 0 ; func end
 00F8 0895              ret
 00FA                   .dbsym r i 20 i
 00FA                   .dbsym r n 16 i
 00FA                   .dbend
 00FA                   .dbfunc e delay_hus _delay_hus fV
 00FA           ;              i -> R20,R21
 00FA           ;              j -> R22,R23
 00FA           ;              n -> R16,R17
                        .even
 00FA           _delay_hus::
 00FA 0E940000          xcall push_gset2
 00FE                   .dbline -1
 00FE                   .dbline 80
 00FE           ;   {
 00FE           ;       asm("nop");
 00FE           ;   }
 00FE           ; }
 00FE           ; 
 00FE           ; void delay_hus(unsigned int n)//n毫秒
 00FE           ; {
 00FE                   .dbline 83
 00FE           ; unsigned int i;
 00FE           ; unsigned int j;
 00FE           ; for (i=0;i<n;i++)
 00FE 4427              clr R20
 0100 5527              clr R21
 0102 0CC0              xjmp L24
 0104           L21:
 0104                   .dbline 84
 0104           ;   {
 0104                   .dbline 85
 0104           ;   for(j=0;j<1000;j++)
 0104 6627              clr R22
 0106 7727              clr R23
 0108 03C0              xjmp L28
 010A           L25:
 010A                   .dbline 86
 010A 0000              nop
 010C           L26:
 010C                   .dbline 85
 010C 6F5F              subi R22,255  ; offset = 1
 010E 7F4F              sbci R23,255
 0110           L28:
 0110                   .dbline 85
 0110 683E              cpi R22,232
 0112 E3E0              ldi R30,3
 0114 7E07              cpc R23,R30
 0116 C8F3              brlo L25
 0118                   .dbline 87
 0118           L22:
 0118                   .dbline 83
 0118 4F5F              subi R20,255  ; offset = 1
 011A 5F4F              sbci R21,255
 011C           L24:
 011C                   .dbline 83
 011C 4017              cp R20,R16
 011E 5107              cpc R21,R17
 0120 88F3              brlo L21
 0122                   .dbline -2
 0122           L20:
 0122 0E940000          xcall pop_gset2
 0126                   .dbline 0 ; func end
 0126 0895              ret
 0128                   .dbsym r i 20 i
 0128                   .dbsym r j 22 i
 0128                   .dbsym r n 16 i
 0128                   .dbend
 0128                   .dbfunc e USART_Transmit _USART_Transmit fV
 0128           ;           data -> R16
                        .even
 0128           _USART_Transmit::
 0128                   .dbline -1
 0128                   .dbline 92
 0128           ;       asm("nop");
 0128           ;   }
 0128           ; }
 0128           ; 
 0128           ; 
 0128           ; void USART_Transmit(unsigned char data)
 0128           ; {
 0128           L30:
 0128                   .dbline 93
 0128           L31:
 0128                   .dbline 93
 0128           ;  while(!(UCSRA&(1<<UDRE)));
 0128 5D9B              sbis 0xb,5
 012A FECF              rjmp L30
 012C                   .dbline 95
 012C           ;  //PORTD=0x00;
 012C           ;  UDR=data;
 012C 0CB9              out 0xc,R16
 012E                   .dbline -2
 012E           L29:
 012E                   .dbline 0 ; func end
 012E 0895              ret
 0130                   .dbsym r data 16 c
 0130                   .dbend
 0130                   .dbfunc e port_init _port_init fV
                        .even
 0130           _port_init::
 0130                   .dbline -1
 0130                   .dbline 99
 0130           ; }
 0130           ; 
 0130           ; void port_init(void)
 0130           ; {
 0130                   .dbline 100
 0130           ;  PORTA = 0x00;
 0130 2224              clr R2
 0132 2BBA              out 0x1b,R2
 0134                   .dbline 101
 0134           ;  DDRA  = 0x00;
 0134 2ABA              out 0x1a,R2
 0136                   .dbline 102
 0136           ;  PORTB=0xFF;  //与下一句同时起作用
 0136 8FEF              ldi R24,255
 0138 88BB              out 0x18,R24
 013A                   .dbline 104
 013A           ;  //SFIOR&=~BIT(2); //置SFIOR的PDU上拉电阻有效。与上一句一起生效。
 013A           ;  SFIOR&=~BIT(2); //置SFIOR的PDU上拉电阻有效。与上一句一起生效。
 013A 80B7              in R24,0x30
 013C 8B7F              andi R24,251
 013E 80BF              out 0x30,R24
 0140                   .dbline 105
 0140           ;  DDRB  = 0x00;
 0140 27BA              out 0x17,R2
 0142                   .dbline 106
 0142           ;  PORTC = 0x00; //m103 output only
 0142 25BA              out 0x15,R2
 0144                   .dbline 107
 0144           ;  DDRC  = 0x00;
 0144 24BA              out 0x14,R2
 0146                   .dbline 110
 0146           ;  //PORTD = 0x80;
 0146           ; // DDRD  = 0x80;
 0146           ;  PORTD=0xc0;  //与下一句同时起作用
 0146 80EC              ldi R24,192
 0148 82BB              out 0x12,R24
 014A                   .dbline 112
 014A           ;  //SFIOR&=~BIT(2); //置SFIOR的PDU上拉电阻有效。与上一句一起生效。
 014A           ;  SFIOR&=~BIT(2); //置SFIOR的PDU上拉电阻有效。与上一句一起生效

⌨️ 快捷键说明

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