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

📄 app.s

📁 uCOS-II工程文件,使用ICC编译。
💻 S
📖 第 1 页 / 共 3 页
字号:
; 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 + -