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

📄 uart.lis

📁 AVR ds18b20 源代码 对学习温度控制的人很有帮助
💻 LIS
字号:
                        .module uart.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\开发板\source\ds18b20\uart.c
 0000                   .dbfunc e delay_us _delay_us fV
 0000           ;              i -> R20,R21
 0000           ;              n -> R16,R17
                        .even
 0000           _delay_us::
 0000 00D0              rcall push_gset1
 0002                   .dbline -1
 0002                   .dbline 15
 0002           ; /******************************************/
 0002           ; /*             北京MCU学习之家            */
 0002           ; /*             ADC通信演示程序            */
 0002           ; /*             作者:白如冰                */
 0002           ; /*             2005年10月1日              */
 0002           ; /*  目标MCU:MEGA8   晶振:外部(EXT) 8MHZ   */
 0002           ; /******************************************/
 0002           ; 
 0002           ; #include <iom8v.h>
 0002           ; #define fosc 8000000 //晶振8MHZ
 0002           ; #define baud 9600      //波特率
 0002           ; 
 0002           ;  
 0002           ; void delay_us(unsigned int n)
 0002           ; {
 0002                   .dbline 17
 0002 A801              movw R20,R16
 0004 02C0              rjmp L5
 0006           L2:
 0006                   .dbline 17
 0006           L3:
 0006                   .dbline 17
 0006 4150              subi R20,1
 0008 5040              sbci R21,0
 000A           L5:
 000A                   .dbline 17
 000A           ;   unsigned int i;
 000A           ;   for(i=n;i>0;i--);
 000A 4030              cpi R20,0
 000C 4507              cpc R20,R21
 000E D9F7              brne L2
 0010           X0:
 0010                   .dbline -2
 0010           L1:
 0010 00D0              rcall pop_gset1
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r i 20 i
 0014                   .dbsym r n 16 i
 0014                   .dbend
 0014                   .dbfunc e delay_1ms _delay_1ms fV
 0014           ;              i -> R16,R17
                        .even
 0014           _delay_1ms::
 0014                   .dbline -1
 0014                   .dbline 21
 0014           ;   }
 0014           ;   
 0014           ; void delay_1ms(void)
 0014           ; { unsigned int i;
 0014                   .dbline 22
 0014           ;  for(i=1;i<(unsigned int)(1144-2);i++)
 0014 01E0              ldi R16,1
 0016 10E0              ldi R17,0
 0018 02C0              rjmp L10
 001A           L7:
 001A                   .dbline 23
 001A           L8:
 001A                   .dbline 22
 001A 0F5F              subi R16,255  ; offset = 1
 001C 1F4F              sbci R17,255
 001E           L10:
 001E                   .dbline 22
 001E 0637              cpi R16,118
 0020 E4E0              ldi R30,4
 0022 1E07              cpc R17,R30
 0024 D0F3              brlo L7
 0026                   .dbline -2
 0026           L6:
 0026                   .dbline 0 ; func end
 0026 0895              ret
 0028                   .dbsym r i 16 i
 0028                   .dbend
 0028                   .dbfunc e delay_ms _delay_ms fV
 0028           ;              i -> R20,R21
 0028           ;              n -> R22,R23
                        .even
 0028           _delay_ms::
 0028 00D0              rcall push_gset2
 002A B801              movw R22,R16
 002C                   .dbline -1
 002C                   .dbline 26
 002C           ;     ;
 002C           ; }
 002C           ; void delay_ms(unsigned int n)
 002C           ; {
 002C                   .dbline 27
 002C           ;  unsigned int i=0;
 002C 4427              clr R20
 002E 5527              clr R21
 0030 03C0              rjmp L13
 0032           L12:
 0032                   .dbline 29
 0032                   .dbline 29
 0032 F0DF              rcall _delay_1ms
 0034                   .dbline 30
 0034 4F5F              subi R20,255  ; offset = 1
 0036 5F4F              sbci R21,255
 0038                   .dbline 31
 0038           L13:
 0038                   .dbline 28
 0038           ;    while(i<n)
 0038 4617              cp R20,R22
 003A 5707              cpc R21,R23
 003C D0F3              brlo L12
 003E                   .dbline -2
 003E           L11:
 003E 00D0              rcall pop_gset2
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbsym r i 20 i
 0042                   .dbsym r n 22 i
 0042                   .dbend
 0042                   .dbfunc e putchar _putchar fV
 0042           ;              c -> R16
                        .even
 0042           _putchar::
 0042                   .dbline -1
 0042                   .dbline 35
 0042           ;    {delay_1ms();
 0042           ;     i++;
 0042           ;    }
 0042           ; }                                                                                                     
 0042           ; /*            字符输出函数             */
 0042           ; void putchar(unsigned char c)
 0042           ;       {        
 0042           L16:
 0042                   .dbline 36
 0042           L17:
 0042                   .dbline 36
 0042           ;      while (!(UCSRA&(1<<UDRE)));
 0042 5D9B              sbis 0xb,5
 0044 FECF              rjmp L16
 0046                   .dbline 37
 0046           ;        UDR=c;    
 0046 0CB9              out 0xc,R16
 0048                   .dbline -2
 0048           L15:
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbsym r c 16 c
 004A                   .dbend
 004A                   .dbfunc e getchar _getchar fc
                        .even
 004A           _getchar::
 004A                   .dbline -1
 004A                   .dbline 41
 004A           ;       }
 004A           ; /*            字符输入函数             */     
 004A           ; unsigned char getchar(void)
 004A           ;       {
 004A           L20:
 004A                   .dbline 42
 004A           L21:
 004A                   .dbline 42
 004A           ;        while(!(UCSRA& (1<<RXC)));
 004A 5F9B              sbis 0xb,7
 004C FECF              rjmp L20
 004E                   .dbline 43
 004E           ;      return UDR;
 004E 0CB1              in R16,0xc
 0050                   .dbline -2
 0050           L19:
 0050                   .dbline 0 ; func end
 0050 0895              ret
 0052                   .dbend
 0052                   .dbfunc e puts _puts fV
 0052           ;              s -> R20,R21
                        .even
 0052           _puts::
 0052 00D0              rcall push_gset1
 0054 A801              movw R20,R16
 0056                   .dbline -1
 0056                   .dbline 47
 0056           ;       }               
 0056           ; /*                    字符串输出函数           */     
 0056           ; void puts(char *s)
 0056           ;       {
 0056 05C0              rjmp L25
 0058           L24:
 0058                   .dbline 49
 0058                   .dbline 50
 0058 FA01              movw R30,R20
 005A 0081              ldd R16,z+0
 005C F2DF              rcall _putchar
 005E                   .dbline 51
 005E 4F5F              subi R20,255  ; offset = 1
 0060 5F4F              sbci R21,255
 0062                   .dbline 52
 0062           L25:
 0062                   .dbline 48
 0062           ;       while (*s)
 0062 FA01              movw R30,R20
 0064 2080              ldd R2,z+0
 0066 2220              tst R2
 0068 B9F7              brne L24
 006A                   .dbline -2
 006A           L23:
 006A 00D0              rcall pop_gset1
 006C                   .dbline 0 ; func end
 006C 0895              ret
 006E                   .dbsym r s 20 pc
 006E                   .dbend
 006E                   .dbfunc e puts_hh _puts_hh fV
 006E           ;              s -> R20,R21
                        .even
 006E           _puts_hh::
 006E 00D0              rcall push_gset1
 0070 A801              movw R20,R16
 0072                   .dbline -1
 0072                   .dbline 57
 0072           ;               {
 0072           ;               putchar(*s);
 0072           ;               s++;
 0072           ;               }       
 0072           ;    
 0072           ;       }
 0072           ; /*                    字符串输出函数           */     
 0072           ; void puts_hh(char *s)
 0072           ;       {
 0072 05C0              rjmp L29
 0074           L28:
 0074                   .dbline 59
 0074                   .dbline 60
 0074 FA01              movw R30,R20
 0076 0081              ldd R16,z+0
 0078 E4DF              rcall _putchar
 007A                   .dbline 61
 007A 4F5F              subi R20,255  ; offset = 1
 007C 5F4F              sbci R21,255
 007E                   .dbline 62
 007E           L29:
 007E                   .dbline 58
 007E           ;       while (*s)
 007E FA01              movw R30,R20
 0080 2080              ldd R2,z+0
 0082 2220              tst R2
 0084 B9F7              brne L28
 0086                   .dbline 63
 0086           ;               {
 0086           ;               putchar(*s);
 0086           ;               s++;
 0086           ;               }       
 0086           ;     putchar(0x0a);//回车换行
 0086 0AE0              ldi R16,10
 0088 DCDF              rcall _putchar
 008A                   .dbline 64
 008A           ;       putchar(0x0d);
 008A 0DE0              ldi R16,13
 008C DADF              rcall _putchar
 008E                   .dbline -2
 008E           L27:
 008E 00D0              rcall pop_gset1
 0090                   .dbline 0 ; func end
 0090 0895              ret
 0092                   .dbsym r s 20 pc
 0092                   .dbend
 0092                   .dbfunc e uart_init _uart_init fV
                        .even
 0092           _uart_init::
 0092                   .dbline -1
 0092                   .dbline 69
 0092           ;       }
 0092           ;       
 0092           ; /*                    UART初始化                              */      
 0092           ; void uart_init(void)
 0092           ; {
 0092                   .dbline 70
 0092           ;  UCSRB=(1<<RXEN)|(1<<TXEN);//允许发送和接收
 0092 88E1              ldi R24,24
 0094 8AB9              out 0xa,R24
 0096                   .dbline 71
 0096           ;  UBRRL=(fosc/16/(baud+1))%256;
 0096 84E3              ldi R24,52
 0098 89B9              out 0x9,R24
 009A                   .dbline 72
 009A           ;  UBRRH=(fosc/16/(baud+1))/256;
 009A 2224              clr R2
 009C 20BC              out 0x20,R2
 009E                   .dbline 73
 009E           ;  UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
 009E 86E8              ldi R24,134
 00A0 80BD              out 0x20,R24
 00A2                   .dbline -2
 00A2           L31:
 00A2                   .dbline 0 ; func end
 00A2 0895              ret
 00A4                   .dbend

⌨️ 快捷键说明

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