📄 measure.lis
字号:
.module measure.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\xzy_bupt\桌面\measure_temp\measure.c
.area lit(rom, con, rel)
0000 _C1::
0000 000080C0 .word 0x0,0xc080
0004 .dbsym e C1 _C1 kD
0004 _C2::
0004 54E3253D .word 0xe354,0x3d25
0008 .dbsym e C2 _C2 kD
0008 _C3::
0008 A2E73BB6 .word 0xe7a2,0xb63b
000C .dbsym e C3 _C3 kD
000C _T1::
000C 0AD7233C .word 0xd70a,0x3c23
0010 .dbsym e T1 _T1 kD
0010 _T2::
0010 ACC5A738 .word 0xc5ac,0x38a7
0014 .dbsym e T2 _T2 kD
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\xzy_bupt\桌面\measure_temp\measure.c
0000 .dbfunc e shxx_config _shxx_config fV
.even
0000 _shxx_config::
0000 .dbline -1
0000 .dbline 43
0000 ; #include <iom128v.h> //Microcontroller specific library, e.g. port definitions
0000 ;
0000 ; #include <math.h> //Keil library
0000 ; #include <stdio.h> //Keil library
0000 ; #include <macros.h>
0000 ; const float C1=-4.0; // for 12 Bit
0000 ; const float C2=+0.0405; // for 12 Bit
0000 ; const float C3=-0.0000028; // for 12 Bit
0000 ; const float T1=+0.01; // for 14 Bit @ 5V
0000 ; const float T2=+0.00008; // for 14 Bit @ 5V
0000 ;
0000 ; unsigned char cwendu1,cwendu2;
0000 ; unsigned int uwendu;
0000 ; float fwendu;
0000 ;
0000 ;
0000 ; enum {TEMP,HUMI};
0000 ;
0000 ;
0000 ;
0000 ; #define noACK 0
0000 ; #define ACK 1
0000 ; //adr command r/w
0000 ; #define STATUS_REG_W 0x06 //000 0011 0
0000 ; #define STATUS_REG_R 0x07 //000 0011 1
0000 ; #define MEASURE_TEMP 0x03 //000 0001 1
0000 ; #define MEASURE_HUMI 0x05 //000 0010 1
0000 ; #define RESET 0x1e //000 1111 0
0000 ;
0000 ;
0000 ; #define DATA_SHTxx (1<<1) // PF0
0000 ; #define DATA_TO_1() (PORTF |= DATA_SHTxx) // PF0='0' //置0
0000 ; #define DATA_TO_0() (PORTF &= ~DATA_SHTxx) // PF0='float' //置1
0000 ; #define DATA_status() (PINF & DATA_SHTxx) // read PF0 pin
0000 ;
0000 ; #define SCK_SHTxx (1<<2) // PF0
0000 ; #define SCK_TO_0() (PORTF &= ~SCK_SHTxx) // PF0='0'
0000 ; #define SCK_TO_1() (PORTF |= SCK_SHTxx) // PF0='float' //置0
0000 ; #define SCK_status() (PINF & SCK_SHTxx) // read PF0 pin //置1
0000 ; //----------------------------------------------------------------------------------
0000 ;
0000 ; void shxx_config()
0000 ; {
0000 .dbline 45
0000 ; //DDRF &= ~DATA_SHTxx ; // 输入模式(上电时为高电平)
0000 ; DDRF |= 0x02;//(1<<1)//DATA_SHTxx; //配置为输出
0000 80916100 lds R24,97
0004 8260 ori R24,2
0006 80936100 sts 97,R24
000A .dbline 46
000A ; PORTF |= 0x02;//(1<<1)//DATA_SHTxx ; // 输出锁存器写0
000A 80916200 lds R24,98
000E 8260 ori R24,2
0010 80936200 sts 98,R24
0014 .dbline 50
0014 ;
0014 ;
0014 ; // DDRF &= ~SCK_SHTxx; // 输入模式(上电时为高电平)
0014 ; DDRF |=0x04;//(1<<2);// SCK_SHTxx; //配置为输出
0014 80916100 lds R24,97
0018 8460 ori R24,4
001A 80936100 sts 97,R24
001E .dbline 51
001E ; PORTF &= 0xfb;//~SCK_SHTxx; // 输出锁存器写0
001E 80916200 lds R24,98
0022 8B7F andi R24,251
0024 80936200 sts 98,R24
0028 .dbline -2
0028 L2:
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbend
002A .dbfunc e s_write_byte _s_write_byte fc
002A ; merror -> R20
002A ; error -> R10
002A ; i -> R22
002A ; value -> R16
.even
002A _s_write_byte::
002A 0E940000 xcall push_xgset5
002E .dbline -1
002E .dbline 57
002E ;
002E ; }
002E ; char s_write_byte(unsigned char value)
002E ; //----------------------------------------------------------------------------------
002E ; // writes a byte on the Sensibus and checks the acknowledge
002E ; {
002E .dbline 58
002E ; unsigned char i,error=0,merror=0;
002E AA24 clr R10
0030 .dbline 58
0030 4427 clr R20
0032 .dbline 59
0032 ; DDRF |=0x06;
0032 80916100 lds R24,97
0036 8660 ori R24,6
0038 80936100 sts 97,R24
003C .dbline 70
003C ; // for (i=0x80;i>0;i/=2)
003C ; /*// while(i>0) //shift bit for masking
003C ; { if (i & value) PORTF |=0x02;//DATA=1; //masking value with i , write to SENSI-BUS
003C ; else PORTF &=0xfd;//DATA=0;
003C ; PORTF |=0x04;//SCK=1; //clk for SENSI-BUS
003C ; //_NOP();_NOP();_NOP(); //pulswith approx. 5 us
003C ; PORTF &=0xfb;//SCK=0;
003C ; //i=i/2;
003C ; }
003C ; */
003C ; PORTF |=0x02;
003C 80916200 lds R24,98
0040 8260 ori R24,2
0042 80936200 sts 98,R24
0046 .dbline 71
0046 ; PORTF &=0xfb;
0046 80916200 lds R24,98
004A 8B7F andi R24,251
004C 80936200 sts 98,R24
0050 .dbline 72
0050 ; _NOP();_NOP();_NOP();
0050 0000 nop
0052 .dbline 72
0052 0000 nop
0054 .dbline 72
0054 0000 nop
0056 .dbline 73
0056 ; i=0x80; //shift bit for masking
0056 60E8 ldi R22,128
0058 .dbline 74
0058 ; { if (i & value)
0058 .dbline 74
0058 262E mov R2,R22
005A 2022 and R2,R16
005C 31F0 breq L4
005E X0:
005E .dbline 75
005E ; PORTF |=0x02;//DATA=1; //masking value with i , write to SENSI-BUS
005E 80916200 lds R24,98
0062 8260 ori R24,2
0064 80936200 sts 98,R24
0068 05C0 xjmp L5
006A L4:
006A .dbline 76
006A ; else PORTF &=0xfd;//DATA=0;
006A 80916200 lds R24,98
006E 8D7F andi R24,253
0070 80936200 sts 98,R24
0074 L5:
0074 .dbline 77
0074 ; _NOP();_NOP();_NOP();
0074 0000 nop
0076 .dbline 77
0076 0000 nop
0078 .dbline 77
0078 0000 nop
007A .dbline 78
007A ; PORTF |=0x04;//SCK=1; //clk for SENSI-BUS
007A 80916200 lds R24,98
007E 8460 ori R24,4
0080 80936200 sts 98,R24
0084 .dbline 79
0084 ; _NOP();_NOP();_NOP(); //pulswith approx. 5 us
0084 0000 nop
0086 .dbline 79
0086 0000 nop
0088 .dbline 79
0088 0000 nop
008A .dbline 80
008A ; PORTF &=0xfb;//SCK=0;
008A 80916200 lds R24,98
008E 8B7F andi R24,251
0090 80936200 sts 98,R24
0094 .dbline 82
0094 ;
0094 ; }
0094 .dbline 83
0094 ; i=0x40;
0094 60E4 ldi R22,64
0096 .dbline 84
0096 ; { if (i & value)
0096 .dbline 84
0096 262E mov R2,R22
0098 2022 and R2,R16
009A 31F0 breq L6
009C X1:
009C .dbline 85
009C ; PORTF |=0x02;//DATA=1; //masking value with i , write to SENSI-BUS
009C 80916200 lds R24,98
00A0 8260 ori R24,2
00A2 80936200 sts 98,R24
00A6 05C0 xjmp L7
00A8 L6:
00A8 .dbline 86
00A8 ; else PORTF &=0xfd;//DATA=0;
00A8 80916200 lds R24,98
00AC 8D7F andi R24,253
00AE 80936200 sts 98,R24
00B2 L7:
00B2 .dbline 87
00B2 ; _NOP();_NOP();_NOP();
00B2 0000 nop
00B4 .dbline 87
00B4 0000 nop
00B6 .dbline 87
00B6 0000 nop
00B8 .dbline 88
00B8 ; PORTF |=0x04;//SCK=1; //clk for SENSI-BUS
00B8 80916200 lds R24,98
00BC 8460 ori R24,4
00BE 80936200 sts 98,R24
00C2 .dbline 89
00C2 ; _NOP();_NOP();_NOP(); //pulswith approx. 5 us
00C2 0000 nop
00C4 .dbline 89
00C4 0000 nop
00C6 .dbline 89
00C6 0000 nop
00C8 .dbline 90
00C8 ; PORTF &=0xfb;//SCK=0;
00C8 80916200 lds R24,98
00CC 8B7F andi R24,251
00CE 80936200 sts 98,R24
00D2 .dbline 92
00D2 ;
00D2 ; }
00D2 .dbline 93
00D2 ; i=0x20;
00D2 60E2 ldi R22,32
00D4 .dbline 94
00D4 ; { if (i & value)
00D4 .dbline 94
00D4 262E mov R2,R22
00D6 2022 and R2,R16
00D8 31F0 breq L8
00DA X2:
00DA .dbline 95
00DA ; PORTF |=0x02;//DATA=1; //masking value with i , write to SENSI-BUS
00DA 80916200 lds R24,98
00DE 8260 ori R24,2
00E0 80936200 sts 98,R24
00E4 05C0 xjmp L9
00E6 L8:
00E6 .dbline 96
00E6 ; else PORTF &=0xfd;//DATA=0;
00E6 80916200 lds R24,98
00EA 8D7F andi R24,253
00EC 80936200 sts 98,R24
00F0 L9:
00F0 .dbline 97
00F0 ; _NOP();_NOP();_NOP();
00F0 0000 nop
00F2 .dbline 97
00F2 0000 nop
00F4 .dbline 97
00F4 0000 nop
00F6 .dbline 98
00F6 ; PORTF |=0x04;//SCK=1; //clk for SENSI-BUS
00F6 80916200 lds R24,98
00FA 8460 ori R24,4
00FC 80936200 sts 98,R24
0100 .dbline 99
0100 ; _NOP();_NOP();_NOP(); //pulswith approx. 5 us
0100 0000 nop
0102 .dbline 99
0102 0000 nop
0104 .dbline 99
0104 0000 nop
0106 .dbline 100
0106 ; PORTF &=0xfb;//SCK=0;
0106 80916200 lds R24,98
010A 8B7F andi R24,251
010C 80936200 sts 98,R24
0110 .dbline 102
0110 ;
0110 ; }
0110 .dbline 103
0110 ; i=0x10;
0110 60E1 ldi R22,16
0112 .dbline 104
0112 ; { if (i & value)
0112 .dbline 104
0112 262E mov R2,R22
0114 2022 and R2,R16
0116 31F0 breq L10
0118 X3:
0118 .dbline 105
0118 ; PORTF |=0x02;//DATA=1; //masking value with i , write to SENSI-BUS
0118 80916200 lds R24,98
011C 8260 ori R24,2
011E 80936200 sts 98,R24
0122 05C0 xjmp L11
0124 L10:
0124 .dbline 106
0124 ; else PORTF &=0xfd;//DATA=0;
0124 80916200 lds R24,98
0128 8D7F andi R24,253
012A 80936200 sts 98,R24
012E L11:
012E .dbline 107
012E ; _NOP();_NOP();_NOP();
012E 0000 nop
0130 .dbline 107
0130 0000 nop
0132 .dbline 107
0132 0000 nop
0134 .dbline 108
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -