📄 app.s
字号:
; OS_STK Task1Stk[OS_TASK_STK_SIZE];
; OS_STK Task2Stk[OS_TASK_STK_SIZE];
; OS_STK Task3Stk[OS_TASK_STK_SIZE];
; OS_EVENT *RandomSem;
;
; /*
; **************************************************************************************************************
; * FUNCTION PROTOTYPES
; **************************************************************************************************************
; */
; static void TaskStart(void *pdata);
; static void AppTask1(void *p_arg);
; static void AppTask2(void *p_arg);
; static void AppTask3(void *data);
; static void TaskStartDispInit(void);
; static void TaskStartDisp(void);
; INT8U *ToString(INT16U n) ;
; INT8U temp[5];
; /*
; *********************************************************************************************************
; * SETUP THE TICK RATE
; *********************************************************************************************************
; */
; void OSTickISR_Handler (void)
; {
; TCNT2 = 256 - (CPU_CLK_FREQ / OS_TICKS_PER_SEC / 1024);
; OSTimeTick();
; }
; /*
; *********************************************************************************************************
; * SETUP THE TICK RATE
; *********************************************************************************************************
; */
; void OSTickISR_Init (void)
; {
; CLI();
; TIMSK &= ~(BIT(TOIE2)/* | BIT(OCIE2) */); //disable TC2 interrupts
; TCCR2 = 0x00; // interner Takt, /1024
; TCNT2 = 0; // Counter ruecksetzen, 20ms @ 8MHz
; TCCR2 = 0x07; // 1024
; TIMSK |= BIT(TOIE2);
; }
; /*
; *********************************************************************************************************
; * SETUP THE I/Os
; *********************************************************************************************************
; */
; void main (void)
; {
; OSTickISR_Init(); /* Initialize the ticker */
; OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel" */
; RandomSem = OSSemCreate(1);
; OSTaskCreate(TaskStart, (void *)0, (OS_STK *)&TaskStartStk[OS_TASK_STK_SIZE - 1], 0);
; OSStart(); /* Start multitasking (i.e. give control to uC/OS-II) */
; }
; static void TaskStart(void *pdata)
.dbline 90
; {
; #if OS_CRITICAL_METHOD == 3
clr R20
xjmp L19
L16:
.dbline 91
; OS_CPU_SR cpu_sr;
.dbline 92
; #endif
cbi 0x15,7
.dbline 93
; SEI();
sbrs R16,7
rjmp L20
.dbline 94
; pdata = pdata;
sbi 0x15,6
xjmp L21
L20:
.dbline 96
; OS_ENTER_CRITICAL();
; Lcd_Init();
cbi 0x15,6
L21:
.dbline 97
lsl R16
.dbline 98
sbi 0x15,7
.dbline 99
L17:
.dbline 90
inc R20
L19:
.dbline 90
cpi R20,8
brlo L16
.dbline -2
L15:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r data 16 c
.dbend
.dbfunc e Wr_Com _Wr_Com fV
; data -> R20
.even
_Wr_Com::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 108
; TaskStartDispInit();
; OS_EXIT_CRITICAL();
; OSStatInit();
; OSTaskCreate(AppTask1, (void *)0, (OS_STK *)&Task1Stk[OS_TASK_STK_SIZE - 1], 1);
; OSTaskCreate(AppTask2, (void *)0, (OS_STK *)&Task2Stk[OS_TASK_STK_SIZE - 1], 2);
; OSTaskCreate(AppTask3, (void *)0, (OS_STK *)&Task3Stk[OS_TASK_STK_SIZE - 1], 3);
; while(1)
; {
; TaskStartDisp();
; OSCtxSwCtr = 0;
; OSTimeDly(50);
; }
.dbline 109
; }
sbi 0x12,6
.dbline 110
; static void TaskStartDispInit(void)
ldi R16,248
xcall _SendData
.dbline 111
; {
mov R16,R20
andi R16,240
xcall _SendData
.dbline 112
; INT8U *line;
mov R16,R20
andi R16,#0x0F
swap R16
xcall _SendData
.dbline 113
; line = "uCOSii EXEMPLE";
cbi 0x12,6
.dbline -2
L22:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r data 20 c
.dbend
.dbfunc e Wr_Date _Wr_Date fV
; data -> R20
.even
_Wr_Date::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 122
; LCD_write_string(0,0,line);
; line = "switch/s:";
; LCD_write_string(0,3,line);
; line = "CPU Usage";
; LCD_write_string(0,2,line);
; }
; static void TaskStartDisp(void)
; {
; INT8U i;
.dbline 123
; INT8U a=OSCPUUsage;
sbi 0x12,6
.dbline 124
; temp[4]=0;
ldi R16,250
xcall _SendData
.dbline 125
; temp[3]=0x25;
mov R16,R20
andi R16,240
xcall _SendData
.dbline 126
; for(i=3;i>0;--i)
mov R16,R20
andi R16,#0x0F
swap R16
xcall _SendData
.dbline 127
; {
cbi 0x12,6
.dbline -2
L23:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r data 20 c
.dbend
.dbfunc e Clear_All _Clear_All fV
.even
_Clear_All::
.dbline -1
.dbline 136
; if(a>0)
; {
; temp[i-1]=a%10+0x30;
; a/=10;
; }
; else temp[i-1]=0x20;
; }
; LCD_write_string(5,2,temp);
; a=OSCtxSwCtr;
.dbline 137
; for(i=4;i>0;--i)
ldi R16,1
xcall _Wr_Com
.dbline 138
; {
ldi R16,40
ldi R17,0
xcall _delay_nms
.dbline -2
L24:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Lcd_Init _Lcd_Init fV
.even
_Lcd_Init::
.dbline -1
.dbline 147
; if(a>0)
; {
; temp[i-1]=a%10+0x30;
; a/=10;
; }
; else temp[i-1]=0x20;
; }
; LCD_write_string(5,3,temp);
; }
.dbline 148
;
ldi R24,192
out 0x14,R24
.dbline 149
;
ldi R24,64
out 0x11,R24
.dbline 150
; static void AppTask1(void *p_arg)
ldi R16,48
xcall _Wr_Com
.dbline 151
; {
ldi R16,80
xcall _delay
.dbline 152
; INT8U err;
ldi R16,12
xcall _Wr_Com
.dbline 153
; p_arg = p_arg;
ldi R16,80
xcall _delay
.dbline 154
; while (TRUE) {
ldi R16,1
xcall _Wr_Com
.dbline 155
; OSSemPend(RandomSem,0,&err);
ldi R16,40
ldi R17,0
xcall _delay_nms
.dbline 156
; PORTB^=0x01;
ldi R16,96
xcall _Wr_Com
.dbline 157
; OSSemPost(RandomSem);
ldi R16,80
xcall _delay
.dbline -2
L25:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_set_xy _LCD_set_xy fV
; address -> R20
; y -> R20
; x -> R22
.even
_LCD_set_xy::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 166
; OSTimeDly(1);
; }
; }
; static void AppTask2(void *p_arg)
; {
; INT8U err;
; p_arg = p_arg;
; while (TRUE) {
; OSSemPend(RandomSem,0,&err);
.dbline 168
; PORTB^=0x02;
; OSSemPost(RandomSem);
clr R21
cpi R20,0
cpc R20,R21
breq L30
X0:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L31
cpi R20,2
ldi R30,0
cpc R21,R30
breq L32
cpi R20,3
ldi R30,0
cpc R21,R30
breq L33
xjmp L27
X1:
.dbline 169
; OSTimeDly(4);
L30:
.dbline 171
; }
; }
mov R20,R22
subi R20,128 ; addi 128
.dbline 172
; static void AppTask3(void *data)
xjmp L28
L31:
.dbline 174
; {
; #if OS_CRITICAL_METHOD == 3
mov R20,R22
subi R20,112 ; addi 144
.dbline 175
; OS_CPU_SR cpu_sr;
xjmp L28
L32:
.dbline 177
; #endif
; INT8U *line="Task_Three";
mov R20,R22
subi R20,120 ; addi 136
.dbline 178
; data = data;
xjmp L28
L33:
.dbline 180
; LCD_write_string(0,1,line);
; for(;;)
mov R20,R22
subi R20,104 ; addi 152
.dbline 181
; {
xjmp L28
L27:
.dbline 182
; line="\\";
mov R20,R22
subi R20,128 ; addi 128
.dbline 183
; OS_ENTER_CRITICAL();
L28:
.dbline 184
; LCD_write_string(6,1,line);
mov R16,R20
xcall _Wr_Com
.dbline -2
L26:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r address 20 c
.dbsym r y 20 c
.dbsym r x 22 c
.dbend
.dbfunc e LCD_write_string _LCD_write_string fV
; s -> R20,R21
; Y -> R10
; X -> R22
.even
_LCD_write_string::
xcall push_gset3
mov R10,R18
mov R22,R16
ldd R20,y+6
ldd R21,y+7
.dbline -1
.dbline 194
; OS_EXIT_CRITICAL();
; OSTimeDly (6);
; line="|";
; OS_ENTER_CRITICAL();
; LCD_write_string(6,1,line);
; OS_EXIT_CRITICAL();
; OSTimeDly (6);
; line="/";
; OS_ENTER_CRITICAL();
; LCD_write_string(6,1,line);
.dbline 195
; OS_EXIT_CRITICAL();
mov R18,R10
mov R16,R22
xcall _LCD_set_xy
xjmp L36
L35:
.dbline 197
.dbline 198
movw R30,R20
ldd R16,z+0
xcall _Wr_Date
.dbline 199
subi R20,255 ; offset = 1
sbci R21,255
.dbline 200
L36:
.dbline 196
; OSTimeDly (6);
movw R30,R20
ldd R2,z+0
tst R2
brne L35
.dbline -2
L34:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r s 20 pc
.dbsym r Y 10 c
.dbsym r X 22 c
.dbend
.dbfunc e ShowBmp _ShowBmp fV
; a -> R20,R21
; y -> R22,R23
; i -> R12,R13
; x -> R10,R11
.even
_ShowBmp::
xcall push_gset4
.dbline -1
.dbline 209
; }
; }
;
;
;
;
;
;
;
;
;
;
;
.dbline 210
;
clr R10
clr R11
.dbline 210
clr R22
clr R23
.dbline 211
;
ldi R16,52
xcall _Wr_Com
.dbline 212
;
clr R20
clr R21
xjmp L42
L39:
.dbline 213
;
.dbline 214
;
mov R16,R20
subi R16,128 ; offset = 128
sbci R17,255
xcall _Wr_Com
.dbline 215
;
ldi R16,128
xcall _Wr_Com
.dbline 216
;
clr R12
clr R13
xjmp L46
L43:
.dbline 217
.dbline 218
movw R30,R22
add R30,R10
adc R31,R11
ldi R24,<_Bitmap
ldi R25,>_Bitmap
add R30,R24
adc R31,R25
lpm R16,Z
xcall _Wr_Date
.dbline 219
movw R30,R22
add R30,R10
adc R31,R11
adiw R30,1
ldi R24,<_Bitmap
ldi R25,>_Bitmap
add R30,R24
adc R31,R25
lpm R16,Z
xcall _Wr_Date
.dbline 220
movw R24,R10
adiw R24,2
movw R10,R24
.dbline 221
L44:
.dbline 216
movw R24,R12
adiw R24,1
movw R12,R24
L46:
.dbline 216
movw R24,R12
cpi R24,8
ldi R30,0
cpc R25,R30
brlo L43
.dbline 222
;
;
;
;
;
;
clr R10
clr R11
.dbline 223
;
clr R12
clr R13
xjmp L50
L47:
.dbline 224
.dbline 225
movw R30,R22
subi R30,0 ; offset = 512
sbci R31,254
add R30,R10
adc R31,R11
ldi R24,<_Bitmap
ldi R25,>_Bitmap
add R30,R24
adc R31,R25
lpm R16,Z
xcall _Wr_Date
.dbline 226
movw R30,R22
subi R30,0 ; offset = 512
sbci R31,254
add R30,R10
adc R31,R11
adiw R30,1
ldi R24,<_Bitmap
ldi R25,>_Bitmap
add R30,R24
adc R31,R25
lpm R16,Z
xcall _Wr_Date
.dbline 227
movw R24,R10
adiw R24,2
movw R10,R24
.dbline 228
L48:
.dbline 223
movw R24,R12
adiw R24,1
movw R12,R24
L50:
.dbline 223
movw R24,R12
cpi R24,8
ldi R30,0
cpc R25,R30
brlo L47
.dbline 229
clr R10
clr R11
.dbline 230
subi R22,240 ; offset = 16
sbci R23,255
.dbline 231
L40:
.dbline 212
subi R20,255 ; offset = 1
sbci R21,255
L42:
.dbline 212
cpi R20,32
ldi R30,0
cpc R21,R30
brsh X2
xjmp L39
X2:
.dbline 232
;
;
;
;
;
;
;
;
;
ldi R16,54
xcall _Wr_Com
.dbline 233
;
ldi R16,80
xcall _delay
.dbline 234
;
ldi R16,48
xcall _Wr_Com
.dbline 235
;
ldi R16,80
xcall _delay
.dbline -2
L38:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r a 20 i
.dbsym r y 22 i
.dbsym r i 12 i
.dbsym r x 10 i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -