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

📄 ucos.lst

📁 ucos移植到m64
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    00D7 EFCF      LDI	R28,0xFF
    00D8 E1D0      LDI	R29,0x10
    00D9 BFCD      OUT	0x3D,R28
    00DA BFDE      OUT	0x3E,R29
    00DB 52C0      SUBI	R28,0x20
    00DC 40D0      SBCI	R29,0
    00DD EA0A      LDI	R16,0xAA
    00DE 8308      STD	Y+0,R16
    00DF 2400      CLR	R0
    00E0 E1E4      LDI	R30,0x14
    00E1 E0F1      LDI	R31,1
    00E2 E012      LDI	R17,2
    00E3 3EED      CPI	R30,0xED
    00E4 07F1      CPC	R31,R17
    00E5 F011      BEQ	0x00E8
    00E6 9201      ST	R0,Z+
    00E7 CFFB      RJMP	0x00E3
    00E8 8300      STD	Z+0,R16
    00E9 E9EA      LDI	R30,0x9A
    00EA E0F1      LDI	R31,1
    00EB E0A0      LDI	R26,0
    00EC E0B1      LDI	R27,1
    00ED E011      LDI	R17,1
FILE: F:\ucos\iccavr\test\test2.c
(0001) 
(0002) #define Test1_GLOBALS
(0003) #include "includes.h"
(0004) 
(0005) //******************************************************************************
(0006) // Constants
(0007) #define TaskStartPrio	10		// Task-Prioritaeten
(0008) //*****************************************************************************
(0009) // Variablen
(0010) INT8U    display[5];
(0011) INT8U    h,m,s,state;
(0012) OS_STK	Task1Stack[OS_TASK_DEF_STK_SIZE];		// startup task stack
(0013) OS_STK	Task2Stack[OS_TASK_DEF_STK_SIZE];
(0014) //ICC-AVR application builder : 2003-12-28 21:52:56
(0015) // Target : M8
(0016) // Crystal: 8.0000Mhz
(0017) 
(0018) #include <iom64v.h>
(0019) #include <macros.h>
(0020) //#include <stdio.h>
(0021) #include "uart.h"
(0022) 
(0023) //*****************************************************************************
(0024) // Prototypes
(0025) /*
(0026) #define BAUD 	9600
(0027) #define CRYSTAL	11059200
(0028) #define BAUD_SETTING	(unsigned int)((unsigned long)CRYSTAL/(16*(unsigned long)BAUD)-1)
(0029) #define BAUD_H	(unsigned char)(BAUD_SETTING>>8)
(0030) #define BAUD_L	(unsigned char)(BAUD_SETTING)
(0031) void uartInit(uint8 uartNum)
(0032) {
    00EE 3AEE      CPI	R30,0xAE
    00EF 07F1      CPC	R31,R17
(0033) 	if(1==uartNum)
(0034) 	{
    00F0 F021      BEQ	0x00F5
    00F1 95C8      LPM
    00F2 9631      ADIW	R30,1
(0035) 		 UCSR1B = 0x00; //disable while setting baud rate
    00F3 920D      ST	R0,X+
    00F4 CFF9      RJMP	0x00EE
(0036) 	 	 UCSR1A = 0x00;
    00F5 940E0127  CALL	_main
_exit:
    00F7 CFFF      RJMP	_exit
(0037) 	 	 UCSR1C = 0x06;
_t1Init:
    00F8 2422      CLR	R2
    00F9 BC2E      OUT	0x2E,R2
    00FA E789      LDI	R24,0x79
(0038) 	 	 UBRR1L = BAUD_L; //set baud rate lo
    00FB BD8D      OUT	0x2D,R24
    00FC E082      LDI	R24,2
(0039) 	 	 UBRR1H = BAUD_H; //set baud rate hi
    00FD BD8C      OUT	0x2C,R24
    00FE BC2B      OUT	0x2B,R2
    00FF BC2A      OUT	0x2A,R2
(0040) 	 	 UCSR1B = 0x18;
(0041) 	 	 ///共有3个中断源, 接受, 发送, 寄存器空, 对应此寄存器的高3位
    0100 BC29      OUT	0x29,R2
(0042) 	}	
(0043) 	else
(0044) 	{
    0101 BC28      OUT	0x28,R2
    0102 92200079  STS	0x79,R2
(0045) 		UCSR0B = 0x00; //disable while setting baud rate
    0104 92200078  STS	0x78,R2
    0106 BC27      OUT	0x27,R2
(0046) 	 	UCSR0A = 0x00;
(0047) 		UCSR0C = 0x06;	//set frame format, 8 bits, 2stop]
    0107 BC26      OUT	0x26,R2
    0108 BC2F      OUT	0x2F,R2
(0048) 		UBRR0H = BAUD_H;
    0109 BD8E      OUT	0x2E,R24
    010A 9508      RET
(0049) 		UBRR0L = BAUD_L;
_fuc:
    010B 940E0857  CALL	push_lset
(0050) 		UCSR0B = 0x18;	//enable receive and transmite
(0051) 		
    010D E789      LDI	R24,0x79
(0052) 	}	
(0053) }
(0054) void putChar(uint8 num, uint8 dat)
(0055) {
(0056) 	ENTER_CRITICAL();
(0057) 	if(1==num)
(0058) 	{
(0059) 		UDR1 = dat;
(0060) 		while(!(UCSR1A&BIT(TXC1)));	  //发送寄存器空
(0061) 		UCSR1A|=BIT(TXC1);
    010E BD8D      OUT	0x2D,R24
    010F 2422      CLR	R2
(0062) 	}
    0110 BC2C      OUT	0x2C,R2
    0111 940E0709  CALL	_OSTickISR
(0063) 	else
    0113 940E086E  CALL	pop_lset
(0064) 	{
    0115 9518      RETI
(0065) 		UDR0 = dat;
(0066) 		while(!(UCSR0A&BIT(TXC0)));
_init_devices:
    0116 94F8      BCLR	7
(0067) 		UCSR0A|=BIT(TXC0);
    0117 2422      CLR	R2
(0068) 	}
    0118 BE2C      OUT	0x3C,R2
    0119 9220006D  STS	0x6D,R2
(0069) 	EXIT_CRITICAL();
    011B DFDC      RCALL	_t1Init
(0070) }
    011C 2422      CLR	R2
(0071) */	
    011D BE25      OUT	0x35,R2
(0072) //*****************************************************************************
    011E 9220006A  STS	0x6A,R2
(0073) //			TickISR
    0120 BE2A      OUT	0x3A,R2
(0074) //*****************************************************************************
(0075) // WGM: 0) Normal, TOP=0xFFFF
(0076) // desired value: 1Hz
(0077) // actual value: Out of range
(0078) void t1Init(void)
(0079) {
(0080) 	TCCR1B = 0x00; //stop
(0081) 	TCNT1H = 0x79; //setup
(0082) 	TCNT1L = 0x02;
(0083) 	OCR1AH = 0x00;
(0084) 	OCR1AL = 0x00;
(0085) 	OCR1BH = 0x00;
    0121 BE29      OUT	0x39,R2
(0086) 	OCR1BL = 0x00;
    0122 E084      LDI	R24,4
    0123 BF87      OUT	0x37,R24
(0087) 	OCR1CH = 0x00;
    0124 9220007D  STS	0x7D,R2
(0088) 	OCR1CL = 0x00;
    0126 9508      RET
(0089) 	ICR1H  = 0x00;
(0090) 	ICR1L  = 0x00;
_main:
    0127 9723      SBIW	R28,3
    0128 E180      LDI	R24,0x10
(0091) 	TCCR1A = 0x00;
    0129 BB85      OUT	0x15,R24
    012A BB84      OUT	0x14,R24
(0092) 	TCCR1B = 0x02; //start Timer
    012B B225      IN	R2,0x15
(0093) 	//时钟源选择
    012C 2628      EOR	R2,R24
(0094) }
    012D BA25      OUT	0x15,R2
    012E 940E017E  CALL	_OSInit
(0095) 
    0130 E087      LDI	R24,7
    0131 838A      STD	Y+2,R24
    0132 ED8B      LDI	R24,0xDB
(0096) //*****************************************************************************
(0097) //8倍分频, 11.0592M晶振, 定时25ms
(0098) #pragma interrupt_handler OSTickISR:15
(0099) /*
(0100) void OSTickISR(void);
(0101) #pragma interrupt_handler fuc:15
(0102) void fuc()
(0103) {
(0104)  OSTickISR();
(0105) }*/
    0133 E091      LDI	R25,1
    0134 8399      STD	Y+1,R25
(0106) //call this routine to initialize all peripherals
    0135 8388      STD	Y+0,R24
    0136 2722      CLR	R18
    0137 2733      CLR	R19
    0138 E80E      LDI	R16,0x8E
    0139 E010      LDI	R17,0
    013A 940E0582  CALL	_OSTaskCreate
    013C E086      LDI	R24,6
    013D 838A      STD	Y+2,R24
    013E E787      LDI	R24,0x77
    013F E091      LDI	R25,1
    0140 8399      STD	Y+1,R25
