📄 tsensor.txt
字号:
;;;632
;;;633 /* Set the Back Color */
;;;634 LCD_SetBackColor(Red);
00005e f44ff44f MOV r0,#0xf800
000062 f7fff7ff BL LCD_SetBackColor
;;;635 /* Set the Text Color */
;;;636 LCD_SetTextColor(White);
000066 4658 MOV r0,r11
000068 f7fff7ff BL LCD_SetTextColor
;;;637
;;;638 LCD_DisplayStringLine(Line2, " Temperature ");
00006c a174 ADR r1,|L9.576|
00006e 2030 MOVS r0,#0x30
000070 f7fff7ff BL LCD_DisplayStringLine
;;;639
;;;640 /* Set the Back Color */
;;;641 LCD_SetBackColor(Blue);
000074 201f MOVS r0,#0x1f
000076 f7fff7ff BL LCD_SetBackColor
;;;642 /* Set the Text Color */
;;;643 LCD_SetTextColor(Green);
00007a f44ff44f MOV r0,#0x7e0
00007e f7fff7ff BL LCD_SetTextColor
;;;644
;;;645 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, DISABLE);
000082 2100 MOVS r1,#0
000084 4638 MOV r0,r7
000086 f7fff7ff BL RCC_AHBPeriphClockCmd
00008a 4d73 LDR r5,|L9.600|
00008c f105f105 ADD r4,r5,#0xc
000090 f104f104 ADD r6,r4,#0x15
|L9.148|
;;;646
;;;647 /* Wait until no key is pressed */
;;;648 while(ReadKey() != NOKEY)
000094 f7fff7ff BL ReadKey
000098 2800 CMP r0,#0
00009a d1fb BNE |L9.148|
00009c e0ac B |L9.504|
;;;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();
00009e bf00 NOP
|L9.160|
0000a0 f7fff7ff BL I2C_LM75_Init
;;;657
;;;658 /* Get double of Temperature value */
;;;659 TempCelsius_Value = I2C_LM75_Temp_Read();
0000a4 f7fff7ff BL I2C_LM75_Temp_Read
;;;660
;;;661 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 f7fff7ff BL RCC_AHBPeriphClockCmd
;;;662
;;;663 if(TempCelsius_Value <= 1023)
0000b2 6868 LDR r0,[r5,#4] ; TempCelsius_Value
0000b4 f5b0f5b0 CMP r0,#0x400
0000b8 d203 BCS |L9.194|
;;;664 {
;;;665 /* Positive temperature measured */
;;;666 TempCelsius_Display[5] = '+';
0000ba 202b MOVS r0,#0x2b
0000bc 7160 STRB r0,[r4,#5] ; TempCelsius_Display
;;;667 TempFahrenheit_Display[5] = '+';
0000be 7170 STRB r0,[r6,#5] ; TempFahrenheit_Display
0000c0 e005 B |L9.206|
|L9.194|
;;;668 }
;;;669 else
;;;670 {
;;;671 /* Negative temperature measured */
;;;672 TempCelsius_Display[5] = '-';
0000c2 212d MOVS r1,#0x2d
0000c4 7161 STRB r1,[r4,#5] ; TempCelsius_Display
;;;673 TempFahrenheit_Display[5] = '-';
0000c6 7171 STRB r1,[r6,#5] ; TempFahrenheit_Display
;;;674 /* Remove temperature value sign */
;;;675 TempCelsius_Value = 0x800 - TempCelsius_Value;
0000c8 f5c0f5c0 RSB r0,r0,#0x800
0000cc 6068 STR r0,[r5,#4] ; TempCelsius_Value
|L9.206|
;;;676 }
;;;677
;;;678 /* Calculate temperature digits in 癈 */
;;;679 Temp_Decimal = ((TempCelsius_Value & 7) * 1000 / 8);
0000ce 6869 LDR r1,[r5,#4] ; TempCelsius_Value
0000d0 f44ff44f MOV r12,#0x3e8
0000d4 f001f001 AND r0,r1,#7
0000d8 fb00fb00 MUL r0,r0,r12
0000dc 08c0 LSRS r0,r0,#3
;;;680 TempCelsius_Display[10] = (Temp_Decimal / 100) + 0x30;
0000de 2264 MOVS r2,#0x64
0000e0 fbb0fbb0 UDIV r3,r0,r2
0000e4 f103f103 ADD lr,r3,#0x30
0000e8 6028 STR r0,[r5,#0] ; Temp_Decimal
0000ea f884f884 STRB lr,[r4,#0xa] ; TempCelsius_Display
;;;681 TempCelsius_Display[11] = ((Temp_Decimal % 100) / 10) + 0x30;
0000ee fb02fb02 MLS lr,r2,r3,r0
0000f2 230a MOVS r3,#0xa
0000f4 fbbefbbe UDIV r8,lr,r3
;;;682 TempCelsius_Display[12] = ((Temp_Decimal % 100) % 10) + 0x30;
0000f8 fb03fb03 MLS lr,r3,r8,lr
0000fc f108f108 ADD r9,r8,#0x30 ;681
000100 f884f884 STRB r9,[r4,#0xb] ;681 ; TempCelsius_Display
000104 f10ef10e ADD lr,lr,#0x30
000108 f884f884 STRB lr,[r4,#0xc] ; TempCelsius_Display
;;;683 TempCelsius_Value >>= 3;
00010c 08c9 LSRS r1,r1,#3
;;;684 TempCelsius_Display[6] = (TempCelsius_Value / 100) + 0x30;
00010e fbb1fbb1 UDIV lr,r1,r2
000112 f10ef10e ADD r8,lr,#0x30
000116 6069 STR r1,[r5,#4] ; TempCelsius_Value
;;;685 TempCelsius_Display[7] = ((TempCelsius_Value % 100) / 10) + 0x30;
000118 fb02fb02 MLS lr,r2,lr,r1
00011c f884f884 STRB r8,[r4,#6] ;684 ; TempCelsius_Display
000120 fbbefbbe UDIV r8,lr,r3
000124 f108f108 ADD r9,r8,#0x30
000128 e000 B |L9.300|
|L9.298|
00012a e06a B |L9.514|
|L9.300|
;;;686 TempCelsius_Display[8] = ((TempCelsius_Value % 100) % 10) + 0x30;
00012c fb03fb03 MLS lr,r3,r8,lr
000130 f884f884 STRB r9,[r4,#7] ;685 ; TempCelsius_Display
000134 f10ef10e ADD lr,lr,#0x30
000138 f884f884 STRB lr,[r4,#8] ; TempCelsius_Display
;;;687
;;;688 /* Convert temperature 癈 to Fahrenheit */
;;;689 Temp_Value_Fahrenheit = ((9 * ((TempCelsius_Value * 1000) + Temp_Decimal)) / 5) + 32000;
00013c f04ff04f MOV lr,#0x7d
000140 fb01fb01 MUL r1,r1,lr
000144 eb00eb00 ADD r0,r0,r1,LSL #3
000148 eb00eb00 ADD r0,r0,r0,LSL #3
00014c 2105 MOVS r1,#5
00014e fbb0fbb0 UDIV r0,r0,r1
000152 f500f500 ADD r0,r0,#0x7d00
;;;690
;;;691 /* Calculate temperature digits in 癋 */
;;;692 TempFahrenheit_Display[6] = (Temp_Value_Fahrenheit / 100000) + 0x30;
000156 f8dff8df LDR r8,|L9.604|
00015a 60a8 STR r0,[r5,#8] ; Temp_Value_Fahrenheit
00015c fbb0fbb0 UDIV r1,r0,r8
000160 f101f101 ADD lr,r1,#0x30
;;;693 TempFahrenheit_Display[7] = ((Temp_Value_Fahrenheit % 100000) /10000) + 0x30;
000164 fb08fb08 MLS r1,r8,r1,r0
000168 f242f242 MOV r8,#0x2710
00016c fbb1fbb1 UDIV r0,r1,r8
000170 f886f886 STRB lr,[r6,#6] ;692 ; TempFahrenheit_Display
000174 f100f100 ADD lr,r0,#0x30
;;;694 TempFahrenheit_Display[8] = ((Temp_Value_Fahrenheit % 100000) %10000/1000) + 0x30;
000178 fb08fb08 MLS r0,r8,r0,r1
00017c fbb0fbb0 UDIV r1,r0,r12
000180 f886f886 STRB lr,[r6,#7] ;693 ; TempFahrenheit_Display
000184 f101f101 ADD lr,r1,#0x30
;;;695 TempFahrenheit_Display[10] = ((((Temp_Value_Fahrenheit % 100000) %10000) %1000) /100) + 0x30;
000188 fb0cfb0c MLS r0,r12,r1,r0
00018c fbb0fbb0 UDIV r1,r0,r2
000190 f101f101 ADD r12,r1,#0x30
;;;696 TempFahrenheit_Display[11] = (((((Temp_Value_Fahrenheit % 100000) %10000) %1000) %100) /10) + 0x30;
000194 fb02fb02 MLS r0,r2,r1,r0
000198 fbb0fbb0 UDIV r1,r0,r3
00019c f886f886 STRB lr,[r6,#8] ;694 ; TempFahrenheit_Display
;;;697 TempFahrenheit_Display[12] = (((((Temp_Value_Fahrenheit % 100000) %10000) %1000) %100) %10) + 0x30;
0001a0 fb03fb03 MLS r0,r3,r1,r0
0001a4 f886f886 STRB r12,[r6,#0xa] ;695 ; TempFahrenheit_Display
0001a8 f101f101 ADD r2,r1,#0x30 ;696
0001ac 72f2 STRB r2,[r6,#0xb] ;696 ; TempFahrenheit_Display
0001ae 3030 ADDS r0,r0,#0x30
0001b0 7330 STRB r0,[r6,#0xc] ; TempFahrenheit_Display
;;;698
;;;699 /* Display Fahrenheit value on LCD */
;;;700 for(i = 0; i < 20; i++)
0001b2 f04ff04f MOV r8,#0
0001b6 f240f240 MOV r10,#0x13f
;;;701 {
;;;702 LCD_DisplayChar(Line7, (319 - (16 * i)), TempCelsius_Display[i]);
0001ba bf00 NOP
|L9.444|
0001bc f1c8f1c8 RSB r0,r8,#0
0001c0 eb0aeb0a ADD r9,r10,r0,LSL #4
0001c4 f814f814 LDRB r2,[r4,r8]
0001c8 fa1ffa1f UXTH r1,r9
0001cc 20a8 MOVS r0,#0xa8
0001ce f7fff7ff BL LCD_DisplayChar
;;;703 LCD_DisplayChar(Line8, (319 - (16 * i)), TempFahrenheit_Display[i]);
0001d2 f816f816 LDRB r2,[r6,r8]
0001d6 fa1ffa1f UXTH r1,r9
0001da 20c0 MOVS r0,#0xc0
0001dc f7fff7ff BL LCD_DisplayChar
0001e0 f108f108 ADD r8,r8,#1 ;700
0001e4 f1b8f1b8 CMP r8,#0x14 ;700
0001e8 d3e8 BCC |L9.444|
;;;704 }
;;;705 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, DISABLE);
0001ea 2100 MOVS r1,#0
0001ec 4638 MOV r0,r7
0001ee f7fff7ff BL RCC_AHBPeriphClockCmd
;;;706 pressedkey = ReadKey();
0001f2 f7fff7ff BL ReadKey
0001f6 4680 MOV r8,r0
|L9.504|
0001f8 f1b8f1b8 CMP r8,#0 ;653
0001fc f43ff43f BEQ |L9.160|
000200 e00e B |L9.544|
|L9.514|
;;;707 }
;;;708 }
;;;709 else
;;;710 {
;;;711 LCD_Clear(White);
000202 4658 MOV r0,r11
000204 f7fff7ff BL LCD_Clear
;;;712 LCD_DisplayStringLine(Line2, " No TSENSOR Present ");
000208 a115 ADR r1,|L9.608|
00020a 2030 MOVS r0,#0x30
00020c f7fff7ff BL LCD_DisplayStringLine
;;;713 LCD_DisplayStringLine(Line3, "Exit: Push JoyStick");
000210 a119 ADR r1,|L9.632|
000212 2048 MOVS r0,#0x48
000214 f7fff7ff BL LCD_DisplayStringLine
|L9.536|
;;;714 while(ReadKey() == NOKEY)
000218 f7fff7ff BL ReadKey
00021c 2800 CMP r0,#0
00021e d0fb BEQ |L9.536|
|L9.544|
;;;715 {
;;;716 }
;;;717 }
;;;718 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000220 2101 MOVS r1,#1
000222 4638 MOV r0,r7
000224 f7fff7ff BL RCC_AHBPeriphClockCmd
;;;719 LCD_Clear(White);
000228 4658 MOV r0,r11
00022a f7fff7ff BL LCD_Clear
;;;720 /* Display menu */
;;;721 DisplayMenu();
00022e f7fff7ff BL DisplayMenu
;;;722 /* Enable the JoyStick interrupt */
;;;723 IntExtOnOffConfig(ENABLE);
000232 e8bde8bd POP {r4-r12,lr}
000236 2001 MOVS r0,#1
000238 f7fff7ff B.W IntExtOnOffConfig
;;;724 }
;;;725
ENDP
|L9.572|
00023c 64fd8e4c DCD 0x64fd8e4c
|L9.576|
000240 20202020 DCB " "
000244 2054656d DCB " Tem"
000248 70657261 DCB "pera"
00024c 74757265 DCB "ture"
000250 20202020 DCB " "
000254 00000000 DCB "\0\0\0\0"
|L9.600|
000258 00000000 DCD ||.data||
|L9.604|
00025c 000186a0 DCD 0x000186a0
|L9.608|
000260 204e6f20 DCB " No "
000264 5453454e DCB "TSEN"
000268 534f5220 DCB "SOR "
00026c 50726573 DCB "Pres"
000270 656e7420 DCB "ent "
000274 00000000 DCB "\0\0\0\0"
|L9.632|
000278 45786974 DCB "Exit"
00027c 3a202050 DCB ": P"
000280 75736820 DCB "ush "
000284 4a6f7953 DCB "JoyS"
000288 7469636b DCB "tick"
00028c 00000000 DCB "\0\0\0\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 + -