📄 tsensor.txt
字号:
000044 461a MOV r2,r3
000046 21be MOVS r1,#0xbe
000048 2096 MOVS r0,#0x96
00004a f7fffffe BL LCD_SetDisplayWindow
;;;625
;;;626 /* Display the Thermometer icon */
;;;627 LCD_NORDisplay(TSENSOR);
00004e 4879 LDR r0,|L9.564|
000050 f7fffffe BL LCD_NORDisplay
;;;628
;;;629 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000054 2101 MOVS r1,#1
000056 4630 MOV r0,r6
000058 f7fffffe BL RCC_AHBPeriphClockCmd
;;;630 /* Disable LCD Window mode */
;;;631 LCD_WindowModeDisable();
00005c f7fffffe BL LCD_WindowModeDisable
;;;632
;;;633 /* Set the Back Color */
;;;634 LCD_SetBackColor(Red);
000060 f44f4078 MOV r0,#0xf800
000064 f7fffffe BL LCD_SetBackColor
;;;635 /* Set the Text Color */
;;;636 LCD_SetTextColor(White);
000068 4620 MOV r0,r4
00006a f7fffffe BL LCD_SetTextColor
;;;637
;;;638 LCD_DisplayStringLine(Line2, " Temperature ");
00006e a172 ADR r1,|L9.568|
000070 2030 MOVS r0,#0x30
000072 f7fffffe BL LCD_DisplayStringLine
;;;639
;;;640 /* Set the Back Color */
;;;641 LCD_SetBackColor(Blue);
000076 201f MOVS r0,#0x1f
000078 f7fffffe BL LCD_SetBackColor
;;;642 /* Set the Text Color */
;;;643 LCD_SetTextColor(Green);
00007c f44f60fc MOV r0,#0x7e0
000080 f7fffffe BL LCD_SetTextColor
;;;644
;;;645 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, DISABLE);
000084 2100 MOVS r1,#0
000086 4630 MOV r0,r6
000088 f7fffffe BL RCC_AHBPeriphClockCmd
;;;646
;;;647 /* Wait until no key is pressed */
;;;648 while(ReadKey() != NOKEY)
;;;649 {
;;;650 }
;;;651
;;;652 /* Wait until a key is beiing pressed */
;;;653 while(pressedkey == NOKEY)
;;;654 {
;;;655 /* Initialize the Temperature Sensor */
;;;656 I2C_LM75_Init();
;;;657
;;;658 /* Get double of Temperature value */
;;;659 TempCelsius_Value = I2C_LM75_Temp_Read();
00008c f8dfb1c0 LDR r11,|L9.592|
;;;660
;;;661 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
;;;662
;;;663 if(TempCelsius_Value <= 1023)
;;;664 {
;;;665 /* Positive temperature measured */
;;;666 TempCelsius_Display[5] = '+';
000090 f10b040c ADD r4,r11,#0xc
;;;667 TempFahrenheit_Display[5] = '+';
000094 f1040815 ADD r8,r4,#0x15
|L9.152|
000098 f7fffffe BL ReadKey
00009c 2800 CMP r0,#0 ;648
00009e d1fb BNE |L9.152|
0000a0 46b2 MOV r10,r6 ;609
;;;668 }
;;;669 else
;;;670 {
;;;671 /* Negative temperature measured */
;;;672 TempCelsius_Display[5] = '-';
;;;673 TempFahrenheit_Display[5] = '-';
;;;674 /* Remove temperature value sign */
;;;675 TempCelsius_Value = 0x800 - TempCelsius_Value;
;;;676 }
;;;677
;;;678 /* Calculate temperature digits in 癈 */
;;;679 Temp_Decimal = ((TempCelsius_Value & 7) * 1000 / 8);
;;;680 TempCelsius_Display[10] = (Temp_Decimal / 100) + 0x30;
;;;681 TempCelsius_Display[11] = ((Temp_Decimal % 100) / 10) + 0x30;
;;;682 TempCelsius_Display[12] = ((Temp_Decimal % 100) % 10) + 0x30;
;;;683 TempCelsius_Value >>= 3;
;;;684 TempCelsius_Display[6] = (TempCelsius_Value / 100) + 0x30;
;;;685 TempCelsius_Display[7] = ((TempCelsius_Value % 100) / 10) + 0x30;
;;;686 TempCelsius_Display[8] = ((TempCelsius_Value % 100) % 10) + 0x30;
;;;687
;;;688 /* Convert temperature 癈 to Fahrenheit */
;;;689 Temp_Value_Fahrenheit = ((9 * ((TempCelsius_Value * 1000) + Temp_Decimal)) / 5) + 32000;
;;;690
;;;691 /* Calculate temperature digits in 癋 */
;;;692 TempFahrenheit_Display[6] = (Temp_Value_Fahrenheit / 100000) + 0x30;
;;;693 TempFahrenheit_Display[7] = ((Temp_Value_Fahrenheit % 100000) /10000) + 0x30;
;;;694 TempFahrenheit_Display[8] = ((Temp_Value_Fahrenheit % 100000) %10000/1000) + 0x30;
;;;695 TempFahrenheit_Display[10] = ((((Temp_Value_Fahrenheit % 100000) %10000) %1000) /100) + 0x30;
;;;696 TempFahrenheit_Display[11] = (((((Temp_Value_Fahrenheit % 100000) %10000) %1000) %100) /10) + 0x30;
;;;697 TempFahrenheit_Display[12] = (((((Temp_Value_Fahrenheit % 100000) %10000) %1000) %100) %10) + 0x30;
;;;698
;;;699 /* Display Fahrenheit value on LCD */
;;;700 for(i = 0; i < 20; i++)
;;;701 {
;;;702 LCD_DisplayChar(Line7, (319 - (16 * i)), TempCelsius_Display[i]);
;;;703 LCD_DisplayChar(Line8, (319 - (16 * i)), TempFahrenheit_Display[i]);
;;;704 }
;;;705 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, DISABLE);
;;;706 pressedkey = ReadKey();
0000a2 e0a2 B |L9.490|
|L9.164|
0000a4 f7fffffe BL I2C_LM75_Init
0000a8 f7fffffe BL I2C_LM75_Temp_Read
0000ac f8cb0004 STR r0,[r11,#4] ;661 ; TempCelsius_Value
0000b0 465d MOV r5,r11 ;659
0000b2 2101 MOVS r1,#1 ;661
0000b4 4650 MOV r0,r10 ;661
0000b6 f7fffffe BL RCC_AHBPeriphClockCmd
0000ba 6868 LDR r0,[r5,#4] ;663 ; TempCelsius_Value
0000bc f5b06f80 CMP r0,#0x400 ;663
0000c0 d204 BCS |L9.204|
0000c2 202b MOVS r0,#0x2b ;666
0000c4 7160 STRB r0,[r4,#5] ;666
0000c6 f8880005 STRB r0,[r8,#5] ;667
0000ca e006 B |L9.218|
|L9.204|
0000cc 222d MOVS r2,#0x2d ;672
0000ce 7162 STRB r2,[r4,#5] ;672
0000d0 f8882005 STRB r2,[r8,#5] ;673
0000d4 f5c06000 RSB r0,r0,#0x800 ;675
0000d8 6068 STR r0,[r5,#4] ;675 ; TempCelsius_Value
|L9.218|
0000da f8d5c004 LDR r12,[r5,#4] ;679 ; TempCelsius_Value
0000de f44f717a MOV r1,#0x3e8 ;679
0000e2 f00c0007 AND r0,r12,#7 ;679
0000e6 4348 MULS r0,r1,r0 ;679
0000e8 08c0 LSRS r0,r0,#3 ;679
0000ea 2264 MOVS r2,#0x64 ;680
0000ec fbb0f1f2 UDIV r1,r0,r2 ;680
0000f0 f1010330 ADD r3,r1,#0x30 ;680
0000f4 6028 STR r0,[r5,#0] ;680 ; Temp_Decimal
0000f6 72a3 STRB r3,[r4,#0xa] ;680
0000f8 fb020611 MLS r6,r2,r1,r0 ;681
0000fc 230a MOVS r3,#0xa ;681
0000fe fbb6f1f3 UDIV r1,r6,r3 ;681
000102 f1010730 ADD r7,r1,#0x30 ;681
000106 fb036111 MLS r1,r3,r1,r6 ;682
00010a 72e7 STRB r7,[r4,#0xb] ;681
00010c 3130 ADDS r1,r1,#0x30 ;682
00010e 7321 STRB r1,[r4,#0xc] ;682
000110 ea4f01dc LSR r1,r12,#3 ;683
000114 fbb1f6f2 UDIV r6,r1,r2 ;684
000118 f1060730 ADD r7,r6,#0x30 ;684
00011c 6069 STR r1,[r5,#4] ;684 ; TempCelsius_Value
00011e fb021616 MLS r6,r2,r6,r1 ;685
000122 71a7 STRB r7,[r4,#6] ;684
000124 e000 B |L9.296|
|L9.294|
000126 e064 B |L9.498|
|L9.296|
000128 fbb6f7f3 UDIV r7,r6,r3 ;685
00012c fb036617 MLS r6,r3,r7,r6 ;686
000130 f1070c30 ADD r12,r7,#0x30 ;685
000134 f884c007 STRB r12,[r4,#7] ;685
000138 3630 ADDS r6,r6,#0x30 ;686
00013a 7226 STRB r6,[r4,#8] ;686
00013c eb010641 ADD r6,r1,r1,LSL #1 ;689
000140 ebc611c1 RSB r1,r6,r1,LSL #7 ;689
000144 eb0000c1 ADD r0,r0,r1,LSL #3 ;689
000148 eb0000c0 ADD r0,r0,r0,LSL #3 ;689
00014c 2105 MOVS r1,#5 ;689
00014e fbb0f0f1 UDIV r0,r0,r1 ;689
000152 f50040fa ADD r0,r0,#0x7d00 ;689
000156 4f3f LDR r7,|L9.596|
000158 60a8 STR r0,[r5,#8] ;692 ; Temp_Value_Fahrenheit
00015a fbb0f1f7 UDIV r1,r0,r7 ;692
00015e f1010630 ADD r6,r1,#0x30 ;692
000162 fb070111 MLS r1,r7,r1,r0 ;693
000166 f2427710 MOV r7,#0x2710 ;693
00016a fbb1f0f7 UDIV r0,r1,r7 ;693
00016e f8886006 STRB r6,[r8,#6] ;692
000172 fb071110 MLS r1,r7,r0,r1 ;694
000176 f1000630 ADD r6,r0,#0x30 ;693
00017a f44f777a MOV r7,#0x3e8 ;694
00017e fbb1f0f7 UDIV r0,r1,r7 ;694
000182 f8886007 STRB r6,[r8,#7] ;693
000186 f1000630 ADD r6,r0,#0x30 ;694
00018a fb071010 MLS r0,r7,r0,r1 ;695
00018e fbb0f1f2 UDIV r1,r0,r2 ;695
000192 f8886008 STRB r6,[r8,#8] ;694
000196 f1010630 ADD r6,r1,#0x30 ;695
00019a fb020011 MLS r0,r2,r1,r0 ;696
00019e fbb0f1f3 UDIV r1,r0,r3 ;696
0001a2 fb030011 MLS r0,r3,r1,r0 ;697
0001a6 f888600a STRB r6,[r8,#0xa] ;695
0001aa 4645 MOV r5,r8 ;692
0001ac f1010230 ADD r2,r1,#0x30 ;696
0001b0 3030 ADDS r0,r0,#0x30 ;697
0001b2 72ea STRB r2,[r5,#0xb] ;696
0001b4 7328 STRB r0,[r5,#0xc] ;697
0001b6 2600 MOVS r6,#0 ;700
0001b8 f240193f MOV r9,#0x13f ;702
|L9.444|
0001bc 4271 RSBS r1,r6,#0 ;702
0001be eb091701 ADD r7,r9,r1,LSL #4 ;702
0001c2 5da2 LDRB r2,[r4,r6] ;702
0001c4 b2b9 UXTH r1,r7 ;702
0001c6 20a8 MOVS r0,#0xa8 ;702
0001c8 f7fffffe BL LCD_DisplayChar
0001cc 5daa LDRB r2,[r5,r6] ;703
0001ce b2b9 UXTH r1,r7 ;703
0001d0 20c0 MOVS r0,#0xc0 ;703
0001d2 f7fffffe BL LCD_DisplayChar
0001d6 1c76 ADDS r6,r6,#1 ;700
0001d8 2e14 CMP r6,#0x14 ;700
0001da d3ef BCC |L9.444|
0001dc 2100 MOVS r1,#0 ;705
0001de 4650 MOV r0,r10 ;705
0001e0 f7fffffe BL RCC_AHBPeriphClockCmd
0001e4 f7fffffe BL ReadKey
0001e8 4605 MOV r5,r0
|L9.490|
0001ea 2d00 CMP r5,#0 ;653
0001ec f43faf5a BEQ |L9.164|
0001f0 e010 B |L9.532|
|L9.498|
;;;707 }
;;;708 }
;;;709 else
;;;710 {
;;;711 LCD_Clear(White);
0001f2 f64f70ff MOV r0,#0xffff
0001f6 f7fffffe BL LCD_Clear
;;;712 LCD_DisplayStringLine(Line2, " No TSENSOR Present ");
0001fa a117 ADR r1,|L9.600|
0001fc 2030 MOVS r0,#0x30
0001fe f7fffffe BL LCD_DisplayStringLine
;;;713 LCD_DisplayStringLine(Line3, "Exit: Push JoyStick");
000202 a11b ADR r1,|L9.624|
000204 2048 MOVS r0,#0x48
000206 f7fffffe BL LCD_DisplayStringLine
;;;714 while(ReadKey() == NOKEY)
00020a bf00 NOP
|L9.524|
00020c f7fffffe BL ReadKey
000210 2800 CMP r0,#0
000212 d0fb BEQ |L9.524|
|L9.532|
;;;715 {
;;;716 }
;;;717 }
;;;718 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000214 2101 MOVS r1,#1
000216 4650 MOV r0,r10
000218 f7fffffe BL RCC_AHBPeriphClockCmd
;;;719 LCD_Clear(White);
00021c f64f70ff MOV r0,#0xffff
000220 f7fffffe BL LCD_Clear
;;;720 /* Display menu */
;;;721 DisplayMenu();
000224 f7fffffe BL DisplayMenu
;;;722 /* Enable the JoyStick interrupt */
;;;723 IntExtOnOffConfig(ENABLE);
000228 e8bd5ff0 POP {r4-r12,lr}
00022c 2001 MOVS r0,#1
00022e f7ffbffe B.W IntExtOnOffConfig
;;;724 }
;;;725
ENDP
000232 0000 DCW 0x0000
|L9.564|
DCD 0x641f7d16
|L9.568|
000238 202020202054656d70657261747572652020202000 DCB " Temperature ",0
00024d 00 DCB 0
00024e 00 DCB 0
00024f 00 DCB 0
|L9.592|
DCD ||.data||
|L9.596|
DCD 0x000186a0
|L9.600|
000258 204e6f205453454e534f522050726573656e742000 DCB " No TSENSOR Present ",0
00026d 00 DCB 0
00026e 00 DCB 0
00026f 00 DCB 0
|L9.624|
000270 457869743a202050757368204a6f79537469636b00 DCB "Exit: Push JoyStick",0
000285 00 DCB 0
000286 00 DCB 0
000287 00 DCB 0
AREA ||.data||, DATA, ALIGN=2
Temp_Decimal
DCD 0x00000000
TempCelsius_Value
DCD 0x00000000
Temp_Value_Fahrenheit
DCD 0x000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -