?? thermometer.lis
字號:
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;//時鐘恢復(fù)
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;//時鐘恢復(fù)
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;//時鐘恢復(fù)
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;//提供一個下降沿接收一位數(shù)據(jù)
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;//時鐘恢復(fù)
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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -