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

📄 ucos.lst

📁 Atmega128的proteus仿真例程
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
    00E1 EFCF      LDI	R28,0xFF
    00E2 E1D0      LDI	R29,0x10
    00E3 BFCD      OUT	0x3D,R28
    00E4 BFDE      OUT	0x3E,R29
    00E5 51C0      SUBI	R28,0x10
    00E6 40D0      SBCI	R29,0
    00E7 EA0A      LDI	R16,0xAA
    00E8 8308      STD	Y+0,R16
    00E9 2400      CLR	R0
    00EA E2E7      LDI	R30,0x27
    00EB E0F1      LDI	R31,1
    00EC E012      LDI	R17,2
    00ED 3FE9      CPI	R30,0xF9
    00EE 07F1      CPC	R31,R17
    00EF F011      BEQ	0x00F2
    00F0 9201      ST	R0,Z+
    00F1 CFFB      RJMP	0x00ED
    00F2 8300      STD	Z+0,R16
    00F3 E9EA      LDI	R30,0x9A
    00F4 E0F1      LDI	R31,1
    00F5 E0A0      LDI	R26,0
    00F6 E0B1      LDI	R27,1
    00F7 E011      LDI	R17,1
    00F8 3CE1      CPI	R30,0xC1
    00F9 07F1      CPC	R31,R17
    00FA F021      BEQ	0x00FF
    00FB 95C8      LPM
    00FC 9631      ADIW	R30,1
    00FD 920D      ST	R0,X+
    00FE CFF9      RJMP	0x00F8
    00FF 940E011F  CALL	_main
_exit:
    0101 CFFF      RJMP	_exit
FILE: D:\MTD\work\iccavr\ucos-M128\test\test2.c
(0001) 
(0002) #define Test1_GLOBALS
(0003) #include "includes.h"
(0004) 
(0005) 
(0006) #define BitSet(a,b)     (a |= (1<<b)) 
(0007) #define BitClr(a,b)     (a &= ~(1<<b))
(0008) #define	BitStatus(a,b)  (a&BIT(b))
(0009) #define uchar unsigned char
(0010) 
(0011) #define LED1_ON   BitClr(PORTB,4)
(0012) #define LED1_OFF  BitSet(PORTB,4)
(0013) #define LED2_ON   BitClr(PORTB,5)
(0014) #define LED2_OFF  BitSet(PORTB,5)
(0015) 
(0016) //******************************************************************************
(0017) // Constants
(0018) #define TaskStartPrio	10		// Task-Prioritaeten
(0019) //*****************************************************************************
(0020) // Variablen
(0021) //INT8U    display[5];
(0022) char LED1=0,LED2=0;
(0023) OS_STK	Task1Stack[OS_TASK_DEF_STK_SIZE];		// startup task stack
(0024) OS_STK	Task2Stack[OS_TASK_DEF_STK_SIZE];
(0025) //ICC-AVR application builder : 2003-12-28 21:52:56
(0026) // Target : M8
(0027) // Crystal: 8.0000Mhz
(0028) 
(0029) #include <iom128v.h>
(0030) #include <macros.h>
(0031) #include <stdio.h>
(0032) 
(0033) 
(0034) //UART0 initialisation
(0035) // desired baud rate: 9600
(0036) // actual: baud rate:9615 (0.2%)
(0037) // char size: 8 bit
(0038) // parity: Disabled
(0039) void uart0_init(void)
(0040) {
(0041)  UCSR0B = 0x00; //disable while setting baud rate
_uart0_init:
    0102 2422      CLR	R2
    0103 B82A      OUT	0x0A,R2
(0042)  UCSR0A = 0x00;
    0104 B82B      OUT	0x0B,R2
(0043)  UCSR0C = 0x86;
    0105 E886      LDI	R24,0x86
    0106 93800095  STS	0x95,R24
(0044)  UBRR0L = 0x33; //set baud rate lo
    0108 E383      LDI	R24,0x33
    0109 B989      OUT	0x09,R24
(0045)  UBRR0H = 0x00; //set baud rate hi
    010A 92200090  STS	0x90,R2
(0046)  UCSR0B = 0x08;
    010C E088      LDI	R24,0x8
    010D B98A      OUT	0x0A,R24
    010E 9508      RET
(0047)  
(0048)  /*UCSR0B = 0x00; //disable while setting baud rate
(0049)  UCSR0A = 0x00;
(0050)  UCSR0C = 0x06;
(0051)  UBRR0L = 0x33; //set baud rate lo
(0052)  UBRR0H = 0x00; //set baud rate hi
(0053)  UCSR0B = 0x00;
(0054)  */
(0055) }
(0056) 
(0057) //*****************************************************************************
(0058) // Prototypes
(0059) 
(0060) //*****************************************************************************
(0061) //			TickISR
(0062) //*****************************************************************************
(0063) // Init Timer/Counter2 fuer Takterzeugung
(0064) void TC2_Init (void){	
(0065) 	/* Only uses TIMER2 overflow for tick interrupt. Timer compare
(0066)      * can also be used.
(0067)      */
(0068) 	TIMSK &= ~(BIT(TOIE2)/* | BIT(OCIE2) */);	//disable TC2 interrupts
_TC2_Init:
    010F B787      IN	R24,0x37
    0110 7B8F      ANDI	R24,0xBF
    0111 BF87      OUT	0x37,R24
(0069) 	TCCR2 = 0x00; //stop
    0112 2422      CLR	R2
    0113 BC25      OUT	0x25,R2
(0070)     TCNT2 = 0x06; //setup
    0114 E086      LDI	R24,6
    0115 BD84      OUT	0x24,R24
(0071)     OCR2  = 0xFA;
    0116 EF8A      LDI	R24,0xFA
    0117 BD83      OUT	0x23,R24
(0072)     TCCR2 = 0x03; //start
    0118 E083      LDI	R24,3
    0119 BD85      OUT	0x25,R24
(0073) 	TIMSK |= BIT(TOIE2);	// enable OVF-interrupt
    011A B787      IN	R24,0x37
    011B 6480      ORI	R24,0x40
    011C BF87      OUT	0x37,R24
(0074) 	                                                                                                                                //TIMSK |= OCIE2;		// enable COMP-interrupt
(0075) 	
(0076)     SEI();	// enable global interrupt     
    011D 9478      BSET	7
    011E 9508      RET
_main:
    011F 9723      SBIW	R28,3
(0077) }
(0078) 
(0079) //*****************************************************************************
(0080) // Interrupt Timer/Counter0 Overflow
(0081) // OVF_Takt:  4MHz / 1024 / 39 = 10ms
(0082) #pragma interrupt_handler OSTickISR:11
(0083) 
(0084) void Task1(void *pdata);
(0085) void Task2(void *pdata);
(0086) 
(0087) //*****************************************************************************
(0088) // Start
(0089) void main(void){	
(0090) 	OSInit();		// OS init
    0120 940E0194  CALL	_OSInit
(0091) 	uart0_init();
    0122 DFDF      RCALL	_uart0_init
(0092) 	puts("ATmega128 uc/os-II Test!");
    0123 E00E      LDI	R16,0xE
    0124 E011      LDI	R17,1
    0125 940E07B2  CALL	_puts
(0093) 	putchar(0x0d);
    0127 E00D      LDI	R16,0xD
    0128 940E079A  CALL	_putchar
(0094) 	putchar(0x0a);
    012A E00A      LDI	R16,0xA
    012B 940E079A  CALL	_putchar
(0095) 	
(0096) 	OSTaskCreate(Task1,	(void *)0, &Task1Stack[OS_TASK_DEF_STK_SIZE-1],	7);
    012D E087      LDI	R24,7
    012E 838A      STD	Y+2,R24
    012F EE8E      LDI	R24,0xEE
    0130 E091      LDI	R25,1
    0131 8399      STD	Y+1,R25
    0132 8388      STD	Y+0,R24
    0133 2722      CLR	R18
    0134 2733      CLR	R19
    0135 E80E      LDI	R16,0x8E
    0136 E010      LDI	R17,0
    0137 940E0598  CALL	_OSTaskCreate
(0097) 	
(0098) 	OSTaskCreate(Task2,	(void *)0, &Task2Stack[OS_TASK_DEF_STK_SIZE-1],	8); 
    0139 E088      LDI	R24,0x8
    013A 838A      STD	Y+2,R24
    013B E88A      LDI	R24,0x8A
    013C E091      LDI	R25,1
    013D 8399      STD	Y+1,R25
    013E 8388      STD	Y+0,R24
    013F 2722      CLR	R18
    0140 2733      CLR	R19
    0141 E80C      LDI	R16,0x8C
    0142 E010      LDI	R17,0
    0143 940E0598  CALL	_OSTaskCreate
(0099) 	// init und start tick
(0100)     TC2_Init();			// Timer/Counter#2 Overflow and Comp init   
    0145 DFC9      RCALL	_TC2_Init
(0101)     OSStart();		// start multitasking
    0146 940E0338  CALL	_OSStart
    0148 9623      ADIW	R28,3
    0149 9508      RET
_Task1:
  data                 --> R10
    014A 940E078F  CALL	push_gset3x
    014C 0158      MOVW	R10,R16
(0102) }
(0103) 
(0104) void Task1(void *data)
(0105) {
(0106)   data = data;
(0107)   PORTB|=0x10;
    014D 9AC4      SBI	0x18,4
(0108)   DDRB|=0x10;
    014E 9ABC      SBI	0x17,4
    014F C01B      RJMP	0x016B
(0109)   while(1)
(0110)   {
(0111)   puts("Task1");
    0150 E008      LDI	R16,0x8
    0151 E011      LDI	R17,1
    0152 940E07B2  CALL	_puts
(0112)   putchar(0x0d);
    0154 E00D      LDI	R16,0xD
    0155 940E079A  CALL	_putchar
(0113)   putchar(0x0a);
    0157 E00A      LDI	R16,0xA
    0158 940E079A  CALL	_putchar
(0114)   if(LED1==0)
    015A 90200100  LDS	R2,LED1
    015C 2022      TST	R2
    015D F429      BNE	0x0163
(0115)   {
(0116)      LED1=1;
    015E E081      LDI	R24,1
    015F 93800100  STS	LED1,R24
(0117) 	 LED1_ON;
    0161 98C4      CBI	0x18,4
(0118)   }
    0162 C004      RJMP	0x0167
(0119)   else
(0120)   {
(0121)      LED1=0;
    0163 2422      CLR	R2
    0164 92200100  STS	LED1,R2
(0122) 	 LED1_OFF;
    0166 9AC4      SBI	0x18,4
(0123)   }
(0124)   OSTimeDly (500);//延时1秒
    0167 EF04      LDI	R16,0xF4
    0168 E011      LDI	R17,1
    0169 940E0617  CALL	_OSTimeDly
    016B CFE4      RJMP	0x0150
    016C 940E077D  CALL	pop_gset3x
    016E 9508      RET
_Task2:
  data                 --> R10
    016F 940E078F  CALL	push_gset3x
    0171 0158      MOVW	R10,R16
(0125)   }
(0126) }
(0127) void Task2(void *data)
(0128) {
(0129)   data = data;
(0130)   PORTB|=0x20;
    0172 9AC5      SBI	0x18,5
(0131)   DDRB|=0x20;
    0173 9ABD      SBI	0x17,5
    0174 C01B      RJMP	0x0190
(0132)   while(1)
(0133)   {
(0134)   puts("Task2");
    0175 E002      LDI	R16,2
    0176 E011      LDI	R17,1
    0177 940E07B2  CALL	_puts
(0135)   putchar(0x0d);
    0179 E00D      LDI	R16,0xD
    017A 940E079A  CALL	_putchar
(0136)   putchar(0x0a);
    017C E00A      LDI	R16,0xA
    017D 940E079A  CALL	_putchar
(0137)   if(LED2==0)
    017F 90200101  LDS	R2,LED2
    0181 2022      TST	R2
    0182 F429      BNE	0x0188
(0138)   {
(0139)      LED2=1;
    0183 E081      LDI	R24,1
    0184 93800101  STS	LED2,R24
(0140) 	 LED2_ON;
    0186 98C5      CBI	0x18,5
(0141)   }
    0187 C004      RJMP	0x018C
(0142)   else
(0143)   {
(0144)      LED2=0;
    0188 2422      CLR	R2
    0189 92200101  STS	LED2,R2
(0145) 	 LED2_OFF;
    018B 9AC5      SBI	0x18,5
(0146)   }
(0147)   OSTimeDly (1000);//延时2秒
    018C EE08      LDI	R16,0xE8
    018D E013      LDI	R17,3
    018E 940E0617  CALL	_OSTimeDly
    0190 CFE4      RJMP	0x0175
    0191 940E077D  CALL	pop_gset3x
    0193 9508      RET
_OSInit:
  i                    --> R10
    0194 940E078F  CALL	push_gset3x
    0196 9723      SBIW	R28,3
FILE: D:\MTD\work\iccavr\ucos-M128\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

⌨️ 快捷键说明

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