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

📄 main.txt

📁 射频芯片nRF905例程
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000190  0005              MOVS     r5,r0
;;;651    	  while (i) {
000192  e00e              B        |L1.434|
;;;652    	    IO0CLR = (1 << BEEP);			// BEEP	蜂鸣
                  |L1.404|
000194  2001              MOVS     r0,#1
000196  0540              LSLS     r0,r0,#21
000198  498c              LDR      r1,|L1.972|
00019a  60c8              STR      r0,[r1,#0xc]
;;;653            os_dly_wait (10);//延时100mS
00019c  200a              MOVS     r0,#0xa
00019e  f7ff fffe         BL       os_dly_wait
;;;654    	    IO0SET = (1 << BEEP);			// BEEP停止蜂鸣
0001a2  2001              MOVS     r0,#1
0001a4  0540              LSLS     r0,r0,#21
0001a6  4989              LDR      r1,|L1.972|
0001a8  6048              STR      r0,[r1,#4]
;;;655            os_dly_wait (10);//延时100mS
0001aa  200a              MOVS     r0,#0xa
0001ac  f7ff fffe         BL       os_dly_wait
;;;656    	    i --;
0001b0  1e6d              SUBS     r5,r5,#1
                  |L1.434|
0001b2  2d00              CMP      r5,#0                 ;651
0001b4  d1ee              BNE      |L1.404|              ;651
0001b6  e7e1              B        |L1.380|              ;651
;;;657    	  }
;;;658    	}
;;;659      }
;;;660    }
                          ENDP

                  _Z7LcdTaskv PROC ; LcdTask()
;;;632    
;;;633    void LcdTask (void) __task {
0001b8  b510              PUSH     {r4,lr}
;;;634    OS_RESULT result;
;;;635      for (;;) {
0001ba  46c0              MOV      r8,r8
;;;636        result = os_evt_wait_or(0xffff, 0xffff);//等待LcdTask任务事件发生
                  |L1.444|
0001bc  2200              MOVS     r2,#0
0001be  4984              LDR      r1,|L1.976|
0001c0  0008              MOVS     r0,r1
0001c2  f7ff fffe         BL       os_evt_wait
;;;637    	if(result == OS_R_EVT) {
;;;638    	}
;;;639    //    Lcd.LcdDisplayBuffer();
;;;640        os_tsk_pass();   
0001c6  f7ff fffe         BL       os_tsk_pass
0001ca  e7f7              B        |L1.444|
;;;641      }
;;;642    }
                          ENDP

                  _ZN6KeyObj9GetKeyValEv PROC ; KeyObj::GetKeyVal()
;;;53     unsigned char KeyObj::GetKeyVal(void)
;;;54     {
0001cc  b410              PUSH     {r4}
0001ce  0001              MOVS     r1,r0
;;;55     unsigned char KeyTestVal = 0xff;
0001d0  20ff              MOVS     r0,#0xff
;;;56     unsigned int KeyVal, KeyNewVal;
;;;57       KeyNewVal = IOPIN1;
0001d2  4c7e              LDR      r4,|L1.972|
0001d4  6924              LDR      r4,[r4,#0x10]
0001d6  0023              MOVS     r3,r4
;;;58       KeyNewVal &= (1 << KEY1)
0001d8  4c7e              LDR      r4,|L1.980|
0001da  4023              ANDS     r3,r3,r4
;;;59                 |  (1 << KEY2) 
;;;60                 |  (1 << KEY3) 
;;;61                 |  (1 << KEY4) 
;;;62                 |  (1 << KEY5) 
;;;63                 |  (1 << KEY6) 
;;;64                 |  (1 << KEYA) 
;;;65                 |  (1 << KEYB) 
;;;66                 |  (1 << KEYC) 
;;;67                 |  (1 << KEYD);//只取有效键值 
;;;68       if (KeyNewVal != KeyBuffer) {
0001dc  68cc              LDR      r4,[r1,#0xc]
0001de  429c              CMP      r4,r3
0001e0  d03e              BEQ      |L1.608|
;;;69         KeyVal = KeyNewVal ^ KeyBuffer;
0001e2  68cc              LDR      r4,[r1,#0xc]
0001e4  0022              MOVS     r2,r4
0001e6  405a              EORS     r2,r2,r3
;;;70         if (KeyVal & (1 << KEY1))      KeyTestVal = 0; 
0001e8  2401              MOVS     r4,#1
0001ea  0524              LSLS     r4,r4,#20
0001ec  4222              TST      r2,r4
0001ee  d001              BEQ      |L1.500|
0001f0  2000              MOVS     r0,#0
0001f2  e034              B        |L1.606|
;;;71         else if (KeyVal & (1 << KEY2)) KeyTestVal = 1; 
                  |L1.500|
0001f4  2401              MOVS     r4,#1
0001f6  0564              LSLS     r4,r4,#21
0001f8  4222              TST      r2,r4
0001fa  d001              BEQ      |L1.512|
0001fc  2001              MOVS     r0,#1
0001fe  e02e              B        |L1.606|
;;;72         else if (KeyVal & (1 << KEY3)) KeyTestVal = 2; 
                  |L1.512|
000200  2401              MOVS     r4,#1
000202  05a4              LSLS     r4,r4,#22
000204  4222              TST      r2,r4
000206  d001              BEQ      |L1.524|
000208  2002              MOVS     r0,#2
00020a  e028              B        |L1.606|
;;;73         else if (KeyVal & (1 << KEY4)) KeyTestVal = 3; 
                  |L1.524|
00020c  2401              MOVS     r4,#1
00020e  05e4              LSLS     r4,r4,#23
000210  4222              TST      r2,r4
000212  d001              BEQ      |L1.536|
000214  2003              MOVS     r0,#3
000216  e022              B        |L1.606|
;;;74         else if (KeyVal & (1 << KEY5)) KeyTestVal = 4; 
                  |L1.536|
000218  2401              MOVS     r4,#1
00021a  0624              LSLS     r4,r4,#24
00021c  4222              TST      r2,r4
00021e  d001              BEQ      |L1.548|
000220  2004              MOVS     r0,#4
000222  e01c              B        |L1.606|
;;;75         else if (KeyVal & (1 << KEY6)) KeyTestVal = 5; 
                  |L1.548|
000224  2401              MOVS     r4,#1
000226  0664              LSLS     r4,r4,#25
000228  4222              TST      r2,r4
00022a  d001              BEQ      |L1.560|
00022c  2005              MOVS     r0,#5
00022e  e016              B        |L1.606|
;;;76         else if (KeyVal & (1 << KEYA)) KeyTestVal = 6; 
                  |L1.560|
000230  2401              MOVS     r4,#1
000232  06e4              LSLS     r4,r4,#27
000234  4222              TST      r2,r4
000236  d001              BEQ      |L1.572|
000238  2006              MOVS     r0,#6
00023a  e010              B        |L1.606|
;;;77         else if (KeyVal & (1 << KEYB)) KeyTestVal = 7; 
                  |L1.572|
00023c  2401              MOVS     r4,#1
00023e  0724              LSLS     r4,r4,#28
000240  4222              TST      r2,r4
000242  d001              BEQ      |L1.584|
000244  2007              MOVS     r0,#7
000246  e00a              B        |L1.606|
;;;78         else if (KeyVal & (1 << KEYC)) KeyTestVal = 8; 
                  |L1.584|
000248  2401              MOVS     r4,#1
00024a  0764              LSLS     r4,r4,#29
00024c  4222              TST      r2,r4
00024e  d001              BEQ      |L1.596|
000250  2008              MOVS     r0,#8
000252  e004              B        |L1.606|
;;;79         else if (KeyVal & (1 << KEYD)) KeyTestVal = 9; 
                  |L1.596|
000254  2401              MOVS     r4,#1
000256  07a4              LSLS     r4,r4,#30
000258  4222              TST      r2,r4
00025a  d000              BEQ      |L1.606|
00025c  2009              MOVS     r0,#9
;;;80         KeyBuffer = KeyNewVal;
                  |L1.606|
00025e  60cb              STR      r3,[r1,#0xc]
;;;81       }
;;;82       return KeyTestVal;//无键压下为0xff
                  |L1.608|
000260  bc10              POP      {r4}
;;;83     }
000262  4770              BX       lr
                          ENDP

                  _Z7KeyTaskv PROC ; KeyTask()
;;;619    
;;;620    void KeyTask (void) __task {
000264  b570              PUSH     {r4-r6,lr}
;;;621    unsigned char KeyVal;
;;;622      os_itv_set(5);//每个节拍醒来一次
000266  2005              MOVS     r0,#5
000268  f7ff fffe         BL       os_itv_set
;;;623      for (;;) {
00026c  46c0              MOV      r8,r8
;;;624        os_itv_wait();//
                  |L1.622|
00026e  f7ff fffe         BL       os_itv_wait
;;;625    	KeyVal = Key.GetKeyVal();
000272  4859              LDR      r0,|L1.984|
000274  f7ff fffe         BL       _ZN6KeyObj9GetKeyValEv
000278  0004              MOVS     r4,r0
;;;626    	if (KeyVal != 0xff) {
00027a  2cff              CMP      r4,#0xff
00027c  d0f7              BEQ      |L1.622|
;;;627          os_evt_set (1, Beep_Task);//开关BEEP
00027e  4857              LDR      r0,|L1.988|
000280  6801              LDR      r1,[r0,#0]  ; Beep_Task
000282  2001              MOVS     r0,#1
000284  f7ff fffe         BL       os_evt_set
;;;628    	  Key.KeyCommandExec(1, KeyVal);
000288  46c0              MOV      r8,r8
00028a  2001              MOVS     r0,#1                 ;134
00028c  2803              CMP      r0,#3                 ;134
00028e  da09              BGE      |L1.676|              ;134
000290  2c09              CMP      r4,#9                 ;134
000292  dc07              BGT      |L1.676|              ;134
000294  2328              MOVS     r3,#0x28              ;136
000296  4358              MULS     r0,r3,r0              ;136
000298  4951              LDR      r1,|L1.992|           ;136
00029a  1840              ADDS     r0,r0,r1              ;136
00029c  00a1              LSLS     r1,r4,#2              ;136
00029e  5845              LDR      r5,[r0,r1]            ;136
0002a0  f7ff fffe         BL       __ARM_call_via_r5     ;137
                  |L1.676|
0002a4  46c0              MOV      r8,r8                 ;139
0002a6  e7e2              B        |L1.622|
;;;629    	}
;;;630      }
;;;631    }
                          ENDP

                  _Z8MainTaskv PROC ; MainTask()
;;;597    
;;;598    void MainTask (void) __task {
0002a8  b510              PUSH     {r4,lr}
;;;599      tmr1 = os_tmr_create (10, 1);
0002aa  2101              MOVS     r1,#1
0002ac  200a              MOVS     r0,#0xa
0002ae  f7ff fffe         BL       os_tmr_create
0002b2  494c              LDR      r1,|L1.996|
0002b4  6008              STR      r0,[r1,#0]  ; tmr1
;;;600      Main_Task = os_tsk_self ();
0002b6  f7ff fffe         BL       os_tsk_self
0002ba  494b              LDR      r1,|L1.1000|
0002bc  6008              STR      r0,[r1,#0]  ; Main_Task
;;;601      Key_Task = os_tsk_create (KeyTask, 1);//创建KeyTask任务及级别
0002be  2200              MOVS     r2,#0
0002c0  2101              MOVS     r1,#1
0002c2  484a              LDR      r0,|L1.1004|
0002c4  2300              MOVS     r3,#0
0002c6  f7ff fffe         BL       os_tsk_create_user
0002ca  4949              LDR      r1,|L1.1008|
0002cc  6008              STR      r0,[r1,#0]  ; Key_Task
;;;602      Lcd_Task = os_tsk_create (LcdTask, 1);//创建LcdTask任务及级别
0002ce  2200              MOVS     r2,#0
0002d0  2101              MOVS     r1,#1
0002d2  4848              LDR      r0,|L1.1012|
0002d4  2300              MOVS     r3,#0
0002d6  f7ff fffe         BL       os_tsk_create_user
0002da  4947              LDR      r1,|L1.1016|
0002dc  6008              STR      r0,[r1,#0]  ; Lcd_Task
;;;603      Beep_Task = os_tsk_create (BeepTask, 10);//创建BeepTask任务及级别
0002de  2200              MOVS     r2,#0
0002e0  210a              MOVS     r1,#0xa
0002e2  4846              LDR      r0,|L1.1020|
0002e4  2300              MOVS     r3,#0
0002e6  f7ff fffe         BL       os_tsk_create_user
0002ea  493c              LDR      r1,|L1.988|
0002ec  6008              STR      r0,[r1,#0]  ; Beep_Task
;;;604      Lcd.SetLcdDisplayPos(0, 0);//汉字定位到上行左端
0002ee  2200              MOVS     r2,#0
0002f0  2100              MOVS     r1,#0
0002f2  4843              LDR      r0,|L1.1024|
0002f4  f7ff fffe         BL       _ZN6LcdObj16SetLcdDisplayPosEhh
;;;605      os_evt_set (8, Beep_Task);//开机BEEP响8下
0002f8  4838              LDR      r0,|L1.988|
0002fa  6801              LDR      r1,[r0,#0]  ; Beep_Task
0002fc  2008              MOVS     r0,#8
0002fe  f7ff fffe         BL       os_evt_set
;;;606      for (;;) {
000302  46c0              MOV      r8,r8
;;;607    //汉字0xfd出错测试	   
;;;608      Lcd.LcdDisplay("褒饼昌除待谍洱俘");
                  |L1.772|
000304  a13f              ADR      r1,|L1.1028|
000306  483e              LDR      r0,|L1.1024|
000308  f7ff fffe         BL       _ZN6LcdObj10LcdDisplayEPKc
;;;609      Lcd.SetLcdDisplayPos(1, 0);//汉字定位到上行左端
00030c  2200              MOVS     r2,#0
00030e  2101              MOVS     r1,#1
000310  483b              LDR      r0,|L1.1024|
000312  f7ff fffe         BL       _ZN6LcdObj16SetLcdDisplayPosEhh
;;;610      Lcd.LcdDisplay("庚过糊积箭烬君魁");
000316  a140              ADR      r1,|L1.1048|
000318  4839              LDR      r0,|L1.1024|
00031a  f7ff fffe         BL       _ZN6LcdObj10LcdDisplayEPKc
;;;611      Lcd.SetLcdDisplayPos(2, 0);//汉字定位到上行左端
00031e  2200              MOVS     r2,#0
000320  2102              MOVS     r1,#2
000322  4837              LDR      r0,|L1.1024|
000324  f7ff fffe         BL       _ZN6LcdObj16SetLcdDisplayPosEhh
;;;612      Lcd.LcdDisplay("例笼慢谬凝琵讫驱");
000328  a140              ADR      r1,|L1.1068|
00032a  4835              LDR      r0,|L1.1024|
00032c  f7ff fffe         BL       _ZN6LcdObj10LcdDisplayEPKc
;;;613      Lcd.SetLcdDisplayPos(3, 0);//汉字定位到上行左端
000330  2200              MOVS     r2,#0
000332  2103              MOVS     r1,#3
000334  4832              LDR      r0,|L1.1024|
000336  f7ff fffe         BL       _ZN6LcdObj16SetLcdDisplayPosEhh
;;;614      Lcd.LcdDisplay("三升数她听妄锡淆");
00033a  a141              ADR      r1,|L1.1088|
00033c  4830              LDR      r0,|L1.1024|
00033e  f7ff fffe         BL       _ZN6LcdObj10LcdDisplayEPKc
;;;615        ::Lcd.LcdDisplayBuffer();//刷新LCD显示缓冲区
000342  482f              LDR      r0,|L1.1024|
000344  f7ff fffe         BL       _ZN6LcdObj16LcdDisplayBufferEv
;;;616        os_dly_wait (100);//延时100mS
000348  2064              MOVS     r0,#0x64
00034a  f7ff fffe         BL       os_dly_wait
00034e  e7d9              B        |L1.772|
;;;617      }
;;;618    }
                          ENDP

⌨️ 快捷键说明

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