📄 yy2.lst
字号:
31 =2 // 其中:SMOD=0,1;Fosc=晶体或晶振频率;Bound=波特率
32 =2 // 本例中,SMOD=0;Fosc=20*10E6;Bound=300,所以TH1=0x52。
33 =2 //**********************************************************************************
34 =2 //书写风格:
35 =2 // 1.带yy前缀标志的函数为杨屹改写的等效C库函数。
36 =2 // 2.单个单词用小写,yy定义为前缀,不算一个单词。
37 =2 // 3.多个单词(2个及以上),每个单词首字母大写。(有时变量名第一个单词首字母小写)
38 =2 // 4.采用内缩风格,每次缩进8个空格。
39 =2 //**********************************************************************************
40 =2
41 =2 void InitSerial() reentrant;//串口初始化
42 =2 void InitSerialBuffer(void) reentrant;//串口缓冲区初始化
43 =2 bit yygetch(unsigned char *ch) reentrant;//从串口缓冲区读1字节数据
44 =2 void PrintChar(unsigned char ch) reentrant;//显示字符
45 =2 void PrintCh(unsigned char ch) reentrant;//内部使用,不建议用户使用。
46 =2 void PrintByte(unsigned char Byte) reentrant;//以十六进制格式显示1个字节数据
47 =2 void PrintWord(unsigned int Word) reentrant;//以十六进制格式显示1个字数据
48 =2 void PrintLong(unsigned long LongWord) reentrant;//以十六进制格式显示1个长字数据
49 =2 void PrintStr(unsigned char *str) reentrant;//显示字符串
50 =2 void clrscr() reentrant;//清屏
51 =2
52 =2 void serial(void) reentrant;//串口中断服务子程序
53 =2
54 =2 //收发缓冲区长度
C51 COMPILER V7.50 YY2 03/26/2006 08:30:32 PAGE 13
55 =2 #define LenTxBuf 2000 //Don't too small,because it will cause display abnormal.
56 =2 #define LenRxBuf 50
57 =2
58 =2 #define MaxLenStr 100 /*buf[MaxLenStr+1] for '\0'*/
59 =2
60 =2 #define TABNum 4 //TAB键移动长度
61 =2
25 =1 #include <reg51.h>
1 =2 /*--------------------------------------------------------------------------
2 =2 REG51.H
3 =2
4 =2 Header file for generic 80C51 and 80C31 microcontroller.
5 =2 Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
6 =2 All rights reserved.
7 =2 --------------------------------------------------------------------------*/
8 =2
9 =2 #ifndef __REG51_H__
10 =2 #define __REG51_H__
11 =2
12 =2 /* BYTE Register */
13 =2 sfr P0 = 0x80;
14 =2 sfr P1 = 0x90;
15 =2 sfr P2 = 0xA0;
16 =2 sfr P3 = 0xB0;
17 =2 sfr PSW = 0xD0;
18 =2 sfr ACC = 0xE0;
19 =2 sfr B = 0xF0;
20 =2 sfr SP = 0x81;
21 =2 sfr DPL = 0x82;
22 =2 sfr DPH = 0x83;
23 =2 sfr PCON = 0x87;
24 =2 sfr TCON = 0x88;
25 =2 sfr TMOD = 0x89;
26 =2 sfr TL0 = 0x8A;
27 =2 sfr TL1 = 0x8B;
28 =2 sfr TH0 = 0x8C;
29 =2 sfr TH1 = 0x8D;
30 =2 sfr IE = 0xA8;
31 =2 sfr IP = 0xB8;
32 =2 sfr SCON = 0x98;
33 =2 sfr SBUF = 0x99;
34 =2
35 =2
36 =2 /* BIT Register */
37 =2 /* PSW */
38 =2 sbit CY = 0xD7;
39 =2 sbit AC = 0xD6;
40 =2 sbit F0 = 0xD5;
41 =2 sbit RS1 = 0xD4;
42 =2 sbit RS0 = 0xD3;
43 =2 sbit OV = 0xD2;
44 =2 sbit P = 0xD0;
45 =2
46 =2 /* TCON */
47 =2 sbit TF1 = 0x8F;
48 =2 sbit TR1 = 0x8E;
49 =2 sbit TF0 = 0x8D;
50 =2 sbit TR0 = 0x8C;
51 =2 sbit IE1 = 0x8B;
52 =2 sbit IT1 = 0x8A;
53 =2 sbit IE0 = 0x89;
54 =2 sbit IT0 = 0x88;
C51 COMPILER V7.50 YY2 03/26/2006 08:30:32 PAGE 14
55 =2
56 =2 /* IE */
57 =2 sbit EA = 0xAF;
58 =2 sbit ES = 0xAC;
59 =2 sbit ET1 = 0xAB;
60 =2 sbit EX1 = 0xAA;
61 =2 sbit ET0 = 0xA9;
62 =2 sbit EX0 = 0xA8;
63 =2
64 =2 /* IP */
65 =2 sbit PS = 0xBC;
66 =2 sbit PT1 = 0xBB;
67 =2 sbit PX1 = 0xBA;
68 =2 sbit PT0 = 0xB9;
69 =2 sbit PX0 = 0xB8;
70 =2
71 =2 /* P3 */
72 =2 sbit RD = 0xB7;
73 =2 sbit WR = 0xB6;
74 =2 sbit T1 = 0xB5;
75 =2 sbit T0 = 0xB4;
76 =2 sbit INT1 = 0xB3;
77 =2 sbit INT0 = 0xB2;
78 =2 sbit TXD = 0xB1;
79 =2 sbit RXD = 0xB0;
80 =2
81 =2 /* SCON */
82 =2 sbit SM0 = 0x9F;
83 =2 sbit SM1 = 0x9E;
84 =2 sbit SM2 = 0x9D;
85 =2 sbit REN = 0x9C;
86 =2 sbit TB8 = 0x9B;
87 =2 sbit RB8 = 0x9A;
88 =2 sbit TI = 0x99;
89 =2 sbit RI = 0x98;
90 =2
91 =2 #endif
26 =1
27 =1 //用户头文件加在最后面
28 =1 //Your head file add here.
2
3
4 void TaskStartyya(void *yydata) ;
5 void TaskStartyyb(void *yydata) ;
6 void TaskStartyyc(void *yydata) ;
7 void TaskStartyy(void *yydata) ;
8
9
10 OS_STK TaskStartStkyya[MaxStkSize];//注意:我在ASM文件中设置?STACK空间为40H即64。
11 OS_STK TaskStartStkyyb[MaxStkSize];
12 OS_STK TaskStartStkyyc[MaxStkSize];
13 OS_STK TaskStartStkyy[MaxStkSize];
14
15
16 sbit LED0=P1^0;
17 sbit LED1=P1^1;
18 sbit LED2=P1^2;
19 sbit LED3=P1^3;
20 sbit LED4=P3^3;
21 sbit LED5=P3^4;
22 sbit LED6=P3^5;
23 int i=0;
C51 COMPILER V7.50 YY2 03/26/2006 08:30:32 PAGE 15
24
25 OS_EVENT *sem1;
26 void main(void)
27 {
28 1 OSInit();
29 1 LED0=0;
30 1 sem1 = OSSemCreate(0);
31 1 InitTimer0();
32 1 InitSerial();
33 1 InitSerialBuffer();
34 1
35 1 OSTaskCreate(TaskStartyya, (void *)0, &TaskStartStkyya[0],8);
36 1 OSTaskCreate(TaskStartyyb, (void *)0, &TaskStartStkyyb[0],3);
37 1 // OSTaskCreate(TaskStartyyc, (void *)0, &TaskStartStkyyc[0],4);
38 1 // OSTaskCreate(TaskStartyy, (void *)0, &TaskStartStkyya[0],2);
39 1 OSStart();
40 1
41 1
42 1
43 1
44 1 }
45
46
47 /*
48 void TaskStartyya(void *yydata) reentrant
49 {
50 yydata=yydata;
51 clrscr();
52 PrintStr("\n\t\t*******************************\n");
53 PrintStr("\t\t* Hello! The world. *\n");
54 PrintStr("\t\t*******************************\n\n\n");
55
56 for(;;)
57 {
58 PrintStr("\tAAAAAA111111 is active.\n");
59 OSTimeDly(OS_TICKS_PER_SEC);
60 }
61 }
62
63 void TaskStartyyb(void *yydata) reentrant
64 {
65 yydata=yydata;
66
67 for(;;)
68 {
69 PrintStr("\tBBBBBB333333 is active.\n");
70 OSTimeDly(3*OS_TICKS_PER_SEC);
71 }
72 }
73
74 void TaskStartyyc(void *yydata) reentrant
75 {
76 yydata=yydata;
77
78 for(;;)
79 {
80 PrintStr("\tCCCCCC666666 is active.\n");
81 OSTimeDly(6*OS_TICKS_PER_SEC);
82 }
83 }
84
85
C51 COMPILER V7.50 YY2 03/26/2006 08:30:32 PAGE 16
86
87 void TaskStartyy(void *yydata)
88 {
89 INT8U err;
90 unsigned char *msg;
91
92 while(1)
93 {
94
95 msg = OSSemPend(CommQ, 0, &err);
96
97 LED0=1;
98 OSTimeDly(6*OS_TICKS_PER_SEC);
99 LED0=0;
100 OSTimeDly(6*OS_TICKS_PER_SEC);
101
102 }
103 }
104
105 */
106
107 void TaskStartyya(void *yydata)
108 {
109 1 //int i=2;
110 1 //unsigned char a[2]={1,2,3} ;
111 1 yydata =yydata;
112 1 while(1)
113 1 {
114 2 OSTimeDly(30);
115 2 OSSemPost(sem1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -