?? test_funcs.s
字號:
.module test_funcs.c
.area text(rom, con, rel)
.dbfile G:\編程2002-10-15-HOME\做過的項目\2002-10-22\home-c\software\ucos-ii-at90S-icc-avr\os-task-sem\test_funcs.c
.dbfunc e TC2_Init _TC2_Init fV
.even
_TC2_Init::
.dbline -1
.dbline 7
; #include "includes.h"
;
; //*****************************************************************************
; // TickISR
; //*****************************************************************************
; // Init Timer/Counter2 fuer Takterzeugung
; void TC2_Init (void){
.dbline 8
; TCCR0 = 0x05; /* Set TIMER0 prescaler to CLK/1024 */
ldi R24,5
out 0x33,R24
.dbline 9
; TIMSK = 0x02; /* Enable TIMER0 overflow interrupt */
ldi R24,2
out 0x39,R24
.dbline 10
; UBRR=25;//192,00
ldi R24,25
out 0x9,R24
.dbline 11
; UCR=0x18;//RXEN TXEN
ldi R24,24
out 0xa,R24
.dbline -2
.dbline 12
; }
L2:
.dbline 0 ; func end
ret
.dbend
.dbfunc e task_Delay _task_Delay fV
; j -> <dead>
; i -> R20
; k -> R22
.even
_task_Delay::
rcall push_gset2
.dbline -1
.dbline 15
;
; void task_Delay(void)
; {
.dbline 17
; unsigned char i,j,k;
; for(i=1;i<4;i++)
ldi R20,1
rjmp L7
L4:
.dbline 19
; // for(j=1;j;j++)
; {
.dbline 20
; OSTimeDly(30);
ldi R16,30
ldi R17,0
rcall _OSTimeDly
.dbline 21
; for(k=1;k;k++)
ldi R22,1
rjmp L11
L8:
.dbline 22
L9:
.dbline 21
inc R22
L11:
.dbline 21
tst R22
brne L8
.dbline 23
L5:
.dbline 17
inc R20
L7:
.dbline 17
cpi R20,4
brlo L4
.dbline -2
.dbline 24
; ;
; }
; }
L3:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l j 1 c
.dbsym r i 20 c
.dbsym r k 22 c
.dbend
.dbfunc e Delay _Delay fV
; i -> R16
; j -> R18
; k -> R20
.even
_Delay::
rcall push_gset1
.dbline -1
.dbline 28
;
; #if PROGRAM_START_FLASH_EN
; void Delay(void)
; {
.dbline 30
; unsigned char i,j,k;
; for(i=1;i<10;i++)
ldi R16,1
rjmp L16
L13:
.dbline 31
; for(j=1;j;j++)
ldi R18,1
rjmp L20
L17:
.dbline 32
; {
.dbline 33
; for(k=1;k;k++)
ldi R20,1
rjmp L24
L21:
.dbline 34
L22:
.dbline 33
inc R20
L24:
.dbline 33
tst R20
brne L21
.dbline 35
L18:
.dbline 31
inc R18
L20:
.dbline 31
tst R18
brne L17
L14:
.dbline 30
inc R16
L16:
.dbline 30
cpi R16,10
brlo L13
.dbline -2
.dbline 36
; ;
; }
; }
L12:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 16 c
.dbsym r j 18 c
.dbsym r k 20 c
.dbend
.dbfunc e ProgramStart_Flash _ProgramStart_Flash fV
; v -> R20
.even
_ProgramStart_Flash::
rcall push_gset1
mov R20,R16
.dbline -1
.dbline 39
;
; void ProgramStart_Flash(INT8U v)
; {
.dbline 40
; DDRB=0xff;
ldi R24,255
out 0x17,R24
.dbline 41
; PORTB=v;
out 0x18,R20
.dbline 42
; DDRD=0xff;
out 0x11,R24
.dbline 43
; PORTD=v;
out 0x12,R20
.dbline 47
; // DDRA=0xff; PORTA=v;
; // DDRC=0xff;
; // PORTC=v;
; Delay();
rcall _Delay
.dbline -2
.dbline 48
; }
L25:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r v 20 c
.dbend
.dbfunc e ProgramStart _ProgramStart fV
.even
_ProgramStart::
.dbline -1
.dbline 51
;
; void ProgramStart(void)
; {
.dbline 52
; DDRA=0xff; PORTA=0xff;
ldi R24,255
out 0x1a,R24
.dbline 52
out 0x1b,R24
.dbline 53
; DDRC=0xff; PORTC=0xff;
out 0x14,R24
.dbline 53
out 0x15,R24
.dbline 54
; ProgramStart_Flash(0);
clr R16
rcall _ProgramStart_Flash
.dbline 55
; ProgramStart_Flash(0xff);
ldi R16,255
rcall _ProgramStart_Flash
.dbline 56
; ProgramStart_Flash(0);
clr R16
rcall _ProgramStart_Flash
.dbline 57
; ProgramStart_Flash(0xff);
ldi R16,255
rcall _ProgramStart_Flash
.dbline 58
; ProgramStart_Flash(0);
clr R16
rcall _ProgramStart_Flash
.dbline 59
; ProgramStart_Flash(0xff);
ldi R16,255
.dbline -2
.dbline 60
; }
L26:
.dbline 0 ; func end
rjmp _ProgramStart_Flash
.dbend
.dbfunc e OSError _OSError fV
; i -> R20
; err -> R16
.even
_OSError::
rcall push_gset1
.dbline -1
.dbline 65
; #endif//PROGRAM_START_FLASH_EN
;
; #if OS_STRICT
; void OSError(INT8U err)
; {
.dbline 66
; INT8U i=err;
mov R20,R16
rjmp L29
L28:
.dbline 68
mov R20,R16
L29:
.dbline 67
rjmp L28
X0:
.dbline -2
.dbline 69
; while(1)
; i=err;
; }
L27:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r err 16 c
.dbend
.dbfunc e my_putc _my_putc fV
; c -> R20
.even
_my_putc::
rcall push_gset1
mov R20,R16
.dbline -1
.dbline 74
; #endif
;
; #if OS_SEM_EN
; void my_putc(INT8U c)
; {
.dbline 78
; #if LCD_EN
; lcd_putc(c);
; #endif
; putchar(c);
mov R16,R20
rcall _putchar
.dbline -2
.dbline 79
; }
L31:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r c 20 c
.dbend
.dbfunc e task1 _task1 fV
; err -> y+2
; i -> R20
; pdata -> R22,R23
.even
_task1::
rcall push_gset2
mov R22,R16
mov R23,R17
sbiw R28,3
.dbline -1
.dbline 83
; #endif
; /* PORTC , send 'T1'*/
; void task1(void *pdata)
; {
.dbline 84
; INT8U i=0,err;
clr R20
rjmp L34
L33:
.dbline 86
; while(1)
; {
.dbline 87
; i++;
inc R20
.dbline 89
; #if DEBUG_IN_AVR_STUDIO==0
; task_Delay();
rcall _task_Delay
.dbline 91
; #endif
; OSTimeDly(11);
ldi R16,11
ldi R17,0
rcall _OSTimeDly
.dbline 93
; #if OS_SEM_EN
; err=OS_NO_ERR;
clr R2
std y+2,R2
.dbline 94
; if(i>8)
ldi R24,8
cp R24,R20
brsh L36
.dbline 95
; {
.dbline 96
; i=0;
clr R20
.dbline 106
; #if LCD_EN
; //clear lcd
; OSSemPend(&uart_sem,32700,&err);
; if(OS_NO_ERR==err)
; {
; lcd_clear();
; OSSemPost(&uart_sem);
; }
; #endif//LCD_EN
; }//end of clear lcd
L36:
.dbline 108
;
; if((i>=0)&&(i<=9))
cpi R20,0
brlo L38
ldi R24,9
cp R24,R20
brlo L38
.dbline 109
; {
.dbline 110
; OSSemPend(&uart_sem,32700,&err);
mov R24,R28
mov R25,R29
adiw R24,2
std y+0,R24
std y+1,R25
ldi R18,32700
ldi R19,127
ldi R16,<_uart_sem
ldi R17,>_uart_sem
rcall _OSSemPend
.dbline 111
; if(OS_NO_ERR==err)
ldd R2,y+2
tst R2
brne L40
.dbline 112
; {
.dbline 114
; #if DEBUG_IN_AVR_STUDIO==0
; my_putc('T');my_putc((INT8U)(i+'0'));
ldi R16,84
rcall _my_putc
.dbline 114
mov R16,R20
clr R17
subi R16,208 ; offset = 48
sbci R17,255
rcall _my_putc
.dbline 116
; //read answer
; getchar();//should be 'R'
rcall _getchar
.dbline 117
; DDRC=0xff;
ldi R24,255
out 0x14,R24
.dbline 118
; PORTC=getchar()-'0';//should between '0' and '9'
rcall _getchar
mov R24,R16
mov R25,R17
sbiw R24,48
out 0x15,R24
.dbline 120
; #endif
; OSSemPost(&uart_sem);
ldi R16,<_uart_sem
ldi R17,>_uart_sem
rcall _OSSemPost
.dbline 121
; }
L40:
.dbline 122
; }//end i>=0 and i<=9
L38:
.dbline 124
L34:
.dbline 85
rjmp L33
X1:
.dbline -2
.dbline 125
; #endif
; }//while(1)
; }
L32:
adiw R28,3
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l err 2 c
.dbsym r i 20 c
.dbsym r pdata 22 pV
.dbend
.dbfunc e task2 _task2 fV
; k -> <dead>
; j -> <dead>
; err -> y+2
; i -> R20
; pdata -> R22,R23
.even
_task2::
rcall push_gset2
mov R22,R16
mov R23,R17
sbiw R28,3
.dbline -1
.dbline 129
;
; /* PORTA , send 'Q1'*/
; void task2(void *pdata)
; {
.dbline 130
; INT8U i=0,j,k,err;
clr R20
rjmp L44
L43:
.dbline 132
; while(1)
; {
.dbline 133
; i++;
inc R20
.dbline 135
; #if DEBUG_IN_AVR_STUDIO==0
; task_Delay();
rcall _task_Delay
.dbline 137
; #endif
; OSTimeDly(3);
ldi R16,3
ldi R17,0
rcall _OSTimeDly
.dbline 139
; #if OS_SEM_EN
; err=OS_NO_ERR;
clr R2
std y+2,R2
.dbline 140
; if(i>9)
ldi R24,9
cp R24,R20
brsh L46
.dbline 141
; {//clear lcd and reset i
.dbline 142
; i=1;
ldi R20,1
.dbline 151
; #if LCD_EN
; OSSemPend(&uart_sem,32700,&err);
; if(OS_NO_ERR==err)
; {
; lcd_clear();
; OSSemPost(&uart_sem);
; }
; #endif//LCD_EN
; }//end i>9
L46:
.dbline 152
; if((i>=0)&&(i<=9))
cpi R20,0
brlo L48
ldi R24,9
cp R24,R20
brlo L48
.dbline 153
; {
.dbline 154
; OSSemPend(&uart_sem,32700,&err);
mov R24,R28
mov R25,R29
adiw R24,2
std y+0,R24
std y+1,R25
ldi R18,32700
ldi R19,127
ldi R16,<_uart_sem
ldi R17,>_uart_sem
rcall _OSSemPend
.dbline 155
; if(OS_NO_ERR==err)
ldd R2,y+2
tst R2
brne L50
.dbline 156
; {
.dbline 158
; #if DEBUG_IN_AVR_STUDIO==0
; my_putc('Q'); my_putc((INT8U)(i+'0'));
ldi R16,81
rcall _my_putc
.dbline 158
mov R16,R20
clr R17
subi R16,208 ; offset = 48
sbci R17,255
rcall _my_putc
.dbline 160
; //read answer
; getchar();//should be 'A'
rcall _getchar
.dbline 161
; DDRA=0xff;
ldi R24,255
out 0x1a,R24
.dbline 162
; PORTA=getchar()-'0';//should be '0' to '9'
rcall _getchar
mov R24,R16
mov R25,R17
sbiw R24,48
out 0x1b,R24
.dbline 164
; #endif
; OSSemPost(&uart_sem);
ldi R16,<_uart_sem
ldi R17,>_uart_sem
rcall _OSSemPost
.dbline 165
; }//end of send
L50:
.dbline 166
; }//end i>=0 and i<=9
L48:
.dbline 168
L44:
.dbline 131
rjmp L43
X2:
.dbline -2
.dbline 169
; #endif
; }//end while(1)
; }
L42:
adiw R28,3
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l k 3 c
.dbsym l j 3 c
.dbsym l err 2 c
.dbsym r i 20 c
.dbsym r pdata 22 pV
.dbend
.dbfunc e task3 _task3 fV
; pdata -> R16,R17
.even
_task3::
.dbline -1
.dbline 172
;
; void task3(void *pdata)
; {
rjmp L54
L53:
.dbline 174
.dbline 175
nop
.dbline 176
L54:
.dbline 173
rjmp L53
X3:
.dbline -2
.dbline 177
; while(1)
; {
; asm("nop");
; }
; }
L52:
.dbline 0 ; func end
ret
.dbsym r pdata 16 pV
.dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -