?? ucos_ii.lst
字號:
__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 + -