📄 ex1.lst
字号:
C51 COMPILER V8.05a EX1 03/02/2007 11:12:45 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE EX1
OBJECT MODULE PLACED IN ex1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ex1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "..\uc_os_II\includes.h"
2
3 OS_STK xdata Task1Stack[CPU_MAX_STK_SIZE];
4 OS_STK xdata Task2Stack[CPU_MAX_STK_SIZE];
5 OS_STK xdata Task3Stack[CPU_MAX_STK_SIZE];
6
7
8 void Task1(void xdata * ppdata) reentrant
9 {
10 1 ppdata = ppdata;
11 1 while(1)
12 1 {
13 2 OSTimeDlyHMSM(0, 0, 2, 0);
14 2 printf("\n\n\n\n\n");
15 2 printf("\n这里是任务1 的输出!!!!!!");
16 2 printf("\n-------------------------------");
17 2 printf("\n恭喜发财!!!");
18 2 printf("\nuC/OS II 正在运行");
19 2 printf("\nuC/OS II 源码开放的嵌入式实时操作系统");
20 2 }
21 1 }
22
23 void Task2(void xdata * ppdata) reentrant
24 {
25 1 ppdata = ppdata;
26 1 while(1)
27 1 {
28 2 OSTimeDlyHMSM(0, 0, 8, 0);
29 2 printf("\n\n\n\n\n");
30 2 printf("\n这里是任务2 的输出!!!!!!");
31 2 printf("\n-------------------------------");
32 2 printf("\n");
33 2 printf("本工程移植时间:");
34 2 printf(__DATE__);
35 2 printf(" ");
36 2 printf(__TIME__);
37 2 }
38 1 }
39
40 void Task3(void xdata * ppdata) reentrant
41 {
42 1 ppdata = ppdata;
43 1 while(1)
44 1 {
45 2 OSTimeDlyHMSM(0, 0, 16, 0);
46 2 printf("\n\n\n\n\n");
47 2 printf("\n这里是任务3 的输出!!!!!!");
48 2 printf("\n-------------------------------");
49 2 printf("\n高时兵");
50 2 printf("\nceeback@qq.com");
51 2 printf("\n福建泉州铁通电子设备有限公司");
52 2 }
53 1 }
54
55 void SerialInitial()
C51 COMPILER V8.05a EX1 03/02/2007 11:12:45 PAGE 2
56 {
57 1 /* set TI to 1, set TR1 to 1 */
58 1 SCON = 0x52;/* SM0 SM1 =1 SM2 REN TB8 RB8 TI RI */
59 1 TMOD = 0x20;/* GATE=0 C/T-=0 M1 M0=2 GATE C/T- M1 M0 */
60 1 TH1 = 0xfd; /* 19200*/
61 1 PCON = 0x80; // 38400
62 1 TCON = 0x40;/* 01101001 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT */
63 1 }
64
65 void InterruptInitial()
66 {
67 1 /* set timer. 50ms, THTL = 3caf when cpu at 12MHz */
68 1 TMOD |= 0x01;
69 1 TH0 = 0x70;
70 1 TL0 = 0x00;
71 1 /* TR0 is set in OSStart() */
72 1 ET0 = 1;
73 1 }
74
75 sfr WDTCN = 0xFF;
76 sfr CKCON = 0x8E;
77 sfr EMI0CF = 0xA3;
78 sfr XBR0 = 0xE1;
79 sfr XBR2 = 0xE3;
80 sfr OSCXCN = 0xB1;
81 sfr OSCICN = 0xB2;
82
83
84 void initial_cpu(void)
85 {
86 1 unsigned int idata i = 0;
87 1 //Reset_Sources_Init()
88 1 // EA = 0;
89 1 WDTCN = 0xDE;
90 1 WDTCN = 0xAD;
91 1 // EA = 1;
92 1 //RSTSRC = 0x02;
93 1
94 1 //Timer_Init() // T0 为系统计时,10 ms 中断一次
95 1 CKCON = 0x00; // T0 使用的是系统时钟的 12 分频,其计数每 1 约为 0.5425 us.
96 1 TMOD = 0x21;
97 1 TH0 = 0xB8; // T0:10 ms 中断一次
98 1 TH1 = 0xFa;
99 1 TCON = 0x50; //启动定时器.
100 1 /* T2CON = 0x34;
101 1 RCAP2L = 0xB8;
102 1 RCAP2H = 0xFF;
103 1 //TMR3CN = 0x04; // T3: us 中断一次,用于 DAC 输出,其中断标志必须手动清 0
104 1 TMR3H = 0xff;
105 1 TMR3RLH = 0xff; // T3 总是16 位自动重载方式
106 1 TMR3RLL = 0xf4;
107 1 */
108 1 //UART_Init()
109 1 //PCON = 0x80;
110 1 SCON = 0x50;
111 1 //SCON1 = 0x50;
112 1
113 1 //EMI_Init()
114 1 EMI0CF = 0x07;
115 1
116 1
117 1
C51 COMPILER V8.05a EX1 03/02/2007 11:12:45 PAGE 3
118 1 //P0MDOUT = 0x50; // /RD,/CWR,/INT0,A11 设置为推挽输出方式.
119 1 //P2MDOUT = 0x01;
120 1 //P2MDOUT = 0x08;
121 1 XBR0 = 0x04;
122 1 //XBR1 = 0x04;
123 1 XBR2 = 0x46;
124 1
125 1 //Oscillator_Init()
126 1 OSCXCN = 0x67;
127 1 for (i = 0; i < 5000; i++); // Wait 1ms for initialization
128 1 while ((OSCXCN & 0x80) == 0);
129 1 OSCICN = 0x08;
130 1 }
131
132 main()
133 {
134 1 initial_cpu();
135 1 SerialInitial();
136 1 InterruptInitial();
137 1 OSInit();
138 1 printf("\nstart");
139 1 OSTaskCreate(Task1, (void xdata *)0, &Task1Stack[0],2);
140 1 OSTaskCreate(Task2, (void xdata *)0, &Task2Stack[0],3);
141 1 OSTaskCreate(Task3, (void xdata *)0, &Task3Stack[0],4);
142 1 OSStart();
143 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 498 ----
CONSTANT SIZE = 290 ----
XDATA SIZE = 192 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- 2
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -