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

📄 main.txt

📁 射频芯片nRF905例程
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;439      LcdSendCommand(0x04);//发送进入点命令 
000500  2104              MOVS     r1,#4
000502  0020              MOVS     r0,r4
000504  f7ff fffe         BL       _ZN6LcdObj14LcdSendCommandEc
;;;440      LcdSendCommand(0x0c);//发送开显示关光标命令 
000508  210c              MOVS     r1,#0xc
00050a  0020              MOVS     r0,r4
00050c  f7ff fffe         BL       _ZN6LcdObj14LcdSendCommandEc
;;;441      LcdSendCommand(0x01);//发送清除显示命令 
000510  2101              MOVS     r1,#1
000512  0020              MOVS     r0,r4
000514  f7ff fffe         BL       _ZN6LcdObj14LcdSendCommandEc
;;;442      LcdSendCommand(0x80);//发送设定DDRAM地址0x00命令 
000518  2180              MOVS     r1,#0x80
00051a  0020              MOVS     r0,r4
00051c  f7ff fffe         BL       _ZN6LcdObj14LcdSendCommandEc
;;;443    }
000520  bc10              POP      {r4}
000522  bc08              POP      {r3}
000524  4718              BX       r3
                          ENDP

                  _ZN6LcdObjC1Ev PROC ; LcdObj::LcdObj()
                  _ZN6LcdObjC2Ev                  ; Second entry point ; LcdObj::LcdObj__sub_object()
;;;405    LcdObj::LcdObj(void)
;;;406    {
000526  b510              PUSH     {r4,lr}
000528  0004              MOVS     r4,r0
;;;407      LcdInit();
00052a  0020              MOVS     r0,r4
00052c  f7ff fffe         BL       _ZN6LcdObj7LcdInitEv
000530  0020              MOVS     r0,r4
000532  bc10              POP      {r4}
000534  bc08              POP      {r3}
;;;408    }
000536  4718              BX       r3
                          ENDP

                  _ZN6LcdObj10LcdDisplayEjha PROC ; LcdObj::LcdDisplay(unsigned, unsigned char, signed char)
;;;563    void LcdObj::LcdDisplay(unsigned int Val, unsigned char size1, signed char size0)
;;;564    {
000538  b5ff              PUSH     {r0-r7,lr}
00053a  b083              SUB      sp,sp,#0xc
00053c  0015              MOVS     r5,r2
00053e  001c              MOVS     r4,r3
;;;565    char str[7], *ptr;
;;;566    unsigned char i;
;;;567      ptr = str + 5;
000540  ae02              ADD      r6,sp,#8
000542  1c76              ADDS     r6,r6,#1
;;;568      if (size0 > 0) {//有小数
000544  2c00              CMP      r4,#0
000546  dd19              BLE      |L1.1404|
;;;569        for (i = 0; i < 3; i ++) {
000548  2700              MOVS     r7,#0
00054a  e00e              B        |L1.1386|
;;;570    	  *ptr -- = (Val % 10) + '0';
                  |L1.1356|
00054c  210a              MOVS     r1,#0xa
00054e  9804              LDR      r0,[sp,#0x10]
000550  f7ff fffe         BL       __aeabi_uidivmod
000554  3130              ADDS     r1,r1,#0x30
000556  7031              STRB     r1,[r6,#0]
000558  1e76              SUBS     r6,r6,#1
;;;571    	  Val /= 10;
00055a  210a              MOVS     r1,#0xa
00055c  9804              LDR      r0,[sp,#0x10]
00055e  f7ff fffe         BL       __aeabi_uidivmod
000562  9004              STR      r0,[sp,#0x10]
000564  1c78              ADDS     r0,r7,#1              ;569
000566  0607              LSLS     r7,r0,#24             ;569
000568  0e3f              LSRS     r7,r7,#24             ;569
                  |L1.1386|
00056a  2f03              CMP      r7,#3                 ;569
00056c  dbee              BLT      |L1.1356|             ;569
;;;572        }
;;;573        ptr[size0 + 1] = 0;
00056e  2100              MOVS     r1,#0
000570  1c60              ADDS     r0,r4,#1
000572  5431              STRB     r1,[r6,r0]
;;;574        *ptr -- = '.';
000574  202e              MOVS     r0,#0x2e
000576  7030              STRB     r0,[r6,#0]
000578  1e76              SUBS     r6,r6,#1
00057a  e002              B        |L1.1410|
;;;575      }
;;;576      else {
;;;577        *ptr -- = 0;
                  |L1.1404|
00057c  2000              MOVS     r0,#0
00057e  7030              STRB     r0,[r6,#0]
000580  1e76              SUBS     r6,r6,#1
;;;578      }
;;;579      for (i = 0; i < size1; i ++) {
                  |L1.1410|
000582  2700              MOVS     r7,#0
000584  e01d              B        |L1.1474|
;;;580        if (i && (Val == 0)) {
                  |L1.1414|
000586  2f00              CMP      r7,#0
000588  d00c              BEQ      |L1.1444|
00058a  9804              LDR      r0,[sp,#0x10]
00058c  2800              CMP      r0,#0
00058e  d109              BNE      |L1.1444|
;;;581    	  if (size0 < 0) {
000590  2c00              CMP      r4,#0
000592  da03              BGE      |L1.1436|
;;;582    	    *ptr -- = '0';
000594  2030              MOVS     r0,#0x30
000596  7030              STRB     r0,[r6,#0]
000598  1e76              SUBS     r6,r6,#1
00059a  e00a              B        |L1.1458|
;;;583    	  }
;;;584    	  else {
;;;585    	    *ptr -- = ' ';
                  |L1.1436|
00059c  2020              MOVS     r0,#0x20
00059e  7030              STRB     r0,[r6,#0]
0005a0  1e76              SUBS     r6,r6,#1
0005a2  e006              B        |L1.1458|
;;;586    	  }
;;;587        }
;;;588    	else *ptr -- = (Val % 10) + '0';
                  |L1.1444|
0005a4  210a              MOVS     r1,#0xa
0005a6  9804              LDR      r0,[sp,#0x10]
0005a8  f7ff fffe         BL       __aeabi_uidivmod
0005ac  3130              ADDS     r1,r1,#0x30
0005ae  7031              STRB     r1,[r6,#0]
0005b0  1e76              SUBS     r6,r6,#1
;;;589    	Val /= 10;
                  |L1.1458|
0005b2  210a              MOVS     r1,#0xa
0005b4  9804              LDR      r0,[sp,#0x10]
0005b6  f7ff fffe         BL       __aeabi_uidivmod
0005ba  9004              STR      r0,[sp,#0x10]
0005bc  1c78              ADDS     r0,r7,#1              ;579
0005be  0607              LSLS     r7,r0,#24             ;579
0005c0  0e3f              LSRS     r7,r7,#24             ;579
                  |L1.1474|
0005c2  42af              CMP      r7,r5                 ;579
0005c4  dbdf              BLT      |L1.1414|             ;579
;;;590      }
;;;591      LcdDisplay(ptr + 1);
0005c6  1c71              ADDS     r1,r6,#1
0005c8  9803              LDR      r0,[sp,#0xc]
0005ca  f7ff fffe         BL       _ZN6LcdObj10LcdDisplayEPKc
;;;592    }
0005ce  b007              ADD      sp,sp,#0x1c
0005d0  bcf0              POP      {r4-r7}
0005d2  bc08              POP      {r3}
0005d4  4718              BX       r3
                          ENDP

                  _ZN6KeyObj7KeyInitEv PROC ; KeyObj::KeyInit()
;;;34     void KeyObj::KeyInit(void)
;;;35     {
0005d6  493b              LDR      r1,|L1.1732|
;;;36       IODIR1 &= ~((1 << KEY1) | (1 << KEY2) | (1 << KEY3) | (1 << KEY4) | (1 << KEY5) | (1 << KEY6));
0005d8  6989              LDR      r1,[r1,#0x18]
0005da  223f              MOVS     r2,#0x3f
0005dc  0512              LSLS     r2,r2,#20
0005de  4391              BICS     r1,r1,r2
0005e0  4a38              LDR      r2,|L1.1732|
0005e2  6191              STR      r1,[r2,#0x18]
;;;37       IODIR1 &= ~((1 << KEYA) | (1 << KEYB) | (1 << KEYC) | (1 << KEYD));
0005e4  0011              MOVS     r1,r2
0005e6  6989              LDR      r1,[r1,#0x18]
0005e8  220f              MOVS     r2,#0xf
0005ea  06d2              LSLS     r2,r2,#27
0005ec  4391              BICS     r1,r1,r2
0005ee  4a35              LDR      r2,|L1.1732|
0005f0  6191              STR      r1,[r2,#0x18]
;;;38       KeyBuffer = IOPIN1;//取键盘缓冲区
0005f2  0011              MOVS     r1,r2
0005f4  6909              LDR      r1,[r1,#0x10]
0005f6  60c1              STR      r1,[r0,#0xc]
;;;39       KeyBuffer &= (1 << KEY1)
0005f8  4a33              LDR      r2,|L1.1736|
0005fa  68c1              LDR      r1,[r0,#0xc]
0005fc  4011              ANDS     r1,r1,r2
0005fe  60c1              STR      r1,[r0,#0xc]
;;;40                 |  (1 << KEY2) 
;;;41                 |  (1 << KEY3) 
;;;42                 |  (1 << KEY4) 
;;;43                 |  (1 << KEY5) 
;;;44                 |  (1 << KEY6) 
;;;45                 |  (1 << KEYA) 
;;;46                 |  (1 << KEYB) 
;;;47                 |  (1 << KEYC) 
;;;48                 |  (1 << KEYD);//只取有效键值 
;;;49     }
000600  4770              BX       lr
                          ENDP

                  _ZN6KeyObjC1Ev PROC ; KeyObj::KeyObj()
                  _ZN6KeyObjC2Ev                  ; Second entry point ; KeyObj::KeyObj__sub_object()
;;;28     KeyObj::KeyObj(void)
;;;29     {
000602  b500              PUSH     {lr}
000604  0003              MOVS     r3,r0
;;;30       KeyInit();
000606  0018              MOVS     r0,r3
000608  f7ff fffe         BL       _ZN6KeyObj7KeyInitEv
00060c  0018              MOVS     r0,r3
00060e  bc08              POP      {r3}
;;;31     }
000610  4718              BX       r3
                          ENDP

                  _ZN6KeyObj4ExecEv PROC ; KeyObj::Exec()
;;;87     void KeyObj::Exec(void)
;;;88     {
000612  b510              PUSH     {r4,lr}
000614  0004              MOVS     r4,r0
;;;89       if (KeyCount == GetKeyVal()) {//有键压下(每次只取1键以实现“零耗时消除键盘抖动”)
000616  0020              MOVS     r0,r4
000618  f7ff fffe         BL       _ZN6KeyObj9GetKeyValEv
00061c  7a21              LDRB     r1,[r4,#8]
00061e  4288              CMP      r0,r1
000620  d10f              BNE      |L1.1602|
;;;90         if (KeyTest[KeyCount] < SystemKeyPushTime) {//100*20mS=2S//压键长短判别
000622  7a20              LDRB     r0,[r4,#8]
000624  5c20              LDRB     r0,[r4,r0]
000626  2828              CMP      r0,#0x28
000628  da07              BGE      |L1.1594|
;;;91     	  KeyTest[KeyCount] ++;//计数每20mS键盘压键的次数(选2较好些)
00062a  7a20              LDRB     r0,[r4,#8]
00062c  5c20              LDRB     r0,[r4,r0]
00062e  1c40              ADDS     r0,r0,#1
000630  7a21              LDRB     r1,[r4,#8]
000632  5460              STRB     r0,[r4,r1]
000634  7a20              LDRB     r0,[r4,#8]
000636  5c20              LDRB     r0,[r4,r0]
000638  e008              B        |L1.1612|
;;;92     	  if (KeyTest[KeyCount] == SystemKeyPushNum) {//键刚压下//短压键
;;;93     //		KeyWaitCount[KeyCount] = 8000;//键盘压键释放计数器
;;;94     //	    KeyCommandExec(1);//短压键事件处理(1)
;;;95     //        ::Ctrl.BeepStart(DefBeep_1);//蜂鸣器发1声
;;;96     	  }
;;;97     	}
;;;98     	else {//长压键 20mS*100=2S
;;;99     	  KeyTest[KeyCount] = SystemKeyPushNum;//再压3S继续执行下一次长压键
                  |L1.1594|
00063a  2003              MOVS     r0,#3
00063c  7a21              LDRB     r1,[r4,#8]
00063e  5460              STRB     r0,[r4,r1]
000640  e004              B        |L1.1612|
                  |L1.1602|
000642  7a20              LDRB     r0,[r4,#8]
000644  5c20              LDRB     r0,[r4,r0]
;;;100    //	  if (KeyWaitCount[KeyCount] == 0) {
;;;101    //	    KeyWaitCount[KeyCount] = 8000;//键盘压键释放计数器
;;;102    //	  }
;;;103    //      KeyCommandExec(2);//长压键3S事件处理(2)
;;;104    //      ::Ctrl.BeepStart(DefBeep_2);//蜂鸣器发2声
;;;105    	}
;;;106      }
;;;107      else {//无键压下
;;;108        if (KeyTest[KeyCount] >= SystemKeyPushNum) {//键释放
;;;109    //	  KeyWaitCount[KeyCount] = 8000;//键盘压键释放计数器
;;;110    //	  KeyCommandExec(0);//键释放事件处理(0)
;;;111    	}
;;;112    	else {//无键压下或干扰
;;;113    	}
;;;114        KeyTest[KeyCount] = 0;//清除压键计数器
000646  2000              MOVS     r0,#0
000648  7a21              LDRB     r1,[r4,#8]
00064a  5460              STRB     r0,[r4,r1]
;;;115      }
;;;116      KeyCount ++;//为下次扫描做准备
                  |L1.1612|
00064c  7a20              LDRB     r0,[r4,#8]
00064e  1c40              ADDS     r0,r0,#1
000650  7220              STRB     r0,[r4,#8]
;;;117      if (KeyCount >= 10) KeyCount = 0;//只有10个键
000652  7a20              LDRB     r0,[r4,#8]
000654  280a              CMP      r0,#0xa
000656  db01              BLT      |L1.1628|
000658  2000              MOVS     r0,#0
00065a  7220              STRB     r0,[r4,#8]
;;;118    }
                  |L1.1628|
00065c  bc10              POP      {r4}
00065e  bc08              POP      {r3}
000660  4718              BX       r3
                          ENDP

                  _ZN6KeyObj5Key00Ev PROC ; KeyObj::Key00()
;;;149    void KeyObj::Key00(void)
;;;150    {
000662  b510              PUSH     {r4,lr}
;;;151      os_evt_set (8, Beep_Task);//开关BEEP
000664  4819              LDR      r0,|L1.1740|
000666  6801              LDR      r1,[r0,#0]  ; Beep_Task
000668  2008              MOVS     r0,#8
00066a  f7ff fffe         BL       os_evt_set
;;;152    }
00066e  bc10              POP      {r4}
000670  bc08              POP      {r3}
000672  4718              BX       r3
                          ENDP

                  _ZN6KeyObj5Key01Ev PROC ; KeyObj::Key01()
;;;158    void KeyObj::Key01(void)
;;;159    {
000674  4770              BX       lr
;;;160    }
                          ENDP

                  _ZN6KeyObj5Key02Ev PROC ; KeyObj::Key02()
;;;166    void KeyObj::Key02(void)
;;;167    {
000676  4770              BX       lr
;;;168    }
                          ENDP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -