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

📄 thermometer.lis

📁 同步串口spi的c语言编程 同步串口spi的c语言编程
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00D4           ;  PORTB=PORTB|0x80;//SCLK=1;//CPOL=1
 00D4 C79A              sbi 0x18,7
 00D6                   .dbline 50
 00D6           ;  PORTB=PORTB|0x10;//CE=1;//Enable Chip_Select
 00D6 C49A              sbi 0x18,4
 00D8                   .dbline 51
 00D8           ;  for(i=0;i<8;i++)             //送地址;
 00D8 4427              clr R20
 00DA 10C0              rjmp L21
 00DC           L18:
 00DC                   .dbline 52
 00DC           ;    {PORTB=PORTB&0x7f;//SCLK=0;//时钟恢复
 00DC                   .dbline 52
 00DC 88B3              in R24,0x18
 00DE 8F77              andi R24,127
 00E0 88BB              out 0x18,R24
 00E2                   .dbline 53
 00E2           ;     if(Address&0x80) PORTB=PORTB|0x20;//SDI=1;//MSB first
 00E2 A7FE              sbrs R10,7
 00E4 02C0              rjmp L22
 00E6                   .dbline 53
 00E6 C59A              sbi 0x18,5
 00E8 03C0              rjmp L23
 00EA           L22:
 00EA                   .dbline 54
 00EA           ;       else       PORTB=PORTB&0xdf;//SDI=0;
 00EA 88B3              in R24,0x18
 00EC 8F7D              andi R24,223
 00EE 88BB              out 0x18,R24
 00F0           L23:
 00F0                   .dbline 55
 00F0 AA0C              lsl R10
 00F2                   .dbline 56
 00F2 C79A              sbi 0x18,7
 00F4                   .dbline 57
 00F4 01E0              ldi R16,1
 00F6 10E0              ldi R17,0
 00F8 83DF              rcall _DelayMs
 00FA                   .dbline 57
 00FA           L19:
 00FA                   .dbline 51
 00FA 4395              inc R20
 00FC           L21:
 00FC                   .dbline 51
 00FC 4830              cpi R20,8
 00FE 70F3              brlo L18
 0100                   .dbline 58
 0100           ;       Address=Address<<1;//左移
 0100           ;     PORTB=PORTB|0x80;//SCLK=1;//上升沿完成,锁存
 0100           ;     DelayMs(1);}
 0100           ;  for(i=0;i<8;i++)             //送地址;
 0100 4427              clr R20
 0102 10C0              rjmp L27
 0104           L24:
 0104                   .dbline 59
 0104           ;    {PORTB=PORTB&0x7f;//SCLK=0;//时钟恢复
 0104                   .dbline 59
 0104 88B3              in R24,0x18
 0106 8F77              andi R24,127
 0108 88BB              out 0x18,R24
 010A                   .dbline 60
 010A           ;     if(Data&0x80) PORTB=PORTB|0x20;//SDI=1;//MSB first
 010A 67FF              sbrs R22,7
 010C 02C0              rjmp L28
 010E                   .dbline 60
 010E C59A              sbi 0x18,5
 0110 03C0              rjmp L29
 0112           L28:
 0112                   .dbline 61
 0112           ;       else       PORTB=PORTB&0xdf;//SDI=0;
 0112 88B3              in R24,0x18
 0114 8F7D              andi R24,223
 0116 88BB              out 0x18,R24
 0118           L29:
 0118                   .dbline 62
 0118 660F              lsl R22
 011A                   .dbline 63
 011A C79A              sbi 0x18,7
 011C                   .dbline 64
 011C 01E0              ldi R16,1
 011E 10E0              ldi R17,0
 0120 6FDF              rcall _DelayMs
 0122                   .dbline 64
 0122           L25:
 0122                   .dbline 58
 0122 4395              inc R20
 0124           L27:
 0124                   .dbline 58
 0124 4830              cpi R20,8
 0126 70F3              brlo L24
 0128                   .dbline 65
 0128           ;       Data=Data<<1;//左移
 0128           ;     PORTB=PORTB|0x80;//SCLK=1;//上升沿完成,锁存
 0128           ;     DelayMs(1);}
 0128           ;   PORTB=PORTB&0xef;//CE=0;
 0128 88B3              in R24,0x18
 012A 8F7E              andi R24,239
 012C 88BB              out 0x18,R24
 012E                   .dbline -2
 012E                   .dbline 66
 012E           ; } 
 012E           L17:
 012E 00D0              rcall pop_gset3
 0130                   .dbline 0 ; func end
 0130 0895              ret
 0132                   .dbsym r i 20 c
 0132                   .dbsym r Data 22 c
 0132                   .dbsym r Address 10 c
 0132                   .dbend
 0132                   .dbfunc e SPI_Read1Byte _SPI_Read1Byte fc
 0132           ;           temp -> R20
 0132           ;              i -> R22
 0132           ;        Address -> R10
                        .even
 0132           _SPI_Read1Byte::
 0132 00D0              rcall push_gset3
 0134 A02E              mov R10,R16
 0136                   .dbline -1
 0136                   .dbline 69
 0136           ; 
 0136           ; uchar SPI_Read1Byte(uchar Address)
 0136           ; {uchar i,temp;
 0136                   .dbline 71
 0136           ; // SDO=1;
 0136           ;  PORTB=PORTB|0x80;//SCLK=1;//CPOL=1
 0136 C79A              sbi 0x18,7
 0138                   .dbline 72
 0138           ;  PORTB=PORTB|0x10;//CE=1;//Enable Chip_Select
 0138 C49A              sbi 0x18,4
 013A                   .dbline 73
 013A           ;  for(i=0;i<8;i++)             //送地址;
 013A 6627              clr R22
 013C 10C0              rjmp L34
 013E           L31:
 013E                   .dbline 74
 013E           ;    {PORTB=PORTB&0x7f;//SCLK=0;//时钟恢复
 013E                   .dbline 74
 013E 88B3              in R24,0x18
 0140 8F77              andi R24,127
 0142 88BB              out 0x18,R24
 0144                   .dbline 75
 0144           ;     if(Address&0x80) PORTB=PORTB|0x20;//SDI=1;//MSB first
 0144 A7FE              sbrs R10,7
 0146 02C0              rjmp L35
 0148                   .dbline 75
 0148 C59A              sbi 0x18,5
 014A 03C0              rjmp L36
 014C           L35:
 014C                   .dbline 76
 014C           ;       else       PORTB=PORTB&0xdf;//SDI=0;
 014C 88B3              in R24,0x18
 014E 8F7D              andi R24,223
 0150 88BB              out 0x18,R24
 0152           L36:
 0152                   .dbline 77
 0152 AA0C              lsl R10
 0154                   .dbline 78
 0154 C79A              sbi 0x18,7
 0156                   .dbline 79
 0156 01E0              ldi R16,1
 0158 10E0              ldi R17,0
 015A 52DF              rcall _DelayMs
 015C                   .dbline 79
 015C           L32:
 015C                   .dbline 73
 015C 6395              inc R22
 015E           L34:
 015E                   .dbline 73
 015E 6830              cpi R22,8
 0160 70F3              brlo L31
 0162                   .dbline 80
 0162           ;       Address=Address<<1;//左移
 0162           ;     PORTB=PORTB|0x80;//SCLK=1;//上升沿完成,锁存
 0162           ;    DelayMs(1);}
 0162           ;  for(i=0;i<8;i++)
 0162 6627              clr R22
 0164 0EC0              rjmp L40
 0166           L37:
 0166                   .dbline 81
 0166           ;    {PORTB=PORTB&0x7f;//SCLK=0;//提供一个下降沿接收一位数据
 0166                   .dbline 81
 0166 88B3              in R24,0x18
 0168 8F77              andi R24,127
 016A 88BB              out 0x18,R24
 016C                   .dbline 82
 016C           ;     temp=temp<<1;
 016C 440F              lsl R20
 016E                   .dbline 83
 016E           ;     NOP();
 016E 0000              nop
 0170                   .dbline 84
 0170           ;       NOP();
 0170 0000              nop
 0172                   .dbline 86
 0172           ;       //if(SDO) temp=temp|0x01;//采样
 0172           ;       if(PINB&0x40) temp=temp|0x01;
 0172 B69B              sbis 0x16,6
 0174 01C0              rjmp L41
 0176                   .dbline 86
 0176 4160              ori R20,1
 0178           L41:
 0178                   .dbline 87
 0178 C79A              sbi 0x18,7
 017A                   .dbline 88
 017A 01E0              ldi R16,1
 017C 10E0              ldi R17,0
 017E 40DF              rcall _DelayMs
 0180                   .dbline 88
 0180           L38:
 0180                   .dbline 80
 0180 6395              inc R22
 0182           L40:
 0182                   .dbline 80
 0182 6830              cpi R22,8
 0184 80F3              brlo L37
 0186                   .dbline 89
 0186           ;       PORTB=PORTB|0x80;//SCLK=1;//时钟恢复
 0186           ;     DelayMs(1);}
 0186           ;  PORTB=PORTB&0xef;//CE=0;//Disbale Chip_Select
 0186 88B3              in R24,0x18
 0188 8F7E              andi R24,239
 018A 88BB              out 0x18,R24
 018C                   .dbline 90
 018C           ;  return(temp);
 018C 042F              mov R16,R20
 018E                   .dbline -2
 018E           L30:
 018E 00D0              rcall pop_gset3
 0190                   .dbline 0 ; func end
 0190 0895              ret
 0192                   .dbsym r temp 20 c
 0192                   .dbsym r i 22 c
 0192                   .dbsym r Address 10 c
 0192                   .dbend
 0192                   .dbfunc e main _main fV
 0192           ;           Read -> R20
                        .even
 0192           _main::
 0192                   .dbline -1
 0192                   .dbline 94
 0192           ; }
 0192           ; 
 0192           ; void main(void)
 0192           ; {uchar Read;
 0192                   .dbline 95
 0192           ;  DDRA=0xff;
 0192 8FEF              ldi R24,255
 0194 8ABB              out 0x1a,R24
 0196                   .dbline 96
 0196           ;  DDRC=0xff;
 0196 84BB              out 0x14,R24
 0198                   .dbline 97
 0198           ;  DDRB=0xbf;//1011 1111
 0198 8FEB              ldi R24,191
 019A 87BB              out 0x17,R24
 019C                   .dbline 98
 019C           ;  SPI_Init();
 019C 60DF              rcall _SPI_Init
 019E                   .dbline 99
 019E           ;  SPI_Write1Byte(0x80,0xf0);//1 1 1 1SHOT R2 R1 R0 SD
 019E 20EF              ldi R18,240
 01A0 00E8              ldi R16,128
 01A2 92DF              rcall _SPI_Write1Byte
 01A4 0DC0              rjmp L45
 01A6           L44:
 01A6                   .dbline 102
 01A6                   .dbline 102
 01A6 01E0              ldi R16,1
 01A8 C4DF              rcall _SPI_Read1Byte
 01AA 402F              mov R20,R16
 01AC                   .dbline 103
 01AC 02E0              ldi R16,2
 01AE C1DF              rcall _SPI_Read1Byte
 01B0 00930E00          sts _Temp,R16
 01B4                   .dbline 104
 01B4 20E0              ldi R18,<_Data
 01B6 30E0              ldi R19,>_Data
 01B8 57DF              rcall _SPI_Process
 01BA                   .dbline 105
 01BA 00E0              ldi R16,<_Data
 01BC 10E0              ldi R17,>_Data
 01BE 2EDF              rcall _Display
 01C0                   .dbline 106
 01C0           L45:
 01C0                   .dbline 101
 01C0 F2CF              rjmp L44
 01C2           X1:
 01C2                   .dbline -2
 01C2                   .dbline 107
 01C2           ;                    //1 1 1 1     0  0  0  0//SD=0 indicate continuous convertion   
 01C2           ;  while(1)
 01C2           ;   {Read=SPI_Read1Byte(0x01);//Low Byte
 01C2           ;    Temp=SPI_Read1Byte(0x02);//Hign Byte
 01C2           ;    SPI_Process(Temp,Data);
 01C2           ;    Display(Data);
 01C2           ;    }
 01C2           ; }
 01C2           L43:
 01C2                   .dbline 0 ; func end
 01C2 0895              ret
 01C4                   .dbsym r Read 20 c
 01C4                   .dbend

⌨️ 快捷键说明

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