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

📄 thermometer-c51.lis

📁 AVRkaifashili.rar
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00F2 2224              clr R2
 00F4 E42F              mov R30,R20
 00F6 F52F              mov R31,R21
 00F8 2382              std z+3,R2
 00FA                   .dbline -2
 00FA                   .dbline 56
 00FA           ; }
 00FA           L36:
 00FA 00D0              rcall pop_gset2
 00FC                   .dbline 0 ; func end
 00FC 0895              ret
 00FE                   .dbsym r i 22 c
 00FE                   .dbsym r p2 20 pc
 00FE                   .dbsym r p1 22 pc
 00FE                   .dbend
 00FE                   .dbfunc e SPI_Write1Byte _SPI_Write1Byte fV
 00FE           ;              i -> R20
 00FE           ;           Data -> R22
 00FE           ;        Address -> R10
                        .even
 00FE           _SPI_Write1Byte::
 00FE 00D0              rcall push_gset3
 0100 622F              mov R22,R18
 0102 A02E              mov R10,R16
 0104                   .dbline -1
 0104                   .dbline 59
 0104           ; 
 0104           ; void SPI_Write1Byte(uchar Address,uchar Data)
 0104           ; {uchar i;
 0104                   .dbline 60
 0104           ;  Set_SDI(0);//SDI=0;
 0104 0027              clr R16
 0106 BDDF              rcall _Set_SDI
 0108                   .dbline 61
 0108           ;  Set_SCLK(1);//SCLK=1;//CPOL=1
 0108 01E0              ldi R16,1
 010A C4DF              rcall _Set_SCLK
 010C                   .dbline 62
 010C           ;  Set_CE(1);//CE=1;//Enable Chip_Select
 010C 01E0              ldi R16,1
 010E B0DF              rcall _Set_CE
 0110                   .dbline 63
 0110           ;  for(i=0;i<8;i++)             //送地址;
 0110 4427              clr R20
 0112 0FC0              rjmp L41
 0114           L38:
 0114                   .dbline 64
 0114           ;    {Set_SCLK(0);//SCLK=0;//时钟恢复
 0114                   .dbline 64
 0114 0027              clr R16
 0116 BEDF              rcall _Set_SCLK
 0118                   .dbline 65
 0118           ;     if(Address&0x80) Set_SDI(1);//SDI=1;//MSB first
 0118 A7FE              sbrs R10,7
 011A 03C0              rjmp L42
 011C                   .dbline 65
 011C 01E0              ldi R16,1
 011E B1DF              rcall _Set_SDI
 0120 02C0              rjmp L43
 0122           L42:
 0122                   .dbline 66
 0122           ;       else       Set_SDI(0);//SDI=0;
 0122 0027              clr R16
 0124 AEDF              rcall _Set_SDI
 0126           L43:
 0126                   .dbline 67
 0126 AA0C              lsl R10
 0128                   .dbline 68
 0128 01E0              ldi R16,1
 012A B4DF              rcall _Set_SCLK
 012C                   .dbline 69
 012C 0EE1              ldi R16,30
 012E 79DF              rcall _DelayNOP
 0130                   .dbline 69
 0130           L39:
 0130                   .dbline 63
 0130 4395              inc R20
 0132           L41:
 0132                   .dbline 63
 0132 4830              cpi R20,8
 0134 78F3              brlo L38
 0136                   .dbline 70
 0136           ;       Address=Address<<1;//左移
 0136           ;     Set_SCLK(1);//SCLK=1;//上升沿完成,锁存
 0136           ;     DelayNOP(30);}
 0136           ;  for(i=0;i<8;i++)             //送地址;
 0136 4427              clr R20
 0138 0FC0              rjmp L47
 013A           L44:
 013A                   .dbline 71
 013A           ;    {Set_SCLK(0);//SCLK=0;//时钟恢复
 013A                   .dbline 71
 013A 0027              clr R16
 013C ABDF              rcall _Set_SCLK
 013E                   .dbline 72
 013E           ;     if(Data&0x80) Set_SDI(1);//SDI=1;//MSB first
 013E 67FF              sbrs R22,7
 0140 03C0              rjmp L48
 0142                   .dbline 72
 0142 01E0              ldi R16,1
 0144 9EDF              rcall _Set_SDI
 0146 02C0              rjmp L49
 0148           L48:
 0148                   .dbline 73
 0148           ;       else       Set_SDI(0);//SDI=0;
 0148 0027              clr R16
 014A 9BDF              rcall _Set_SDI
 014C           L49:
 014C                   .dbline 74
 014C 660F              lsl R22
 014E                   .dbline 75
 014E 01E0              ldi R16,1
 0150 A1DF              rcall _Set_SCLK
 0152                   .dbline 76
 0152 0EE1              ldi R16,30
 0154 66DF              rcall _DelayNOP
 0156                   .dbline 76
 0156           L45:
 0156                   .dbline 70
 0156 4395              inc R20
 0158           L47:
 0158                   .dbline 70
 0158 4830              cpi R20,8
 015A 78F3              brlo L44
 015C                   .dbline 77
 015C           ;       Data=Data<<1;//左移
 015C           ;     Set_SCLK(1);//SCLK=1;//上升沿完成,锁存
 015C           ;     DelayNOP(30);}
 015C           ;   Set_CE(0);//CE=0;
 015C 0027              clr R16
 015E 88DF              rcall _Set_CE
 0160                   .dbline -2
 0160                   .dbline 78
 0160           ; } 
 0160           L37:
 0160 00D0              rcall pop_gset3
 0162                   .dbline 0 ; func end
 0162 0895              ret
 0164                   .dbsym r i 20 c
 0164                   .dbsym r Data 22 c
 0164                   .dbsym r Address 10 c
 0164                   .dbend
 0164                   .dbfunc e SPI_Read1Byte _SPI_Read1Byte fc
 0164           ;           temp -> R20
 0164           ;              i -> R22
 0164           ;        Address -> R10
                        .even
 0164           _SPI_Read1Byte::
 0164 00D0              rcall push_gset3
 0166 A02E              mov R10,R16
 0168                   .dbline -1
 0168                   .dbline 81
 0168           ; 
 0168           ; uchar SPI_Read1Byte(uchar Address)
 0168           ; {uchar i,temp;
 0168                   .dbline 83
 0168           ;  //SDO=1;
 0168           ;  Set_SCLK(1);//SCLK=1;//CPOL=1
 0168 01E0              ldi R16,1
 016A 94DF              rcall _Set_SCLK
 016C                   .dbline 84
 016C           ;  Set_CE(1);//CE=1;//Enable Chip_Select
 016C 01E0              ldi R16,1
 016E 80DF              rcall _Set_CE
 0170                   .dbline 85
 0170           ;  for(i=0;i<8;i++)             //送地址;
 0170 6627              clr R22
 0172 0FC0              rjmp L54
 0174           L51:
 0174                   .dbline 86
 0174           ;    {Set_SCLK(0);//SCLK=0;//时钟恢复
 0174                   .dbline 86
 0174 0027              clr R16
 0176 8EDF              rcall _Set_SCLK
 0178                   .dbline 87
 0178           ;     if(Address&0x80) Set_SDI(1);//SDI=1;//MSB first
 0178 A7FE              sbrs R10,7
 017A 03C0              rjmp L55
 017C                   .dbline 87
 017C 01E0              ldi R16,1
 017E 81DF              rcall _Set_SDI
 0180 02C0              rjmp L56
 0182           L55:
 0182                   .dbline 88
 0182           ;       else       Set_SDI(0);//SDI=0;
 0182 0027              clr R16
 0184 7EDF              rcall _Set_SDI
 0186           L56:
 0186                   .dbline 89
 0186 AA0C              lsl R10
 0188                   .dbline 90
 0188 01E0              ldi R16,1
 018A 84DF              rcall _Set_SCLK
 018C                   .dbline 91
 018C 0EE1              ldi R16,30
 018E 49DF              rcall _DelayNOP
 0190                   .dbline 91
 0190           L52:
 0190                   .dbline 85
 0190 6395              inc R22
 0192           L54:
 0192                   .dbline 85
 0192 6830              cpi R22,8
 0194 78F3              brlo L51
 0196                   .dbline 92
 0196           ;       Address=Address<<1;//左移
 0196           ;     Set_SCLK(1);//SCLK=1;//上升沿完成,锁存
 0196           ;     DelayNOP(30);}
 0196           ;  for(i=0;i<8;i++)
 0196 6627              clr R22
 0198 0DC0              rjmp L60
 019A           L57:
 019A                   .dbline 93
 019A           ;    {Set_SCLK(0);//SCLK=0;//提供一个下降沿接收一位数据
 019A                   .dbline 93
 019A 0027              clr R16
 019C 7BDF              rcall _Set_SCLK
 019E                   .dbline 94
 019E           ;     temp=temp<<1;
 019E 440F              lsl R20
 01A0                   .dbline 95
 01A0           ;     DelayNOP(30);
 01A0 0EE1              ldi R16,30
 01A2 3FDF              rcall _DelayNOP
 01A4                   .dbline 96
 01A4           ;       if(PIND&0x40) temp=temp|0x01;
 01A4 869B              sbis 0x10,6
 01A6 01C0              rjmp L61
 01A8                   .dbline 96
 01A8 4160              ori R20,1
 01AA           L61:
 01AA                   .dbline 98
 01AA 01E0              ldi R16,1
 01AC 73DF              rcall _Set_SCLK
 01AE                   .dbline 99
 01AE 0EE1              ldi R16,30
 01B0 38DF              rcall _DelayNOP
 01B2                   .dbline 99
 01B2           L58:
 01B2                   .dbline 92
 01B2 6395              inc R22
 01B4           L60:
 01B4                   .dbline 92
 01B4 6830              cpi R22,8
 01B6 88F3              brlo L57
 01B8                   .dbline 100
 01B8           ;       //if(SDO) temp=temp|0x01;//采样
 01B8           ;       Set_SCLK(1);//SCLK=1;//时钟恢复
 01B8           ;     DelayNOP(30);}
 01B8           ;  Set_CE(0);//CE=0;//Disbale Chip_Select
 01B8 0027              clr R16
 01BA 5ADF              rcall _Set_CE
 01BC                   .dbline 101
 01BC           ;  return(temp);
 01BC 042F              mov R16,R20
 01BE                   .dbline -2
 01BE           L50:
 01BE 00D0              rcall pop_gset3
 01C0                   .dbline 0 ; func end
 01C0 0895              ret
 01C2                   .dbsym r temp 20 c
 01C2                   .dbsym r i 22 c
 01C2                   .dbsym r Address 10 c
 01C2                   .dbend
 01C2                   .dbfunc e main _main fV
 01C2           ;              i -> <dead>
 01C2           ;           Temp -> y+2
 01C2           ;      Read_Temp -> y+0
                        .even
 01C2           _main::
 01C2 2697              sbiw R28,6
 01C4                   .dbline -1
 01C4                   .dbline 105
 01C4           ; }
 01C4           ; 
 01C4           ; void main(void)
 01C4           ; {uchar Read_Temp[2];
 01C4                   .dbline 108
 01C4           ;  uchar Temp[4];
 01C4           ;  uchar i;
 01C4           ;  DDRA=0xff;
 01C4 8FEF              ldi R24,255
 01C6 8ABB              out 0x1a,R24
 01C8                   .dbline 109
 01C8           ;  DDRC=0xff;
 01C8 84BB              out 0x14,R24
 01CA                   .dbline 110
 01CA           ;  DDRD=0xbf;
 01CA 8FEB              ldi R24,191
 01CC 81BB              out 0x11,R24
 01CE                   .dbline 111
 01CE           ;  PORTA=0xff;
 01CE 8FEF              ldi R24,255
 01D0 8BBB              out 0x1b,R24
 01D2                   .dbline 112
 01D2           ;  PORTC=0x00;
 01D2 2224              clr R2
 01D4 25BA              out 0x15,R2
 01D6                   .dbline 113
 01D6           ;  DelayMs(2500);
 01D6 04EC              ldi R16,2500
 01D8 19E0              ldi R17,9
 01DA 12DF              rcall _DelayMs
 01DC                   .dbline 114
 01DC           ;  PORTC=0xff;
 01DC 8FEF              ldi R24,255
 01DE 85BB              out 0x15,R24
 01E0                   .dbline 115
 01E0           ;  SPI_Init();
 01E0 62DF              rcall _SPI_Init
 01E2                   .dbline 116
 01E2           ;  SPI_Write1Byte(0x80,0xf0);//1 1 1 1SHOT R2 R1 R0 SD,8bit sampling
 01E2 20EF              ldi R18,240
 01E4 00E8              ldi R16,128
 01E6 8BDF              rcall _SPI_Write1Byte
 01E8 12C0              rjmp L65
 01EA           L64:
 01EA                   .dbline 119
 01EA                   .dbline 119
 01EA 01E0              ldi R16,1
 01EC BBDF              rcall _SPI_Read1Byte
 01EE 0983              std y+1,R16
 01F0                   .dbline 120
 01F0 02E0              ldi R16,2
 01F2 B8DF              rcall _SPI_Read1Byte
 01F4 0883              std y+0,R16
 01F6                   .dbline 121
 01F6 2C2F              mov R18,R28
 01F8 3D2F              mov R19,R29
 01FA 2E5F              subi R18,254  ; offset = 2
 01FC 3F4F              sbci R19,255
 01FE 0C2F              mov R16,R28
 0200 1D2F              mov R17,R29
 0202 55DF              rcall _SPI_Process
 0204                   .dbline 123
 0204 0C2F              mov R16,R28
 0206 1D2F              mov R17,R29
 0208 0E5F              subi R16,254  ; offset = 2
 020A 1F4F              sbci R17,255
 020C 10DF              rcall _Display
 020E                   .dbline 124
 020E           L65:
 020E                   .dbline 118
 020E EDCF              rjmp L64
 0210           X2:
 0210                   .dbline -2
 0210                   .dbline 125
 0210           ;                    //1 1 1 1     0  0  0  0//SD=0 indicate continuous convertion   
 0210           ;  while(1)
 0210           ;   {Read_Temp[1]=SPI_Read1Byte(0x01);//Low Byte
 0210           ;    Read_Temp[0]=SPI_Read1Byte(0x02);//Hign Byte
 0210           ;    SPI_Process(Read_Temp,Temp);
 0210           ;    //DelayMs(250);
 0210           ;    Display(Temp);
 0210           ;   }
 0210           ; }
 0210           L63:
 0210 2696              adiw R28,6
 0212                   .dbline 0 ; func end
 0212 0895              ret
 0214                   .dbsym l i 1 c
 0214                   .dbsym l Temp 2 A[4:4]c
 0214                   .dbsym l Read_Temp 0 A[2:2]c
 0214                   .dbend

⌨️ 快捷键说明

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