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

📄 simpleio.lis

📁 chipcom公司CC1100无线模块底层驱动程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module simpleio.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\WIRELE~1\CC1020~1\SoftWare\SoftWare\simpleio.c
 0000                   .dbfunc e putchar _putchar fV
 0000           ;             ch -> R16
                        .even
 0000           _putchar::
 0000                   .dbline -1
 0000                   .dbline 17
 0000           ; /****************************************************/
 0000           ; /* Application note                                 */
 0000           ; /* Reference design : CC1100 RF Test Board          */
 0000           ; /* File:        Simple.c                            */
 0000           ; /* Revision:  1.0                                   */
 0000           ; /* Description:                                     */
 0000           ; /* Microcontroller:ATmega48/48V                     */
 0000           ; /* Author:  Zcg, Field Applications Engineer, SunRay*/
 0000           ; /****************************************************/
 0000           ; #include <ctype.h>
 0000           ; #include "iom88v.h"
 0000           ; #include "macros.h"
 0000           ; #include "main.h" 
 0000           ; #include "simpleio.h"
 0000           ;  
 0000           ; void putchar(INT8U ch)
 0000           ; {
 0000           L2:
 0000                   .dbline 19
 0000           L3:
 0000                   .dbline 18
 0000           ;     while ( !(UCSR0A & (1<<UDRE0)) )
 0000 2090C000          lds R2,192
 0004 25FE              sbrs R2,5
 0006 FCCF              rjmp L2
 0008                   .dbline 20
 0008           ;       ;
 0008           ;     UDR0=ch;
 0008 0093C600          sts 198,R16
 000C                   .dbline -2
 000C           L1:
 000C                   .dbline 0 ; func end
 000C 0895              ret
 000E                   .dbsym r ch 16 c
 000E                   .dbend
 000E                   .dbfunc e getchar _getchar fc
 000E           ;           temp -> R16
                        .even
 000E           _getchar::
 000E                   .dbline -1
 000E                   .dbline 24
 000E           ; }
 000E           ; 
 000E           ; INT8U getchar(void)
 000E           ; {
 000E                   .dbline 27
 000E           ;       INT8U temp;
 000E           ; 
 000E           ;       if ((UCSR0A & (1<<RXC0)))
 000E 2090C000          lds R2,192
 0012 27FE              sbrs R2,7
 0014 03C0              rjmp L6
 0016                   .dbline 28
 0016           ;       {
 0016                   .dbline 29
 0016           ;               temp=UDR0;
 0016 0091C600          lds R16,198
 001A                   .dbline 30
 001A           ;               return temp;
 001A 01C0              rjmp L5
 001C           L6:
 001C                   .dbline 33
 001C           ;       }
 001C           ;       else
 001C           ;       {
 001C                   .dbline 34
 001C           ;               return 0;
 001C 0027              clr R16
 001E                   .dbline -2
 001E           L5:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbsym r temp 16 c
 0020                   .dbend
 0020                   .dbfunc e putstr _putstr fV
 0020           ;            str -> R20,R21
                        .even
 0020           _putstr::
 0020 00D0              rcall push_gset1
 0022 A801              movw R20,R16
 0024                   .dbline -1
 0024                   .dbline 43
 0024           ;       }
 0024           ; }
 0024           ; 
 0024           ; /****************************************************************************/
 0024           ; /* This routine outputs a string                                            */
 0024           ; /****************************************************************************/
 0024           ; 
 0024           ; void putstr(INT8U *str)
 0024           ; {
 0024 04C0              rjmp L10
 0026           L9:
 0026                   .dbline 45
 0026                   .dbline 46
 0026 FA01              movw R30,R20
 0028 0191              ld R16,Z+
 002A AF01              movw R20,R30
 002C E9DF              rcall _putchar
 002E                   .dbline 47
 002E           L10:
 002E                   .dbline 44
 002E           ;     while (*str!='\0')
 002E FA01              movw R30,R20
 0030 2080              ldd R2,z+0
 0032 2220              tst R2
 0034 C1F7              brne L9
 0036                   .dbline -2
 0036           L8:
 0036 00D0              rcall pop_gset1
 0038                   .dbline 0 ; func end
 0038 0895              ret
 003A                   .dbsym r str 20 pc
 003A                   .dbend
 003A                   .dbfunc e strlen _strlen fI
 003A           ;              i -> R20,R21
 003A           ;              s -> R16,R17
                        .even
 003A           _strlen::
 003A 00D0              rcall push_gset1
 003C                   .dbline -1
 003C                   .dbline 50
 003C           ;     {
 003C           ;         putchar(*str++);
 003C           ;     }
 003C           ; }
 003C           ; int strlen(const char *s)
 003C           ; {
 003C                   .dbline 51
 003C           ;       int i = 0;
 003C 4427              clr R20
 003E 5527              clr R21
 0040                   .dbline 53
 0040           ; 
 0040           ;       for(; *s; s++)
 0040 04C0              rjmp L16
 0042           L13:
 0042                   .dbline 54
 0042 4F5F              subi R20,255  ; offset = 1
 0044 5F4F              sbci R21,255
 0046           L14:
 0046                   .dbline 53
 0046 0F5F              subi R16,255  ; offset = 1
 0048 1F4F              sbci R17,255
 004A           L16:
 004A                   .dbline 53
 004A F801              movw R30,R16
 004C E491              lpm R30,Z
 004E EE23              tst R30
 0050 C1F7              brne L13
 0052                   .dbline 56
 0052           ;               i++;
 0052           ; 
 0052           ;       return i;
 0052 8A01              movw R16,R20
 0054                   .dbline -2
 0054           L12:
 0054 00D0              rcall pop_gset1
 0056                   .dbline 0 ; func end
 0056 0895              ret
 0058                   .dbsym r i 20 I
 0058                   .dbsym r s 16 pkc
 0058                   .dbend
 0058                   .dbfunc e PutRepChar _PutRepChar fV
 0058           ;          count -> R20,R21
 0058           ;              c -> R22
                        .even
 0058           _PutRepChar::
 0058 00D0              rcall push_gset2
 005A A901              movw R20,R18
 005C 602F              mov R22,R16
 005E                   .dbline -1
 005E                   .dbline 61
 005E           ; }
 005E           ; /*---------------------printf and support routines ---------------------*/
 005E           ; /* print c count times */
 005E           ; void PutRepChar(char c, int count)
 005E           ; {
 005E 02C0              rjmp L19
 0060           L18:
 0060                   .dbline 62
 0060 062F              mov R16,R22
 0062 CEDF              rcall _putchar
 0064           L19:
 0064                   .dbline 62
 0064           ;       while (count--) putchar(c);
 0064 1A01              movw R2,R20
 0066 4150              subi R20,1
 0068 5040              sbci R21,0
 006A 2220              tst R2
 006C C9F7              brne L18
 006E 3320              tst R3
 0070 B9F7              brne L18
 0072           X0:
 0072                   .dbline -2
 0072           L17:
 0072 00D0              rcall pop_gset2
 0074                   .dbline 0 ; func end
 0074 0895              ret
 0076                   .dbsym r count 20 I
 0076                   .dbsym r c 22 c
 0076                   .dbend
 0076                   .dbfunc e PutStringReverse _PutStringReverse fV
 0076           ;          index -> R20,R21
 0076           ;              s -> R22,R23
                        .even
 0076           _PutStringReverse::
 0076 00D0              rcall push_gset2
 0078 A901              movw R20,R18
 007A B801              movw R22,R16
 007C                   .dbline -1
 007C                   .dbline 67
 007C           ; }
 007C           ; 
 007C           ; /* put string reverse */
 007C           ; void PutStringReverse(char *s, int index)
 007C           ; {
 007C 05C0              rjmp L23
 007E           L22:
 007E                   .dbline 68
 007E FA01              movw R30,R20
 0080 E60F              add R30,R22
 0082 F71F              adc R31,R23
 0084 0081              ldd R16,z+0
 0086 BCDF              rcall _putchar
 0088           L23:
 0088                   .dbline 68
 0088           ;     while ((index--) > 0) putchar(s[index]);
 0088 1A01              movw R2,R20
 008A 4150              subi R20,1
 008C 5040              sbci R21,0
 008E 4424              clr R4
 0090 5524              clr R5
 0092 4214              cp R4,R2
 0094 5304              cpc R5,R3
 0096 9CF3              brlt L22
 0098                   .dbline -2
 0098           L21:
 0098 00D0              rcall pop_gset2
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbsym r index 20 I
 009C                   .dbsym r s 22 pc
 009C                   .dbend
 009C                   .dbfunc s PutNumber _PutNumber fV
 009C           ;       negative -> R14,R15
 009C           ;           left -> y+40
 009C           ;         buffer -> y+0
 009C           ;          digit -> R22,R23
 009C           ;             bi -> R4,R5
 009C           ;         uvalue -> R20,R21
 009C           ;           fill -> y+56
 009C           ;          width -> y+54
 009C           ;          radix -> y+52
 009C           ;          value -> R22,R23
                        .even
 009C           _PutNumber:
 009C 3A93              st -y,r19
 009E 2A93              st -y,r18
 00A0 00D0              rcall push_gset5
 00A2 B801              movw R22,R16
 00A4 AA97              sbiw R28,42
 00A6                   .dbline -1
 00A6                   .dbline 82
 00A6           ; }
 00A6           ; 
 00A6           ; /*-------------------------------------------------------------------------*/
 00A6           ; /*
 00A6           ;    prints value in radix, in a field width width, with fill
 00A6           ;    character fill
 00A6           ;    if radix is negative, print as signed quantity
 00A6           ;    if width is negative, left justify
 00A6           ;    if width is 0, use whatever is needed
 00A6           ;    if fill is 0, use ' '
 00A6           ;  */
 00A6           ; 
 00A6           ; static void PutNumber(int value, int radix, int width, char fill)
 00A6           ; {
 00A6                   .dbline 84
 00A6           ;     char buffer[40];
 00A6           ;     int bi = 0;
 00A6 4424              clr R4
 00A8 5524              clr R5
 00AA                   .dbline 87
 00AA           ;     int unsigned uvalue;
 00AA           ;     short int digit;
 00AA           ;     short int left = FALSE;
 00AA 0024              clr R0
 00AC 1124              clr R1
 00AE 19A6              std y+41,R1
 00B0 08A6              std y+40,R0
 00B2                   .dbline 88
 00B2           ;     short int negative = FALSE;
 00B2 EE24              clr R14
 00B4 FF24              clr R15
 00B6                   .dbline 90
 00B6           ; 
 00B6           ;     if (fill == 0) fill = ' ';
 00B6 08AC              ldd R0,y+56
 00B8 0020              tst R0
 00BA 11F4              brne L26
 00BC                   .dbline 90
 00BC 80E2              ldi R24,32
 00BE 88AF              std y+56,R24
 00C0           L26:
 00C0                   .dbline 92
 00C0           ; 
 00C0           ;     if (width < 0) {
 00C0 8EA9              ldd R24,y+54
 00C2 9FA9              ldd R25,y+55
 00C4 8030              cpi R24,0
 00C6 E0E0              ldi R30,0
 00C8 9E07              cpc R25,R30
 00CA 54F4              brge L28
 00CC                   .dbline 92
 00CC                   .dbline 93
 00CC           ;       width = -width;
 00CC 8095              com R24
 00CE 9095              com R25
 00D0 8F5F              subi R24,0xFF
 00D2 9F4F              sbci R25,0xFF
 00D4 9FAB              std y+55,R25
 00D6 8EAB              std y+54,R24
 00D8                   .dbline 94
 00D8           ;       left = TRUE;
 00D8 81E0              ldi R24,1
 00DA 90E0              ldi R25,0
 00DC 99A7              std y+41,R25
 00DE 88A7              std y+40,R24
 00E0                   .dbline 95
 00E0           ;     }
 00E0           L28:
 00E0                   .dbline 96
 00E0 8EA9              ldd R24,y+54
 00E2 9FA9              ldd R25,y+55
 00E4 8030              cpi R24,0
 00E6 E0E0              ldi R30,0
 00E8 9E07              cpc R25,R30
 00EA 3CF0              brlt L32
 00EC 80E5              ldi R24,80
 00EE 90E0              ldi R25,0
 00F0 0EA8              ldd R0,y+54
 00F2 1FA8              ldd R1,y+55
 00F4 8015              cp R24,R0
 00F6 9105              cpc R25,R1
 00F8 24F4              brge L30
 00FA           L32:
 00FA                   .dbline 96
 00FA           ;     if (width < 0 || width > 80) width = 0;
 00FA 0024              clr R0
 00FC 1124              clr R1
 00FE 1FAA              std y+55,R1
 0100 0EAA              std y+54,R0
 0102           L30:
 0102                   .dbline 98
 0102           ; 
 0102           ;     if (radix < 0) {
 0102 8CA9              ldd R24,y+52
 0104 9DA9              ldd R25,y+53
 0106 8030              cpi R24,0
 0108 E0E0              ldi R30,0
 010A 9E07              cpc R25,R30
 010C 8CF4              brge L33
 010E                   .dbline 98
 010E                   .dbline 99
 010E           ;       radix = -radix;
 010E 8095              com R24
 0110 9095              com R25
 0112 8F5F              subi R24,0xFF
 0114 9F4F              sbci R25,0xFF
 0116 9DAB              std y+53,R25
 0118 8CAB              std y+52,R24
 011A                   .dbline 100
 011A           ;       if (value < 0) {
 011A 6030              cpi R22,0
 011C E0E0              ldi R30,0
 011E 7E07              cpc R23,R30
 0120 3CF4              brge L35
 0122                   .dbline 100
 0122                   .dbline 101
 0122           ;         negative = TRUE;
 0122 81E0              ldi R24,1
 0124 90E0              ldi R25,0
 0126 7C01              movw R14,R24
 0128                   .dbline 102
 0128           ;         value = -value;
 0128 6095              com R22
 012A 7095              com R23
 012C 6F5F              subi R22,0xFF
 012E 7F4F              sbci R23,0xFF
 0130                   .dbline 103
 0130           ;       }
 0130           L35:
 0130                   .dbline 104
 0130           ;     }
 0130           L33:
 0130                   .dbline 105
 0130           ;     uvalue = value;
 0130 AB01              movw R20,R22
 0132           L37:
 0132                   .dbline 107
 0132           ;     do
 0132           ;     {
 0132                   .dbline 108
 0132           ;         if (radix != 16)
 0132 8CA9              ldd R24,y+52
 0134 9DA9              ldd R25,y+53
 0136 8031              cpi R24,16

⌨️ 快捷键说明

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