📄 thermometer.lis
字号:
.module Thermometer.c
.area data(ram, con, rel)
0000 _Table::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .dbfile J:\AVRpractice\BOOK\SPI\Thermometer.c
000A .dbsym e Table _Table A[10:10]c
000A _Data::
000A .blkb 2
.area idata
000A 0000 .byte 0,0
.area data(ram, con, rel)
000C .dbfile J:\AVRpractice\BOOK\SPI\Thermometer.c
000C .blkb 2
.area idata
000C 0000 .byte 0,0
.area data(ram, con, rel)
000E .dbfile J:\AVRpractice\BOOK\SPI\Thermometer.c
000E .dbsym e Data _Data A[4:4]c
000E _Temp::
000E .blkb 1
.area idata
000E 00 .byte 0
.area data(ram, con, rel)
000F .dbfile J:\AVRpractice\BOOK\SPI\Thermometer.c
000F .dbsym e Temp _Temp c
.area text(rom, con, rel)
0000 .dbfile J:\AVRpractice\BOOK\SPI\Thermometer.c
0000 .dbfunc e DelayMs _DelayMs fV
0000 ; j -> R20
0000 ; i -> R16,R17
.even
0000 _DelayMs::
0000 00D0 rcall push_gset1
0002 .dbline -1
0002 .dbline 15
0002 ; #include <io8535v.h>
0002 ; #include <macros.h>
0002 ; #define uchar unsigned char
0002 ; #define uint unsigned int
0002 ; //SPI-AVR interface
0002 ; //sbit CE=PB^4; 0001 0000 0x10 0xef
0002 ; //sbit SCLK=PB^7; 1000 0000 0x80 0x7f
0002 ; //sbit SDO=PB^6; 0100 0000 0x40 0xbf
0002 ; //sbit SDI=PB^5; 0010 0000 0x20 0xdf
0002 ; uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0002 ; uchar Data[4]={0,0,0,0};
0002 ; uchar Temp=0;
0002 ;
0002 ; void DelayMs(uint i)
0002 ; {uchar j;
0002 .dbline 16
0002 ; for(;i!=0;i--)
0002 07C0 rjmp L5
0004 L2:
0004 .dbline 17
0004 .dbline 17
0004 44E6 ldi R20,100
0006 01C0 rjmp L9
0008 L6:
0008 .dbline 17
0008 .dbline 17
0008 .dbline 17
0008 L7:
0008 .dbline 17
0008 4A95 dec R20
000A L9:
000A .dbline 17
000A 4423 tst R20
000C E9F7 brne L6
000E .dbline 17
000E L3:
000E .dbline 16
000E 0150 subi R16,1
0010 1040 sbci R17,0
0012 L5:
0012 .dbline 16
0012 0030 cpi R16,0
0014 0107 cpc R16,R17
0016 B1F7 brne L2
0018 X0:
0018 .dbline -2
0018 .dbline 18
0018 ; {for(j=100;j!=0;j--) {;}}
0018 ; }
0018 L1:
0018 00D0 rcall pop_gset1
001A .dbline 0 ; func end
001A 0895 ret
001C .dbsym r j 20 c
001C .dbsym r i 16 i
001C .dbend
001C .dbfunc e Display _Display fV
001C ; sel -> R20
001C ; i -> R22
001C ; p -> R10,R11
.even
001C _Display::
001C 00D0 rcall push_gset3
001E A02E mov R10,R16
0020 B12E mov R11,R17
0022 .dbline -1
0022 .dbline 21
0022 ;
0022 ; void Display(uchar *p)
0022 ; {uchar i,sel=0x01;
0022 .dbline 21
0022 41E0 ldi R20,1
0024 .dbline 22
0024 ; for(i=0;i<4;i++)
0024 6627 clr R22
0026 17C0 rjmp L14
0028 L11:
0028 .dbline 23
0028 .dbline 23
0028 4BBB out 0x1b,R20
002A .dbline 24
002A E62F mov R30,R22
002C FF27 clr R31
002E EA0D add R30,R10
0030 FB1D adc R31,R11
0032 E081 ldd R30,z+0
0034 FF27 clr R31
0036 80E0 ldi R24,<_Table
0038 90E0 ldi R25,>_Table
003A E80F add R30,R24
003C F91F adc R31,R25
003E 2080 ldd R2,z+0
0040 3324 clr R3
0042 8FEF ldi R24,255
0044 90E0 ldi R25,0
0046 8219 sub R24,R2
0048 9309 sbc R25,R3
004A 85BB out 0x15,R24
004C .dbline 25
004C 04E1 ldi R16,20
004E 10E0 ldi R17,0
0050 D7DF rcall _DelayMs
0052 .dbline 26
0052 440F lsl R20
0054 .dbline 27
0054 L12:
0054 .dbline 22
0054 6395 inc R22
0056 L14:
0056 .dbline 22
0056 6430 cpi R22,4
0058 38F3 brlo L11
005A .dbline -2
005A .dbline 28
005A ; {PORTA=sel;
005A ; PORTC=0xff-Table[p[i]];
005A ; DelayMs(20);
005A ; sel=sel<<1;
005A ; }
005A ; }
005A L10:
005A 00D0 rcall pop_gset3
005C .dbline 0 ; func end
005C 0895 ret
005E .dbsym r sel 20 c
005E .dbsym r i 22 c
005E .dbsym r p 10 pc
005E .dbend
005E .dbfunc e SPI_Init _SPI_Init fV
.even
005E _SPI_Init::
005E .dbline -1
005E .dbline 31
005E ;
005E ; void SPI_Init(void)
005E ; {//CE=0;//Disable Chip_Select
005E .dbline 32
005E ; PORTB=PORTB&0xef;
005E 88B3 in R24,0x18
0060 8F7E andi R24,239
0062 88BB out 0x18,R24
0064 .dbline 34
0064 ; //SCLK=1;//Clock Polarity(CPOL)=1
0064 ; PORTB=PORTB|0x80;
0064 C79A sbi 0x18,7
0066 .dbline -2
0066 .dbline 35
0066 ; }
0066 L15:
0066 .dbline 0 ; func end
0066 0895 ret
0068 .dbend
0068 .dbfunc e SPI_Process _SPI_Process fV
0068 ; i -> R22
0068 ; p2 -> R20,R21
0068 ; p1 -> R10
.even
0068 _SPI_Process::
0068 00D0 rcall push_gset3
006A 422F mov R20,R18
006C 532F mov R21,R19
006E A02E mov R10,R16
0070 .dbline -1
0070 .dbline 38
0070 ;
0070 ; void SPI_Process(uchar p1,uchar *p2)
0070 ; {uchar i;
0070 .dbline 39
0070 ; i=p1;
0070 6A2D mov R22,R10
0072 .dbline 40
0072 ; p2[0]=0;
0072 2224 clr R2
0074 E42F mov R30,R20
0076 F52F mov R31,R21
0078 2082 std z+0,R2
007A .dbline 41
007A ; p2[1]=i/100;
007A 14E6 ldi R17,100
007C 062F mov R16,R22
007E 00D0 rcall div8u
0080 E42F mov R30,R20
0082 F52F mov R31,R21
0084 0183 std z+1,R16
0086 .dbline 42
0086 ; p2[2]=(i-i/100*p2[1])/10;
0086 14E6 ldi R17,100
0088 062F mov R16,R22
008A 00D0 rcall div8u
008C E42F mov R30,R20
008E F52F mov R31,R21
0090 1181 ldd R17,z+1
0092 00D0 rcall mpy8s
0094 202E mov R2,R16
0096 062F mov R16,R22
0098 0219 sub R16,R2
009A 1AE0 ldi R17,10
009C 00D0 rcall div8u
009E E42F mov R30,R20
00A0 F52F mov R31,R21
00A2 0283 std z+2,R16
00A4 .dbline 43
00A4 ; p2[3]=i-p2[1]*100-p2[2]*10;
00A4 E42F mov R30,R20
00A6 F52F mov R31,R21
00A8 1181 ldd R17,z+1
00AA 04E6 ldi R16,100
00AC 00D0 rcall mpy8s
00AE 262E mov R2,R22
00B0 201A sub R2,R16
00B2 E42F mov R30,R20
00B4 F52F mov R31,R21
00B6 1281 ldd R17,z+2
00B8 0AE0 ldi R16,10
00BA 00D0 rcall mpy8s
00BC 201A sub R2,R16
00BE E42F mov R30,R20
00C0 F52F mov R31,R21
00C2 2382 std z+3,R2
00C4 .dbline -2
00C4 .dbline 44
00C4 ; }
00C4 L16:
00C4 00D0 rcall pop_gset3
00C6 .dbline 0 ; func end
00C6 0895 ret
00C8 .dbsym r i 22 c
00C8 .dbsym r p2 20 pc
00C8 .dbsym r p1 10 c
00C8 .dbend
00C8 .dbfunc e SPI_Write1Byte _SPI_Write1Byte fV
00C8 ; i -> R20
00C8 ; Data -> R22
00C8 ; Address -> R10
.even
00C8 _SPI_Write1Byte::
00C8 00D0 rcall push_gset3
00CA 622F mov R22,R18
00CC A02E mov R10,R16
00CE .dbline -1
00CE .dbline 47
00CE ;
00CE ; void SPI_Write1Byte(uchar Address,uchar Data)
00CE ; {uchar i;
00CE .dbline 48
00CE ; PORTB=PORTB&0xdf;//SDI=0;
00CE 88B3 in R24,0x18
00D0 8F7D andi R24,223
00D2 88BB out 0x18,R24
00D4 .dbline 49
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -