📄 pjhost.lst
字号:
__text_start:
__start:
0245 EFCF LDI R28,0xFF
0246 E1D0 LDI R29,0x10
0247 BFCD OUT 0x3D,R28
0248 BFDE OUT 0x3E,R29
0249 51C0 SUBI R28,0x10
024A 40D0 SBCI R29,0
024B EA0A LDI R16,0xAA
024C 8308 STD Y+0,R16
024D 2400 CLR R0
024E E0E3 LDI R30,3
024F E0F1 LDI R31,1
0250 E019 LDI R17,0x9
0251 3DE6 CPI R30,0xD6
0252 07F1 CPC R31,R17
0253 F011 BEQ 0x0256
0254 9201 ST R0,Z+
0255 CFFB RJMP 0x0251
0256 8300 STD Z+0,R16
0257 E8E7 LDI R30,0x87
0258 E0F4 LDI R31,4
0259 E0A0 LDI R26,0
025A E0B1 LDI R27,1
025B E014 LDI R17,4
025C 38EA CPI R30,0x8A
025D 07F1 CPC R31,R17
025E F021 BEQ 0x0263
025F 95C8 LPM
0260 9631 ADIW R30,1
0261 920D ST R0,X+
0262 CFF9 RJMP 0x025C
0263 940E0271 CALL _main
_exit:
0265 CFFF RJMP _exit
FILE: D:\编写软件小系统\纯ucos\source\app.c
(0001) /*******************************************************************************
(0002) *************************** * Copyright : COPYRIGHT(C) 1997-2005
(0003)
(0004)
(0005) * Project Name : UCOS2纯系统
(0006) * File name :
(0007) * Crystal : 16MHZ
(0008) * PCB P/N :
(0009) * Comments :
(0010) * SoftWareP/N :
(0011) * ----------< History >---------------------------------------------------------
(0012)
(0013) * File Version : 1.0
(0014) * Author : jjx
(0015) * E-Mail :
(0016) * Date : 2008 10 08
(0017) * Comments :
(0018) *******************************************************************************/
(0019)
(0020) #include "includes.h"
(0021) #include "Publics.H"
(0022)
(0023) //在os_cfg.h中作修改
(0024) #define OS_TASK_START_STK_SIZE OS_TASK_STK_SIZE
(0025) #define OS_TASK_START_HARD_STK_SIZE OS_TASK_HARD_STK_SIZE
(0026)
(0027) OS_STK AppTaskStartStk[OS_TASK_START_STK_SIZE];
(0028)
(0029)
(0030) /*
(0031) **************************************************************************************************************
(0032) * FUNCTION PROTOTYPES
(0033) **************************************************************************************************************
(0034) */
(0035)
(0036)
(0037) static void AppTaskStart (void *p_arg);
(0038) static void AppTaskCreate(void);
(0039) static void AppIOInit(void);
(0040)
(0041) void watchdog_init(void);
(0042)
(0043)
(0044)
(0045) void BeeIO(void)
(0046) {
(0047) PORTB&=~(1<<PB5);
_BeeIO:
0266 98C5 CBI 0x18,5
(0048) //PORTB|=1<<PB5;
(0049) DDRB|=1<<PB5;
0267 9ABD SBI 0x17,5
0268 9508 RET
(0050) }
(0051)
(0052) void timer1_init(void) //接15脚,OC1A,为定时器T/C1
(0053) {
(0054) TCCR1B=0x00; //关闭
_timer1_init:
0269 2422 CLR R2
026A BC2E OUT 0x2E,R2
(0055) //TCCR3B = 0x00; //stop
(0056) OCR1AH = 0x00; //16位的比较PWM高位
026B BC2B OUT 0x2B,R2
(0057) //OCR3AH = 0x00;
(0058) //OCR3AL = 0xe6; //2 k
(0059) //OCR3AL = 0x99; //3 k
(0060) //OCR3AL = 0x73; //4 k
(0061) //OCR3AL = 0x5c; //5 k
(0062) //OCR3AL = 0x4c; //6 k
(0063) //OCR1AL = 0x41;
(0064) //OCR1AL = 0x89;
(0065) OCR1AL = 0xe6;
026C EE86 LDI R24,0xE6
026D BD8A OUT 0x2A,R24
(0066) //OCR1AL = 0x73; //7 k形 //16位的比较PWM低位
(0067) //OCR3AL = 0x39; //8 k
(0068) //OCR3AL = 0x33; //9 k
(0069) //OCR3AL = 0x2e; //10 k
(0070) TCCR1A=0x40; //CTC模式
026E E480 LDI R24,0x40
026F BD8F OUT 0x2F,R24
0270 9508 RET
_main:
temp --> Y+0
ko --> R20
it --> R20
0271 9721 SBIW R28,1
(0071) }
(0072)
(0073) /*
(0074) **************************************************************************************************************
(0075) * MAIN
(0076) *
(0077) * Note(s): 1) You SHOULD use OS_TASK_STK_SIZE (see OS_CFG.H) when setting OSTaskStkSize prior to calling
(0078) * OSInit() because OS_TASK_IDLE_STK_SIZE and OS_TASK_STAT_STK_SIZE are set to this value in
(0079) * OS_CFG.H.
(0080) **************************************************************************************************************
(0081) */
(0082) void main (void)
(0083) {
(0084) INT8U it =0;
0272 2744 CLR R20
(0085) INT8U ko=0;
(0086)
(0087) INT8U temp; // IMPORTANT: MUST be setup before calling 'OSInit()'
(0088) OSTaskStkSize = OS_TASK_STK_SIZE; // Setup the default stack size
0273 E080 LDI R24,0
0274 E091 LDI R25,1
0275 939009D5 STS OSTaskStkSize+1,R25
0277 938009D4 STS OSTaskStkSize,R24
(0089) OSTaskHardStkSize = OS_TASK_HARD_STK_SIZE; // Setup the default hardware stack size
0279 E480 LDI R24,0x40
027A E090 LDI R25,0
027B 939009D3 STS OSTaskHardStkSize+1,R25
027D 938009D2 STS OSTaskHardStkSize,R24
(0090) AppIOInit();
027F D02F RCALL _AppIOInit
(0091)
(0092) BeeIO();
0280 DFE5 RCALL _BeeIO
(0093) timer1_init();
0281 DFE7 RCALL _timer1_init
(0094)
(0095)
(0096) OSInit(); // Initialize "uC/OS-II, The Real-Time Kernel"
0282 940E0715 CALL _OSInit
(0097) watchdog_init();
0284 D024 RCALL _watchdog_init
(0098)
(0099) //---- Any initialization code before starting multitasking --------------//
(0100)
(0101) // View_Pic(aVfdDispRAM1,DisplayBuff1,1);
(0102) AppTaskCreate();
0285 D00E RCALL _AppTaskCreate
(0103) AppTaskStart(&temp);
0286 018E MOVW R16,R28
0287 D005 RCALL _AppTaskStart
(0104)
(0105) //---- Create any other task you want before we start multitasking -------//
(0106) WDR();
0288 95A8 WDR
(0107)
(0108) OSStart(); //Start multitasking (i.e. give control to uC/OS-II)
0289 940E07F5 CALL _OSStart
028B 9621 ADIW R28,1
028C 9508 RET
_AppTaskStart:
p_arg --> R20
028D 940E134D CALL push_gset1
028F 01A8 MOVW R20,R16
(0109) }
(0110) /*
(0111) *********************************************************************************************************
(0112) * STARTUP TASK
(0113) *
(0114) * Description : This is an example of a startup task. As mentioned in the book's text, you MUST
(0115) * initialize the ticker only once multitasking has started.
(0116) *
(0117) * Arguments : p_arg is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
(0118) *
(0119) * Notes : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
(0120) * used. The compiler should not generate any code for this statement.
(0121) *********************************************************************************************************
(0122) */
(0123) static void AppTaskStart (void *p_arg)
(0124) {
(0125) p_arg = p_arg; // Prevent compiler warnings
(0126) OSTickISR_Init(); // Initialize the ticker
0290 D00C RCALL _OSTickISR_Init
0291 940E1350 CALL pop_gset1
0293 9508 RET
(0127) }
(0128) /*
(0129) *********************************************************************************************************
(0130) * CREATE APPLICATION TASKS
(0131) *
(0132) * Description : This function creates the application tasks.
(0133) *
(0134) * Arguments : p_arg is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
(0135) *
(0136) * Notes : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
(0137) * used. The compiler should not generate any code for this statement.
(0138) *********************************************************************************************************
(0139) */
(0140) static void AppTaskCreate (void)
(0141) {
(0142) Init_AppTask1(); //任务1初始化
_AppTaskCreate:
0294 940E02C3 CALL _Init_AppTask1
(0143) Init_AppTask2(); //任务2初始化
0296 940E0328 CALL _Init_AppTask2
(0144) Init_AppTask6(); //任务6初始化
0298 940E0357 CALL _Init_AppTask6
(0145) Init_AppTask8(); //任务8初始化
029A 940E0386 CALL _Init_AppTask8
029C 9508 RET
(0146) }
(0147)
(0148) //----------------------------------------------------------------------------//
(0149) //SETUP THE TICK RATE //中断在os_cpu_a.s上做定义并与ucos系统相结合
(0150) //----------------------------------------------------------------------------//
(0151) void OSTickISR_Init (void)
(0152) {
(0153) TCNT0 =0;
_OSTickISR_Init:
029D 2422 CLR R2
029E BE22 OUT 0x32,R2
(0154) TCCR0 = 0x07; // Set TIMER0 prescaler to CLK/1024
029F E087 LDI R24,7
02A0 BF83 OUT 0x33,R24
(0155) TIMSK = 0x01; // Enable TIMER0 overflow interrupt
02A1 E081 LDI R24,1
02A2 BF87 OUT 0x37,R24
02A3 9508 RET
(0156) }
(0157) //----------------------------------------------------------------------------//
(0158) // SETUP THE TICK RATE
(0159) //----------------------------------------------------------------------------//
(0160) void OSTickISR_Handler (void)
(0161) {
(0162) TCNT0 = 0x64; //100HZ
_OSTickISR_Handler:
02A4 E684 LDI R24,0x64
02A5 BF82 OUT 0x32,R24
(0163) OSTimeTick();
02A6 940E0838 CALL _OSTimeTick
02A8 9508 RET
(0164) }
(0165) //----------------------------------------------------------------------------//
(0166) //函数介绍: 看门狗初始化 (prescale: 2048K cycles = 2s)
(0167) //输入参数:--
(0168) // 输出参数:--
(0169) //返 回 值:--
(0170) //----------------------------------------------------------------------------//
(0171) void watchdog_init(void)
(0172) {
(0173) WDR();
_watchdog_init:
02A9 95A8 WDR
(0174) WDTCR = (1<<WDCE)|(1<<WDE);
02AA E188 LDI R24,0x18
02AB BD81 OUT 0x21,R24
(0175) WDTCR = (1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0);
02AC E08F LDI R24,0xF
02AD BD81 OUT 0x21,R24
02AE 9508 RET
(0176) }
(0177)
(0178) //----------------------------------------------------------------------------//
(0179) // SETUP I/Os
(0180) //----------------------------------------------------------------------------//
(0181) static void AppIOInit (void) /*IO全部初始化为高阻态*/
(0182) {
(0183) PORTA = 0x00;
_AppIOInit:
02AF 2422 CLR R2
02B0 BA2B OUT 0x1B,R2
(0184) DDRA = 0x00;
02B1 BA2A OUT 0x1A,R2
(0185) PORTB = 0x00;
02B2 BA28 OUT 0x18,R2
(0186) DDRB = 0x00;
02B3 BA27 OUT 0x17,R2
(0187) PORTC = 0x00; //m103 output only
02B4 BA25 OUT 0x15,R2
(0188) DDRC = 0x00;
02B5 BA24 OUT 0x14,R2
(0189) PORTD = 0x00;
02B6 BA22 OUT 0x12,R2
(0190) DDRD = 0x00;
02B7 BA21 OUT 0x11,R2
(0191) PORTE = 0x00;
02B8 B823 OUT 0x03,R2
(0192) DDRE = 0x00;
02B9 B822 OUT 0x02,R2
(0193) PORTF = 0x00;
02BA 92200062 STS 0x62,R2
(0194) DDRF = 0x00;
02BC 92200061 STS 0x61,R2
(0195) PORTG = 0x00;
02BE 92200065 STS 0x65,R2
(0196) DDRG = 0x00;
02C0 92200064 STS 0x64,R2
02C2 9508 RET
_Init_AppTask1:
02C3 9723 SBIW R28,3
FILE: D:\编写软件小系统\纯ucos\source\AppTask1.c
(0001)
(0002) #include "..\include\includes.h"
(0003) #include "..\include\Publics.H"
(0004) #include "..\include\menu.h"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -