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

📄 ucos_ii.lst

📁 ucos-ii-at90S-icc-avr
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
    00AD E5CF      LDI	R28,0x5F
    00AE E0D2      LDI	R29,2
    00AF BFCD      OUT	P3D,R28
    00B0 BFDE      OUT	P3E,R29
    00B1 51C0      SUBI	R28,0x10
    00B2 40D0      SBCI	R29,0
    00B3 EA0A      LDI	R16,0xAA
    00B4 8308      STD	R16,0+Y
    00B5 2400      CLR	R0
    00B6 E9E1      LDI	R30,0x91
    00B7 E0F0      LDI	R31,0
    00B8 E012      LDI	R17,2
    00B9 32E6      CPI	R30,0x26
    00BA 07F1      CPC	R31,R17
    00BB F011      BEQ	0x00BE
    00BC 9201      ST	R0,Z+
    00BD CFFB      RJMP	0x00B9
    00BE 8300      STD	R16,0+Z
    00BF E2E8      LDI	R30,0x28
    00C0 E0F1      LDI	R31,1
    00C1 E6A0      LDI	R26,0x60
    00C2 E0B0      LDI	R27,0
    00C3 E011      LDI	R17,1
    00C4 35E9      CPI	R30,0x59
    00C5 07F1      CPC	R31,R17
    00C6 F021      BEQ	0x00CB
    00C7 95C8      LPM
    00C8 9631      ADIW	R30,1
    00C9 920D      ST	R0,X+
    00CA CFF9      RJMP	0x00C4
    00CB D0CC      RCALL	_main
_exit:
    00CC CFFF      RJMP	_exit
_myOSTimeDly:
  p                    --> R22
  ticks                --> R20
    00CD D8BF      RCALL	push_gset2
    00CE 2F40      MOV	R20,R16
    00CF 2F51      MOV	R21,R17
FILE: G:\编程2002-10-15-HOME\做过的项目\2002-10-22\home-c\software\ucos-ii-at90S-icc-avr\ucos-ii-source\test_func.c
(0001) #include "includes.h"
(0002) 
(0003) void myOSTimeDly (INT16U ticks)
(0004) {
(0005)   /*OSTCBCur*/
(0006)   OS_TCB      *p=OSTCBCur;
    00D0 91600201  LDS	R22,_OSTCBCur
    00D2 91700202  LDS	R23,_OSTCBCur+1
(0007)   if( ((OS_TCB*)0)==p)
    00D4 3060      CPI	R22,0
    00D5 0767      CPC	R22,R23
    00D6 F411      BNE	0x00D9
(0008)   {
(0009)     ProgramError();
    00D7 D092      RCALL	_ProgramError
(0010) 	return;
    00D8 C003      RJMP	0x00DC
(0011)   }
(0012)   OSTimeDly(ticks);
    00D9 2F04      MOV	R16,R20
    00DA 2F15      MOV	R17,R21
    00DB D775      RCALL	_OSTimeDly
(0013) }
    00DC D8B9      RCALL	pop_gset2
    00DD 9508      RET
_Flash_Port:
  port_foot            --> R22
  port_                --> R20
    00DE D8AE      RCALL	push_gset2
    00DF 2F62      MOV	R22,R18
    00E0 2F40      MOV	R20,R16
(0014) 
(0015) /* flash port*/
(0016) void Flash_Port(unsigned char port_,
(0017)        unsigned char port_foot)
(0018) {
(0019)   OS_ENTER_CRITICAL();
    00E1 930A      ST	R16,-Y
    00E2 B70F      IN	R16,P3F
    00E3 94F8      BCLR	7
    00E4 930F      PUSH	R16
    00E5 9109      LD	R16,Y+
(0020)   if(PORT_TO_FLASH_B==port_)
    00E6 2344      TST	R20
    00E7 F421      BNE	0x00EC
(0021)   {
(0022)   DDRB = 0xff;
    00E8 EF8F      LDI	R24,0xFF
    00E9 BB87      OUT	P17,R24
(0023)   PORTB = port_foot;
    00EA BB68      OUT	P18,R22
(0024)   }else
    00EB C003      RJMP	0x00EF
(0025)   {
(0026)   DDRC = 0xff;
    00EC EF8F      LDI	R24,0xFF
    00ED BB84      OUT	P14,R24
(0027)   PORTC = port_foot;
    00EE BB65      OUT	P15,R22
(0028)   }
(0029)   OS_EXIT_CRITICAL();
    00EF 930A      ST	R16,-Y
    00F0 910F      POP	R16
    00F1 DA81      RCALL	0x0B73
(0030)   Delay(DELAY_COUNT);		
    00F2 D01E      RCALL	_Delay
(0031)   
(0032)   OS_ENTER_CRITICAL();
    00F3 930A      ST	R16,-Y
    00F4 B70F      IN	R16,P3F
    00F5 94F8      BCLR	7
    00F6 930F      PUSH	R16
    00F7 9109      LD	R16,Y+
(0033)   if(PORT_TO_FLASH_B==port_)
    00F8 2344      TST	R20
    00F9 F421      BNE	0x00FE
(0034)   {
(0035)   DDRB = 0xff;
    00FA EF8F      LDI	R24,0xFF
    00FB BB87      OUT	P17,R24
(0036)   PORTB = 0xff;
    00FC BB88      OUT	P18,R24
(0037)   }else
    00FD C003      RJMP	0x0101
(0038)   {
(0039)   DDRC = 0xff;
    00FE EF8F      LDI	R24,0xFF
    00FF BB84      OUT	P14,R24
(0040)   PORTC = 0xff;
    0100 BB85      OUT	P15,R24
(0041)   }
(0042)   OS_EXIT_CRITICAL();
    0101 930A      ST	R16,-Y
    0102 910F      POP	R16
    0103 DA6F      RCALL	0x0B73
(0043)   Delay(DELAY_COUNT);		 
    0104 D00C      RCALL	_Delay
(0044) }
    0105 D890      RCALL	pop_gset2
    0106 9508      RET
(0045) 
(0046) /* test timer isr,flash PORT C 2*/
(0047) void test_OSTickISR0()
(0048) {
(0049)   unsigned char b1;
(0050)   /*reset timer*/
(0051)   TCNT0 =256-(7372800/50/1024);  /* ; Reload timer to overflow at a rate of 50Hz*/
_test_OSTickISR0:
  b1                   --> Y+1
    0107 E780      LDI	R24,0x70
    0108 BF82      OUT	P32,R24
(0052)   /*flash port A.2*/
(0053)   FLASH_PORT_B2();
    0109 EF2B      LDI	R18,0xFB
    010A 2700      CLR	R16
    010B DFD2      RCALL	_Flash_Port
(0054)   /*enable global interrupt*/
(0055)   OS_EXIT_CRITICAL();
    010C 930A      ST	R16,-Y
    010D 910F      POP	R16
    010E BF0F      OUT	P3F,R16
    010F 9109      LD	R16,Y+
(0056) }
    0110 9508      RET
_Delay:
  i                    --> R20
  j                    --> R10
  k                    --> R12
  loop                 --> R22
    0111 D881      RCALL	push_gset4
    0112 2F60      MOV	R22,R16
    0113 2F71      MOV	R23,R17
(0057) 
(0058) void Delay(int loop)
(0059) {
(0060)   unsigned char i,j,k;
(0061) /*  myOSTimeDly(1);return;*/
(0062) /*  myOSTimeDly(OS_TICKS_PER_SEC);  return;*/
(0063)   for(i=1;i<loop;i++)
    0114 E041      LDI	R20,1
    0115 C010      RJMP	0x0126
(0064)   {
(0065)     myOSTimeDly(1);
    0116 E001      LDI	R16,1
    0117 E010      LDI	R17,0
    0118 DFB4      RCALL	_myOSTimeDly
(0066)   for(j=1;j;j++)
    0119 24AA      CLR	R10
    011A 94A3      INC	R10
    011B C007      RJMP	0x0123
(0067)   {
(0068)     for(k=1;k;k++)
    011C 24CC      CLR	R12
    011D 94C3      INC	R12
    011E C001      RJMP	0x0120
    011F 94C3      INC	R12
    0120 20CC      TST	R12
    0121 F7E9      BNE	0x011F
    0122 94A3      INC	R10
    0123 20AA      TST	R10
    0124 F7B9      BNE	0x011C
    0125 9543      INC	R20
    0126 2E24      MOV	R2,R20
    0127 2433      CLR	R3
    0128 1626      CP	R2,R22
    0129 0637      CPC	R3,R23
    012A F35C      BLT	0x0116
(0069)       ;
(0070)   }
(0071)   }
(0072) }
    012B D86E      RCALL	pop_gset4
    012C 9508      RET
_Delay_Real:
  i                    --> R20
  j                    --> R22
  k                    --> R10
  loop                 --> R16
    012D D862      RCALL	push_gset3
(0073) 
(0074) void Delay_Real(int loop)
(0075) {
(0076)   unsigned char i,j,k;
(0077)   for(i=1;i<loop;i++)
    012E E041      LDI	R20,1
    012F C00C      RJMP	0x013C
(0078)   {
(0079)   for(j=1;j;j++)
    0130 E061      LDI	R22,1
    0131 C007      RJMP	0x0139
(0080)   {
(0081)     for(k=1;k;k++)
    0132 24AA      CLR	R10
    0133 94A3      INC	R10
    0134 C001      RJMP	0x0136
    0135 94A3      INC	R10
    0136 20AA      TST	R10
    0137 F7E9      BNE	0x0135
    0138 9563      INC	R22
    0139 2366      TST	R22
    013A F7B9      BNE	0x0132
    013B 9543      INC	R20
    013C 2E24      MOV	R2,R20
    013D 2433      CLR	R3
    013E 1620      CP	R2,R16
    013F 0631      CPC	R3,R17
    0140 F37C      BLT	0x0130
(0082)       ;
(0083)   }
(0084)   }
(0085) }
    0141 D856      RCALL	pop_gset3
    0142 9508      RET
_Delay_error:
  loop                 --> R20
    0143 D832      RCALL	push_gset1
    0144 DA33      RCALL	0x0B78
(0086) 
(0087) void Delay_error(int loop)
(0088) { Delay_Real(loop);}
    0145 DFE7      RCALL	_Delay_Real
    0146 D832      RCALL	pop_gset1
    0147 9508      RET
_ProgramRest:
  i                    --> R20
  times                --> R22
    0148 D844      RCALL	push_gset2
    0149 2F60      MOV	R22,R16
    014A 2F71      MOV	R23,R17
(0089) /*when reset,called
(0090)   flash PORTA,PORTB,PORTC,PORTD */
(0091) void ProgramRest(int times)
(0092) {
(0093)  int i;
(0094)  for(i=0;i<times;i++)
    014B 2744      CLR	R20
    014C 2755      CLR	R21
    014D C017      RJMP	0x0165
(0095)  {  
(0096)   DDRA = 0xff;
    014E EF8F      LDI	R24,0xFF
    014F BB8A      OUT	P1A,R24
(0097)   DDRB = 0xff;
    0150 BB87      OUT	P17,R24
(0098)   DDRC = 0xff;
    0151 BB84      OUT	P14,R24
(0099)   DDRD = 0xff;
    0152 BB81      OUT	P11,R24
(0100)   PORTA=0;
    0153 2422      CLR	R2
    0154 BA2B      OUT	P1B,R2
(0101)   PORTB=0;
    0155 BA28      OUT	P18,R2
(0102)   PORTC=0;  
    0156 BA25      OUT	P15,R2
(0103)   PORTD=0;
    0157 BA22      OUT	P12,R2
(0104)   Delay_Real(DELAY_COUNT_WHEN_RESET);
    0158 E00A      LDI	R16,0xA
    0159 E010      LDI	R17,0
    015A DFD2      RCALL	_Delay_Real
(0105)   PORTA=0xff;
    015B EF8F      LDI	R24,0xFF
    015C BB8B      OUT	P1B,R24
(0106)   PORTB=0xff;
    015D BB88      OUT	P18,R24
(0107)   PORTC=0xff;
    015E BB85      OUT	P15,R24
(0108)   PORTD=0xff;
    015F BB82      OUT	P12,R24
(0109)   Delay_Real(DELAY_COUNT_WHEN_RESET);
    0160 E00A      LDI	R16,0xA
    0161 E010      LDI	R17,0
    0162 DFCA      RCALL	_Delay_Real
    0163 5F4F      SUBI	R20,0xFF
    0164 4F5F      SBCI	R21,0xFF
    0165 1746      CP	R20,R22
    0166 0757      CPC	R21,R23
    0167 F334      BLT	0x014E
(0110)   }
(0111) }
    0168 D82D      RCALL	pop_gset2
    0169 9508      RET
(0112) 
(0113) /*when error,dead loop*/
(0114) void ProgramError()
(0115) {
_ProgramError:
    016A C003      RJMP	0x016E
(0116)  	 while(1) 
(0117) 	   ProgramError_Times(1);
    016B E001      LDI	R16,1
    016C E010      LDI	R17,0
    016D D002      RCALL	_ProgramError_Times
    016E CFFC      RJMP	0x016B
(0118) }
    016F 9508      RET
_ProgramError_Times:
  i                    --> R20
  times                --> R22
    0170 D81C      RCALL	push_gset2
    0171 2F60      MOV	R22,R16
    0172 2F71      MOV	R23,R17
(0119) 
(0120) /*when reset,called*/
(0121) /*flash PORTA,PORTB*/
(0122) void ProgramError_Times(int times)
(0123) {
(0124)  int i;
(0125)  OS_ENTER_CRITICAL();
    0173 930A      ST	R16,-Y
    0174 B70F      IN	R16,P3F
    0175 94F8      BCLR	7
    0176 930F      PUSH	R16
    0177 9109      LD	R16,Y+
(0126)  for(i=0;i<times;i++)
    0178 2744      CLR	R20
    0179 2755      CLR	R21
    017A C013      RJMP	0x018E
(0127)  {  
(0128)   DDRA = 0xff;

⌨️ 快捷键说明

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