(0107) void init_devices(void)
(0108) {
(0109) 	//stop errant interrupts until set up
(0110) 	CLI(); 			//disable all interrupts
    0141 8388      STD	Y+0,R24
    0142 2722      CLR	R18
    0143 2733      CLR	R19
    0144 E80C      LDI	R16,0x8C
    0145 E010      LDI	R17,0
    0146 940E0582  CALL	_OSTaskCreate
    0148 DFCD      RCALL	_init_devices
    0149 E001      LDI	R16,1
    014A 940E0756  CALL	_uartInit
    014C 940E0322  CALL	_OSStart
(0111) 	XDIV  = 0x00; 	//xtal divider
(0112) 	XMCRA = 0x00; 	//external memory
(0113) 	t1Init();
(0114) 	
(0115) 	MCUCR = 0x00;
    014E 9623      ADIW	R28,3
    014F 9508      RET
(0116) 	EICRA = 0x00; 	//extended ext ints
(0117) 	EICRB = 0x00; 	//extended ext ints
_Task1:
  data                 --> R10
    0150 940E084C  CALL	push_gset3x
    0152 0158      MOVW	R10,R16
    0153 9478      BSET	7
    0154 E180      LDI	R24,0x10
    0155 B225      IN	R2,0x15
    0156 2628      EOR	R2,R24
(0118) 	EIMSK = 0x00;
(0119) 	TIMSK = 0x04; 	//timer interrupt sources
(0120) 	ETIMSK = 0x00; 	//extended timer interrupt sources
(0121) 	//SEI(); 			//re-enable interrupts
(0122) }
(0123) 
(0124) void Task1(void *pdata);
(0125) void Task2(void *pdata);
    0157 BA25      OUT	0x15,R2
    0158 E02A      LDI	R18,0xA
    0159 E031      LDI	R19,1
    015A E001      LDI	R16,1
    015B 940E0792  CALL	_putStr
(0126) 
    015D E104      LDI	R16,0x14
    015E E010      LDI	R17,0
    015F 940E0601  CALL	_OSTimeDly
    0161 E180      LDI	R24,0x10
    0162 B225      IN	R2,0x15
    0163 2628      EOR	R2,R24
    0164 BA25      OUT	0x15,R2
    0165 E104      LDI	R16,0x14
    0166 E010      LDI	R17,0
    0167 940E0601  CALL	_OSTimeDly
(0127) //*****************************************************************************
(0128) // Start
(0129) #define LED()	 	PORTC = PORTC^BIT(4);
(0130) void main(void){
(0131) 	PORTC=BIT(4);
(0132) 	DDRC=BIT(4);
(0133) 	LED();
(0134) 	OSInit();		// OS init
    0169 CFEA      RJMP	0x0154
    016A 940E083A  CALL	pop_gset3x
    016C 9508      RET
_Task2:
  data                 --> R10
    016D 940E084C  CALL	push_gset3x
(0135) 	OSTaskCreate(Task1,
    016F 0158      MOVW	R10,R16
    0170 9478      BSET	7
    0171 E020      LDI	R18,0
    0172 E031      LDI	R19,1
    0173 E001      LDI	R16,1
    0174 940E0792  CALL	_putStr
    0176 E500      LDI	R16,0x50
    0177 E010      LDI	R17,0
    0178 940E0601  CALL	_OSTimeDly
FILE: F:\ucos\iccavr\source\os_core.c
(0001) 
(0002) #ifndef  OS_MASTER_FILE
(0003) #define  OS_GLOBALS
(0004) #include "includes.h"
(0005) #endif
(0006) 
(0007) /*
(0008) *********************************************************************************************************
(0009) *                                         LOCAL GLOBAL VARIABLES
(0010) *********************************************************************************************************
(0011) */
(0012)                                        
(0013) static  INT8U        OSIntExitY;               /* Variable used by 'OSIntExit' to prevent using locals */
(0014) static  OS_STK       OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE];       /* Idle       task stack              */
(0015) 
(0016) #if     OS_TASK_STAT_EN
(0017) static  OS_STK       OSTaskStatStk[OS_TASK_STAT_STK_SIZE];      /* Statistics task stack               */
(0018) #endif
(0019) 
(0020) static  OS_TCB       OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS];   /* Table of TCBs                       */
(0021) 
(0022) /*$PAGE*/
(0023) /*
(0024) *********************************************************************************************************
(0025) *                              MAPPING TABLE TO MAP BIT POSITION TO BIT MASK
(0026) *
(0027) * Note: Index into table is desired bit position, 0..7
(0028) *       Indexed value corresponds to bit mask
(0029) *********************************************************************************************************
(0030) */
(0031) 
(0032) INT8U const OSMapTbl[]   = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
(0033) 
(0034) /*
(0035) *********************************************************************************************************
(0036) *                                       PRIORITY RESOLUTION TABLE
(0037) *
(0038) * Note: Index into table is bit pattern to resolve highest priority
(0039) *       Indexed value corresponds to highest priority bit position (i.e. 0..7)
(0040) *********************************************************************************************************
(0041) */
(0042) 
(0043) INT8U const OSUnMapTbl[] = {
(0044)     0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0045)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0046)     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0047)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0048)     6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0049)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0050)     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0051)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0052)     7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0053)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0054)     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0055)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0056)     6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0057)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0058)     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
(0059)     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
(0060) };

⌨️ 快捷键说明

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