⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsensor.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;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 + -