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

📄 mega16pro.lst

📁 mega16 ucos操作系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
Interrupt Vectors
    00000 940C 02F7 JMP	__start|__text_start

Program Code (text area)
__start|__text_start:
    002F7 EFCF      LDI	R28,0xFF
    002F8 E2D1      LDI	R29,0x21
    002F9 BFCD      OUT	0x3D,R28
    002FA BFDE      OUT	0x3E,R29
    002FB 51CE      SUBI	R28,0x1E
    002FC 40D0      SBCI	R29,0
    002FD EA0A      LDI	R16,0xAA
    002FE 8308      ST	Y,R16
    002FF 2400      CLR	R0
    00300 EFEC      LDI	R30,0xFC
    00301 E0F6      LDI	R31,6
    00302 E018      LDI	R17,0x8
    00303 32E8      CPI	R30,0x28
    00304 07F1      CPC	R31,R17
    00305 F011      BEQ	0x0308
    00306 9201      ST	Z+,R0
    00307 CFFB      RJMP	0x0303
    00308 8300      ST	Z,R16
    00309 EFE2      LDI	R30,0xF2
    0030A E0F0      LDI	R31,0
    0030B E0A0      LDI	R26,0
    0030C E0B2      LDI	R27,2
    0030D E015      LDI	R17,5
    0030E E000      LDI	R16,0
    0030F BF0B      OUT	0x3B,R16
    00310 3EEE      CPI	R30,0xEE
    00311 07F1      CPC	R31,R17
    00312 F021      BEQ	0x0317
    00313 95C8      LPM
    00314 9631      ADIW	R30,1
    00315 920D      ST	X+,R0
    00316 CFF9      RJMP	0x0310
    00317 940E 037E CALL	_main
_exit:
    00319 CFFF      RJMP	_exit
FILE: C:\DOCUME~1\Administrator\桌面\MEGA16\source\bms\main.c
(0001) #include "..\source\CPU_source\includes.h"
(0002) 
(0003) void StartTask(void *pdata);
(0004) OS_STK StartTaskStack[OS_TASK_START_STK_SIZE]={0};
(0005) /*
(0006) ******************************************************************************
(0007) *			Timer0 overflow 用于系统时钟节拍
(0008) *****************************************************************************
(0009) */ 
(0010) void OSTick_Init (void){	
(0011) 	OS_ENTER_CRITICAL();
_OSTick_Init:
    0031A 930A      ST	-Y,R16
    0031B B70F      IN	R16,0x3F
    0031C 94F8      BCLR	7
    0031D 930F      PUSH	R16
    0031E 9109      LD	R16,Y+
(0012) 	//WDTCR=(1<<WDTOE)|(1<<WDE);
(0013) 	//WDTCR=(1<<WDE);       //17ms看门狗 
(0014) 	
(0015) 	TIMSK &= ~(BIT(TOIE0) /* | BIT(OCIE0) */);	    /*disable TC0 interrupts                           */
    0031F B789      IN	R24,0x39
    00320 7F8E      ANDI	R24,0xFE
    00321 BF89      OUT	0x39,R24
(0016) 	TCCR0 = 0x02;		                            /* /8                                           */
    00322 E082      LDI	R24,2
    00323 BF83      OUT	0x33,R24
(0017) 	TCNT0 = 0x05; 	                                /* Counter overflow initial , 0.5ms @ 4MHz         */	
    00324 E085      LDI	R24,5
    00325 BF82      OUT	0x32,R24
(0018) 	TIMSK |= BIT(TOIE0);	                        /* enable OVF-interrupt                            */ 
    00326 B789      IN	R24,0x39
    00327 6081      ORI	R24,1
    00328 BF89      OUT	0x39,R24
(0019)     OS_EXIT_CRITICAL();	 // enable global interrupt     
    00329 930A      ST	-Y,R16
    0032A 910F      POP	R16
    0032B BF0F      OUT	0x3F,R16
    0032C 9109      LD	R16,Y+
    0032D 9508      RET
_UartInit:
  temp                 --> R10
  divisor              --> R10
  baud_rate            --> Y,+6
    0032E 940E 0E2A CALL	push_arg4
    00330 940E 0F05 CALL	push_xgsetF00C
(0020) }
(0021) //串口的初始化
(0022) void UartInit(INT32U baud_rate)
(0023) {
(0024)     INT16U  divisor;
(0025)     INT16U  temp;                 /* -------- INITIALIZE THE SERIAL PORT ---------- */
(0026)     temp    = (CPU_CLK_FREQ * 2) / (16 * baud_rate);
    00332 802E      LDD	R2,Y+6
    00333 803F      LDD	R3,Y+7
    00334 8448      LDD	R4,Y+8
    00335 8459      LDD	R5,Y+9
    00336 E140      LDI	R20,0x10
    00337 E050      LDI	R21,0
    00338 E060      LDI	R22,0
    00339 E070      LDI	R23,0
    0033A 925A      ST	-Y,R5
    0033B 924A      ST	-Y,R4
    0033C 923A      ST	-Y,R3
    0033D 922A      ST	-Y,R2
    0033E 018A      MOVW	R16,R20
    0033F 019B      MOVW	R18,R22
    00340 940E 0E99 CALL	empy32u|empy32s
    00342 E040      LDI	R20,0
    00343 E152      LDI	R21,0x12
    00344 E76A      LDI	R22,0x7A
    00345 E070      LDI	R23,0
    00346 933A      ST	-Y,R19
    00347 932A      ST	-Y,R18
    00348 931A      ST	-Y,R17
    00349 930A      ST	-Y,R16
    0034A 018A      MOVW	R16,R20
    0034B 019B      MOVW	R18,R22
    0034C 940E 0E2F CALL	div32u
    0034E 0158      MOVW	R10,R16
(0027)     divisor = (temp + 1) / 2 - 1; /* Compute baud rate divisor and round off        */
    0034F 01C5      MOVW	R24,R10
    00350 9601      ADIW	R24,1
    00351 9596      LSR	R25
    00352 9587      ROR	R24
    00353 9701      SBIW	R24,1
    00354 015C      MOVW	R10,R24
(0028) 	
(0029)     UCSRB = 0x00; 						//disable while setting baud rate
    00355 2422      CLR	R2
    00356 B82A      OUT	0x0A,R2
(0030)     UCSRA = 0x00;
    00357 B82B      OUT	0x0B,R2
(0031)     UCSRC = 0x06;
    00358 E086      LDI	R24,6
    00359 BD80      OUT	0x20,R24
(0032)     UBRRL = divisor & 0x00FF;		//set baud rate lo 19.2k
    0035A 01C5      MOVW	R24,R10
    0035B 7090      ANDI	R25,0
    0035C B989      OUT	0x09,R24
(0033)     UBRRH = divisor >> 8;; 						//set baud rate hi
    0035D 0115      MOVW	R2,R10
    0035E 2C23      MOV	R2,R3
    0035F 2433      CLR	R3
    00360 BC20      OUT	0x20,R2
(0034)     UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);  
    00361 E988      LDI	R24,0x98
    00362 B98A      OUT	0x0A,R24
    00363 940E 0F0C CALL	pop_xgsetF00C
    00365 9624      ADIW	R28,4
    00366 9508      RET
(0035) //    Uart0RingBuf.RxIndex=0;
(0036) 	
(0037) }
(0038)  
(0039) void System_Init(void)
(0040) {
(0041)     //端口的初始化
(0042)  	PORTA = 0x00; //output
_System_Init:
    00367 2422      CLR	R2
    00368 BA2B      OUT	0x1B,R2
(0043) 	DDRA  = 0xff;	
    00369 EF8F      LDI	R24,0xFF
    0036A BB8A      OUT	0x1A,R24
(0044)    
(0045) 	PORTB = 0xFF; //output
    0036B BB88      OUT	0x18,R24
(0046) 	DDRB  = 0xFF;
    0036C BB87      OUT	0x17,R24
(0047)    
(0048) 	PORTC = 0x00; // output only
    0036D BA25      OUT	0x15,R2
(0049) 	DDRC  = 0xFF;
    0036E BB84      OUT	0x14,R24
(0050) 	
(0051) 	PORTD = 0X00; //串口
    0036F BA22      OUT	0x12,R2
(0052) 	DDRD = 0X02; 
    00370 E082      LDI	R24,2
    00371 BB81      OUT	0x11,R24
(0053) 		 
(0054) 	//串口的初始化
(0055) 	UartInit(9600);
    00372 E800      LDI	R16,0x80
    00373 E215      LDI	R17,0x25
    00374 E020      LDI	R18,0
    00375 E030      LDI	R19,0
    00376 DFB7      RCALL	_UartInit
(0056) 	//ad采集的初始化
(0057) 		 
(0058) 	/*蜂鸣器*/
(0059)     PORTA&=~(1<<PA6);
    00377 98DE      CBI	0x1B,6
(0060) 	delay_nms(100);
    00378 E604      LDI	R16,0x64
    00379 E010      LDI	R17,0
    0037A 940E 0D2B CALL	_delay_nms
(0061)     PORTA|=(1<<PA6);      //PB2控制蜂鸣器 
    0037C 9ADE      SBI	0x1B,6
    0037D 9508      RET
_main:
    0037E 9723      SBIW	R28,3
(0062) 	
(0063) }
(0064) // Start
(0065) void main(void)
(0066) {
(0067)     System_Init();
    0037F DFE7      RCALL	_System_Init
(0068) 	
(0069)     OSTaskStkSize     = OS_TASK_IDLE_STK_SIZE;       /* Setup the default stack size                        */
    00380 E684      LDI	R24,0x64
    00381 E090      LDI	R25,0
    00382 9390 06FF STS	OSTaskStkSize+1,R25
    00384 9380 06FE STS	OSTaskStkSize,R24
(0070)     OSTaskStkSizeHard = OS_TASK_IDLE_STK_SIZE_HARD;  /* Setup the default hardware stack size               */
    00386 E184      LDI	R24,0x14
    00387 9390 06FD STS	OSTaskStkSizeHard+1,R25
    00389 9380 06FC STS	OSTaskStkSizeHard,R24
(0071)     OSInit();		// OS init 
    0038B 940E 05C1 CALL	_OSInit
(0072)       	 
(0073)     OSTaskStkSize     = OS_TASK_START_STK_SIZE;      /* Setup the total stack size                          */
    0038D EA8A      LDI	R24,0xAA
    0038E E090      LDI	R25,0
    0038F 9390 06FF STS	OSTaskStkSize+1,R25
    00391 9380 06FE STS	OSTaskStkSize,R24
(0074)     OSTaskStkSizeHard = OS_TASK_START_STK_SIZE_HARD; /* Setup the hardware stack size                       */
    00393 E280      LDI	R24,0x20
    00394 9390 06FD STS	OSTaskStkSizeHard+1,R25
    00396 9380 06FC STS	OSTaskStkSizeHard,R24
(0075)     OSTaskCreate( StartTask,
    00398 E081      LDI	R24,1
    00399 838A      STD	Y+2,R24
    0039A E080      LDI	R24,0
    0039B E092      LDI	R25,2
    0039C 91E0 06FE LDS	R30,OSTaskStkSize
    0039E 91F0 06FF LDS	R31,OSTaskStkSize+1
    003A0 9731      SBIW	R30,1
    003A1 0FE8      ADD	R30,R24
    003A2 1FF9      ADC	R31,R25
    003A3 83F9      STD	Y+1,R31
    003A4 83E8      ST	Y,R30
    003A5 2722      CLR	R18
    003A6 2733      CLR	R19
    003A7 EE04      LDI	R16,0xE4
    003A8 E010      LDI	R17,0
    003A9 940E 0A9E CALL	_OSTaskCreate
(0076)                              (void *)0,
(0077)                              (OS_STK *)&StartTaskStack[OSTaskStkSize - 1],
(0078)                              OS_TASK_START_PRIO);   
(0079) 	  
(0080)     OSStart(); 	
    003AB 940E 0625 CALL	_OSStart
    003AD 9623      ADIW	R28,3
    003AE 9508      RET
FILE: C:\DOCUME~1\Administrator\桌面\MEGA16\source\CPU_source\os_cpu_c.c
(0001) /*
(0002) ********************************************************************************
(0003) *                               uC/OS-II
(0004) *                          The Real-Time Kernel
(0005) * 
(0006) *                         ATmega103 Specific code
(0007) *
(0008) * File:			OS_CPU_C.C
(0009) * By:			Ole Saether
(0010) * Modified by:	Joerg Meyer
(0011) * Revision:		0
(0012) *
(0013) *
(0014) *
(0015) ********************************************************************************
(0016) */
(0017) 
(0018) #define  OS_CPU_GLOBALS
(0019) #include "..\source\CPU_source\includes.h"
(0020) 
(0021) 
(0022) /*
(0023) *********************************************************************************************************
(0024) *                                        LOCAL GLOBAL VARIABLES
(0025) *********************************************************************************************************
(0026) */
(0027) 
(0028) #if OS_VERSION >= 281 && OS_TMR_EN > 0
(0029) static  INT16U  OSTmrCtr;
(0030) #endif
(0031) 
(0032) /*
(0033) *********************************************************************************************************
(0034) *                                       OS INITIALIZATION HOOK
(0035) *                                            (BEGINNING)
(0036) *
(0037) * Description: This function is called by OSInit() at the beginning of OSInit().
(0038) *
(0039) * Arguments  : none
(0040) *
(0041) * Note(s)    : 1) Interrupts should be disabled during this call.
(0042) *********************************************************************************************************
(0043) */
(0044) #if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
(0045) void  OSInitHookBegin (void)
(0046) {
_OSInitHookBegin:
    003AF 9508      RET
(0047) #if OS_VERSION >= 281 && OS_TMR_EN > 0

⌨️ 快捷键说明

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