📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 08/27/2008 16:58:18 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\obj\main.obj
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE Source\main.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\lst\main.lst) OBJECT(
-.\obj\main.obj)
line level source
1 /*
2
3 www.mcu123.net/bbs
4 学习论坛
5
6 本例程ucOS-II 版本为2.51
7
8 注:
9 此例程运行于内RAM > 1024 Byte的51内核的单片机即可。
10 比 如 : SST89E564RD ,STC89C516RD 等
11
12
13 S
14 */
15
16
17 #include "includes.h"
18 #include "hc164.h"
19 #include "at24c64.h"
20
21 sbit SIN=P1^0;
22 sbit SetKey=P2^0;
23 sbit AddKey=P2^1;
24 sbit SubKey=P2^2;
25 sbit DisLed=P2^4;
26 sbit SetLed=P2^3;
27 sbit KT1=P2^6;
28 sbit KT2=P2^7;
29 sbit Sk=P3^3;
30
31 sbit Speaker=P0^6;
32
33 bit fDis=0;
34 bit error=0;
35 INT8U m=0,b=0,e=0;
36 INT8U i=0,dat=0,ndis=0,nerr=0,num=0;
37 INT16U nSet=0,nTimeOut=0;
38
39 void dly10ms(void)
40 {
41 1 unsigned char i,j,k;
42 1 for(i=5;i>0;i--)
43 1 for(j=4;j>0;j--)
44 1 for(k=248;k>0;k--);
45 1 }
46 void dly1s(void)
47 {
48 1 unsigned char h,i,j,k;
49 1 for(h=5;h>0;h--)
50 1 for(i=4;i>0;i--)
51 1 for(j=116;j>0;j--)
52 1 for(k=214;k>0;k--);
53 1 }
54
C51 COMPILER V8.02 MAIN 08/27/2008 16:58:18 PAGE 2
55
56 OS_STK TaskStartStk1[MaxStkSize],TaskStartStk2[MaxStkSize],TaskStartStk3[MaxStkSize];
57
58 void Task1(void *nouse) reentrant;
59 void Task2(void *nouse) reentrant;
60 void Task3(void *nouse) reentrant;
61 INT8U ReadWa(void);
62 void display(INT8U dat);
63 void Buzzer(void);
64 void ErrorBz(void);
65
66 void main(void)
67 {
68 1 OSInit();
69 1 InitHardware();
70 1 OSTaskCreate(Task1, (void *)0, &TaskStartStk1[0],2);
71 1 OSTaskCreate(Task2, (void *)0, &TaskStartStk2[0],3);
72 1 // OSTaskCreate(Task3, (void *)0, &TaskStartStk3[0],4);
73 1 OSStart();
74 1 }
75
76 void Task1(void *nouse) reentrant
77 {
78 1 nouse=nouse;
79 1 for(;;)
80 1 {
81 2 if(Sk==0)
82 2 {
83 3 KT1=0;
84 3 nTimeOut=65535;
85 3 while(nTimeOut--)
86 3 {
87 4 OS_ENTER_CRITICAL();
88 4 dat=ReadWa();
89 4 OS_EXIT_CRITICAL();
90 4 if(dat>0)
91 4 break;
92 4 }
93 3 if(dat<ndis&&(dat>0||nTimeOut==0))
94 3 {
95 4 error=1;
96 4 ErrorBz();
97 4 nerr=0;
98 4 num++;
99 4 }
100 3 else
101 3 num=0;
102 3 nerr++;
103 3 if(error==1&&nerr==2)
104 3 {
105 4 if(num>1)
106 4 nerr=1;
107 4 else
108 4 nerr=0;
109 4 error=0;
110 4 KT2=0;
111 4 }
112 3 b++;
113 3 if(b>9)
114 3 b=0;
115 3 KT1=1;
116 3 }
C51 COMPILER V8.02 MAIN 08/27/2008 16:58:18 PAGE 3
117 2 if(Sk==1)
118 2 KT2=1;
119 2 OSTimeDly(OS_TICKS_PER_SEC*3);
120 2 }
121 1 }
122
123 void Task2(void *nouse) reentrant
124 {
125 1 nouse=nouse;
126 1 for(;;)
127 1 {
128 2 OS_ENTER_CRITICAL();
129 2 if(SetKey==0)
130 2 {
131 3 dly10ms();
132 3 if(SetKey==0)
133 3 {
134 4 while(SetKey==0);
135 4 nSet++;
136 4 if(nSet==1)
137 4 {
138 5 fDis=0;
139 5 DisLed=0;
140 5 SetLed=1;
141 5 e=0;
142 5 b=0;
143 5 m=0;
144 5 i=AT24c64_read_byte(0x0002);
145 5 display(i);
146 5 }
147 4 if(nSet==2)
148 4 {
149 5 nSet=0;
150 5 fDis=1;
151 5 DisLed=1;
152 5 SetLed=0;
153 5 e=0;
154 5 b=0;
155 5 m=0;
156 5 ndis=AT24c64_read_byte(0x0000);
157 5 display(ndis);
158 5 AT24c64_write_byte(0x0002,dat);
159 5 }
160 4 Buzzer();
161 4 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -