📄 tsensor.txt
字号:
;;;641 /* Set the Back Color */
;;;642 LCD_SetBackColor(Red);
00005e f44f4078 MOV r0,#0xf800
000062 f7fffffe BL LCD_SetBackColor
;;;643 /* Set the Text Color */
;;;644 LCD_SetTextColor(White);
000066 4658 MOV r0,r11
000068 f7fffffe BL LCD_SetTextColor
;;;645
;;;646 LCD_DisplayStringLine(Line2, " Temperature ");
00006c a178 ADR r1,|L9.592|
00006e 2030 MOVS r0,#0x30
000070 f7fffffe BL LCD_DisplayStringLine
;;;647
;;;648 /* Set the Back Color */
;;;649 LCD_SetBackColor(Blue);
000074 201f MOVS r0,#0x1f
000076 f7fffffe BL LCD_SetBackColor
;;;650 /* Set the Text Color */
;;;651 LCD_SetTextColor(Green);
00007a f44f60fc MOV r0,#0x7e0
00007e f7fffffe BL LCD_SetTextColor
;;;652
;;;653 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, DISABLE);
000082 2100 MOVS r1,#0
000084 4638 MOV r0,r7
000086 f7fffffe BL RCC_AHBPeriphClockCmd
00008a 4d77 LDR r5,|L9.616|
00008c f105040c ADD r4,r5,#0xc
000090 f1040615 ADD r6,r4,#0x15
|L9.148|
;;;654
;;;655 /* Wait until no key is pressed */
;;;656 while(ReadKey() != NOKEY)
000094 f7fffffe BL ReadKey
000098 2800 CMP r0,#0
00009a d1fb BNE |L9.148|
00009c e0ac B |L9.504|
;;;657 {
;;;658 }
;;;659
;;;660 /* Wait until a key is beiing pressed */
;;;661 while(pressedkey == NOKEY)
;;;662 {
;;;663 /* Initialize the Temperature Sensor */
;;;664 I2C_LM75_Init();
00009e bf00 NOP
|L9.160|
0000a0 f7fffffe BL I2C_LM75_Init
;;;665
;;;666 /* Get double of Temperature value */
;;;667 TempCelsius_Value = I2C_LM75_Temp_Read();
0000a4 f7fffffe BL I2C_LM75_Temp_Read
;;;668
;;;669 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
0000a8 6068 STR r0,[r5,#4] ; TempCelsius_Value
0000aa 2101 MOVS r1,#1
0000ac 4638 MOV r0,r7
0000ae f7fffffe BL RCC_AHBPeriphClockCmd
;;;670
;;;671 if(TempCelsius_Value <= 1023)
0000b2 6868 LDR r0,[r5,#4] ; TempCelsius_Value
0000b4 f5b06f80 CMP r0,#0x400
0000b8 d203 BCS |L9.194|
;;;672 {
;;;673 /* Positive temperature measured */
;;;674 TempCelsius_Display[5] = '+';
0000ba 202b MOVS r0,#0x2b
0000bc 7160 STRB r0,[r4,#5] ; TempCelsius_Display
;;;675 TempFahrenheit_Display[5] = '+';
0000be 7170 STRB r0,[r6,#5] ; TempFahrenheit_Display
0000c0 e005 B |L9.206|
|L9.194|
;;;676 }
;;;677 else
;;;678 {
;;;679 /* Negative temperature measured */
;;;680 TempCelsius_Display[5] = '-';
0000c2 212d MOVS r1,#0x2d
0000c4 7161 STRB r1,[r4,#5] ; TempCelsius_Display
;;;681 TempFahrenheit_Display[5] = '-';
0000c6 7171 STRB r1,[r6,#5] ; TempFahrenheit_Display
;;;682 /* Remove temperature value sign */
;;;683 TempCelsius_Value = 0x800 - TempCelsius_Value;
0000c8 f5c06000 RSB r0,r0,#0x800
0000cc 6068 STR r0,[r5,#4] ; TempCelsius_Value
|L9.206|
;;;684 }
;;;685
;;;686 /* Calculate temperature digits in 癈 */
;;;687 Temp_Decimal = ((TempCelsius_Value & 7) * 1000 / 8);
0000ce 6869 LDR r1,[r5,#4] ; TempCelsius_Value
0000d0 f44f7c7a MOV r12,#0x3e8
0000d4 f0010007 AND r0,r1,#7
0000d8 fb00f00c MUL r0,r0,r12
0000dc 08c0 LSRS r0,r0,#3
;;;688 TempCelsius_Display[10] = (Temp_Decimal / 100) + 0x30;
0000de 2264 MOVS r2,#0x64
0000e0 fbb0f3f2 UDIV r3,r0,r2
0000e4 f1030e30 ADD lr,r3,#0x30
0000e8 6028 STR r0,[r5,#0] ; Temp_Decimal
0000ea f884e00a STRB lr,[r4,#0xa] ; TempCelsius_Display
;;;689 TempCelsius_Display[11] = ((Temp_Decimal % 100) / 10) + 0x30;
0000ee fb020e13 MLS lr,r2,r3,r0
0000f2 230a MOVS r3,#0xa
0000f4 fbbef8f3 UDIV r8,lr,r3
;;;690 TempCelsius_Display[12] = ((Temp_Decimal % 100) % 10) + 0x30;
0000f8 fb03ee18 MLS lr,r3,r8,lr
0000fc f1080930 ADD r9,r8,#0x30 ;689
000100 f884900b STRB r9,[r4,#0xb] ;689 ; TempCelsius_Display
000104 f10e0e30 ADD lr,lr,#0x30
000108 f884e00c STRB lr,[r4,#0xc] ; TempCelsius_Display
;;;691 TempCelsius_Value >>= 3;
00010c 08c9 LSRS r1,r1,#3
;;;692 TempCelsius_Display[6] = (TempCelsius_Value / 100) + 0x30;
00010e fbb1fef2 UDIV lr,r1,r2
000112 f10e0830 ADD r8,lr,#0x30
000116 6069 STR r1,[r5,#4] ; TempCelsius_Value
;;;693 TempCelsius_Display[7] = ((TempCelsius_Value % 100) / 10) + 0x30;
000118 fb021e1e MLS lr,r2,lr,r1
00011c f8848006 STRB r8,[r4,#6] ;692 ; TempCelsius_Display
000120 fbbef8f3 UDIV r8,lr,r3
000124 f1080930 ADD r9,r8,#0x30
000128 e000 B |L9.300|
|L9.298|
00012a e06a B |L9.514|
|L9.300|
;;;694 TempCelsius_Display[8] = ((TempCelsius_Value % 100) % 10) + 0x30;
00012c fb03ee18 MLS lr,r3,r8,lr
000130 f8849007 STRB r9,[r4,#7] ;693 ; TempCelsius_Display
000134 f10e0e30 ADD lr,lr,#0x30
000138 f884e008 STRB lr,[r4,#8] ; TempCelsius_Display
;;;695
;;;696 /* Convert temperature 癈 to Fahrenheit */
;;;697 Temp_Value_Fahrenheit = ((9 * ((TempCelsius_Value * 1000) + Temp_Decimal)) / 5) + 32000;
00013c f04f0e7d MOV lr,#0x7d
000140 fb01f10e MUL r1,r1,lr
000144 eb0000c1 ADD r0,r0,r1,LSL #3
000148 eb0000c0 ADD r0,r0,r0,LSL #3
00014c 2105 MOVS r1,#5
00014e fbb0f0f1 UDIV r0,r0,r1
000152 f50040fa ADD r0,r0,#0x7d00
;;;698
;;;699 /* Calculate temperature digits in 癋 */
;;;700 TempFahrenheit_Display[6] = (Temp_Value_Fahrenheit / 100000) + 0x30;
000156 f8df8114 LDR r8,|L9.620|
00015a 60a8 STR r0,[r5,#8] ; Temp_Value_Fahrenheit
00015c fbb0f1f8 UDIV r1,r0,r8
000160 f1010e30 ADD lr,r1,#0x30
;;;701 TempFahrenheit_Display[7] = ((Temp_Value_Fahrenheit % 100000) /10000) + 0x30;
000164 fb080111 MLS r1,r8,r1,r0
000168 f2427810 MOV r8,#0x2710
00016c fbb1f0f8 UDIV r0,r1,r8
000170 f886e006 STRB lr,[r6,#6] ;700 ; TempFahrenheit_Display
000174 f1000e30 ADD lr,r0,#0x30
;;;702 TempFahrenheit_Display[8] = ((Temp_Value_Fahrenheit % 100000) %10000/1000) + 0x30;
000178 fb081010 MLS r0,r8,r0,r1
00017c fbb0f1fc UDIV r1,r0,r12
000180 f886e007 STRB lr,[r6,#7] ;701 ; TempFahrenheit_Display
000184 f1010e30 ADD lr,r1,#0x30
;;;703 TempFahrenheit_Display[10] = ((((Temp_Value_Fahrenheit % 100000) %10000) %1000) /100) + 0x30;
000188 fb0c0011 MLS r0,r12,r1,r0
00018c fbb0f1f2 UDIV r1,r0,r2
000190 f1010c30 ADD r12,r1,#0x30
;;;704 TempFahrenheit_Display[11] = (((((Temp_Value_Fahrenheit % 100000) %10000) %1000) %100) /10) + 0x30;
000194 fb020011 MLS r0,r2,r1,r0
000198 fbb0f1f3 UDIV r1,r0,r3
00019c f886e008 STRB lr,[r6,#8] ;702 ; TempFahrenheit_Display
;;;705 TempFahrenheit_Display[12] = (((((Temp_Value_Fahrenheit % 100000) %10000) %1000) %100) %10) + 0x30;
0001a0 fb030011 MLS r0,r3,r1,r0
0001a4 f886c00a STRB r12,[r6,#0xa] ;703 ; TempFahrenheit_Display
0001a8 f1010230 ADD r2,r1,#0x30 ;704
0001ac 72f2 STRB r2,[r6,#0xb] ;704 ; TempFahrenheit_Display
0001ae 3030 ADDS r0,r0,#0x30
0001b0 7330 STRB r0,[r6,#0xc] ; TempFahrenheit_Display
;;;706
;;;707 /* Display Fahrenheit value on LCD */
;;;708 for(i = 0; i < 20; i++)
0001b2 f04f0800 MOV r8,#0
0001b6 f2401a3f MOV r10,#0x13f
;;;709 {
;;;710 LCD_DisplayChar(Line7, (319 - (16 * i)), TempCelsius_Display[i]);
0001ba bf00 NOP
|L9.444|
0001bc f1c80000 RSB r0,r8,#0
0001c0 eb0a1900 ADD r9,r10,r0,LSL #4
0001c4 f8142008 LDRB r2,[r4,r8]
0001c8 fa1ff189 UXTH r1,r9
0001cc 20a8 MOVS r0,#0xa8
0001ce f7fffffe BL LCD_DisplayChar
;;;711 LCD_DisplayChar(Line8, (319 - (16 * i)), TempFahrenheit_Display[i]);
0001d2 f8162008 LDRB r2,[r6,r8]
0001d6 fa1ff189 UXTH r1,r9
0001da 20c0 MOVS r0,#0xc0
0001dc f7fffffe BL LCD_DisplayChar
0001e0 f1080801 ADD r8,r8,#1 ;708
0001e4 f1b80f14 CMP r8,#0x14 ;708
0001e8 d3e8 BCC |L9.444|
;;;712 }
;;;713 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, DISABLE);
0001ea 2100 MOVS r1,#0
0001ec 4638 MOV r0,r7
0001ee f7fffffe BL RCC_AHBPeriphClockCmd
;;;714 pressedkey = ReadKey();
0001f2 f7fffffe BL ReadKey
0001f6 4680 MOV r8,r0
|L9.504|
0001f8 f1b80f00 CMP r8,#0 ;661
0001fc f43faf50 BEQ |L9.160|
000200 e016 B |L9.560|
|L9.514|
;;;715 }
;;;716 }
;;;717 else
;;;718 {
;;;719 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000202 2101 MOVS r1,#1
000204 4638 MOV r0,r7
000206 f7fffffe BL RCC_AHBPeriphClockCmd
;;;720 LCD_Clear(White);
00020a 4658 MOV r0,r11
00020c f7fffffe BL LCD_Clear
;;;721 LCD_DisplayStringLine(Line2, " No TSENSOR Present ");
000210 a117 ADR r1,|L9.624|
000212 2030 MOVS r0,#0x30
000214 f7fffffe BL LCD_DisplayStringLine
;;;722 LCD_DisplayStringLine(Line3, "Exit: Push JoyStick");
000218 a11b ADR r1,|L9.648|
00021a 2048 MOVS r0,#0x48
00021c f7fffffe BL LCD_DisplayStringLine
;;;723 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, DISABLE);
000220 2100 MOVS r1,#0
000222 4638 MOV r0,r7
000224 f7fffffe BL RCC_AHBPeriphClockCmd
|L9.552|
;;;724 while(ReadKey() == NOKEY)
000228 f7fffffe BL ReadKey
00022c 2800 CMP r0,#0
00022e d0fb BEQ |L9.552|
|L9.560|
;;;725 {
;;;726 }
;;;727 }
;;;728 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000230 2101 MOVS r1,#1
000232 4638 MOV r0,r7
000234 f7fffffe BL RCC_AHBPeriphClockCmd
;;;729 LCD_Clear(White);
000238 4658 MOV r0,r11
00023a f7fffffe BL LCD_Clear
;;;730 /* Display menu */
;;;731 DisplayMenu();
00023e f7fffffe BL DisplayMenu
;;;732 /* Enable the JoyStick interrupt */
;;;733 IntExtOnOffConfig(ENABLE);
000242 e8bd5ff0 POP {r4-r12,lr}
000246 2001 MOVS r0,#1
000248 f7ffbffe B.W IntExtOnOffConfig
;;;734 }
;;;735
ENDP
|L9.588|
00024c 007b7f38 DCD 0x007b7f38
|L9.592|
000250 202020202054656d70657261747572652020202000 DCB " Temperature ",0
000265 00 DCB 0
000266 00 DCB 0
000267 00 DCB 0
|L9.616|
000268 00000000 DCD ||.data||
|L9.620|
00026c 000186a0 DCD 0x000186a0
|L9.624|
000270 204e6f205453454e534f522050726573656e742000 DCB " No TSENSOR Present ",0
000285 00 DCB 0
000286 00 DCB 0
000287 00 DCB 0
|L9.648|
000288 457869743a202050757368204a6f79537469636b00 DCB "Exit: Push JoyStick",0
00029d 00 DCB 0
00029e 00 DCB 0
00029f 00 DCB 0
AREA ||.data||, DATA, ALIGN=2
Temp_Decimal
000000 00000000 DCD 0x00000000
TempCelsius_Value
000004 00000000 DCD 0x00000000
Temp_Value_Fahrenheit
000008 00000000 DCD 0x00000000
TempCelsius_Display
00000c 20202020 DCB 0x20,0x20,0x20,0x20
000010 202b6162 DCB 0x20,0x2b,0x61,0x62
000014 632e6465 DCB 0x63,0x2e,0x64,0x65
000018 66204320 DCB 0x66,0x20,0x43,0x20
00001c 20202020 DCB 0x20,0x20,0x20,0x20
000020 00 DCB 0x00
TempFahrenheit_Display
000021 20202020 DCB 0x20,0x20,0x20,0x20
000025 202b6162 DCB 0x20,0x2b,0x61,0x62
000029 632e6465 DCB 0x63,0x2e,0x64,0x65
00002d 66204620 DCB 0x66,0x20,0x46,0x20
000031 20202020 DCB 0x20,0x20,0x20,0x20
000035 00 DCB 0x00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -