📄 main.lst
字号:
C51 COMPILER V8.18 MAIN 11/30/2009 13:35:23 PAGE 1
C51 COMPILER V8.18, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\OutPut\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Source\main.c LARGE OPTIMIZE(SIZE) DEBUG OBJECTEXTEND PRINT(.\OutPut\main.l
-st) OBJECT(.\OutPut\main.obj)
line level source
1 /* 本例程uCOS-II 版本为2.51*/
2 #include "includes.h"
3
4 sbit POSITIVE=P2^5;
5 sbit NEGATIVE=P2^4;
6 sbit RUN=P2^0;
7 sbit ALARM=P2^3;
8 sbit BITR=P2^7;
9 sbit SEGR=P2^6;
10 sbit BITG=P2^1;
11 sbit SEGG=P2^2;
12 sbit KEY1=P0^0;
13 sbit KEY2=P0^1;
14 sbit KEY3=P0^2;
15 sbit KEY4=P0^3;
16
17 OS_STK Task1Stk[MaxStkSize+1]; //任务堆栈
18 OS_STK Task2Stk[MaxStkSize+1];
19 OS_STK Task3Stk[MaxStkSize+1];
20 OS_STK Task4Stk[MaxStkSize+1];
21 OS_STK Task5Stk[MaxStkSize+1];
22
23 INT8U code LED[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//LED编码表
24 INT8U code g[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位码控制表
25 INT8U xdata flashbit=0;
26 INT8U xdata flash=0;
27 INT8U xdata adcr;
28 INT16U xdata sec=0;
29 INT8U xdata key_last0=1,key_last1=1,key_last2=1,key_last3=1,key_num=0xff;
30 INT8U xdata sec0,sec1,minute0,minute1;
31 INT8U xdata dispressure=0;
32 INT8U xdata HIlimit=80,LOWlimit=20;
33 INT8U err;
34
35 //----------------------- AD转换值的刷新 -----------------//
36 unsigned char Get_data(void) reentrant
37 {
38 1 unsigned int xdata adc_res0,adc_res1;
39 1
40 1 ADC_CONTR|=0x08; //启动A/D转换
41 1 while((ADC_CONTR&0x10)==0); //等待A/D转换结束
42 1 ADC_CONTR&=0xE7;
43 1 adc_res0=ADC_RES;
44 1 adc_res1=adc_res0*39/100; //进行相应的工程变换
45 1 return((unsigned char)(adc_res1)); //BCD编码
46 1 }
47 //--------------------- 显示数据发送 ---------------------//
48 void sendspi(unsigned char spidata,unsigned char isBit) reentrant
49 {
50 1 unsigned char xdata t,spi1_status=0;
51 1 //EA=0; //关中断, 为了避免传输数据过程中被中断而显示乱码
52 1 SPDAT=spidata;
53 1 while(spi1_status==0) //等传输完毕
54 1 {
C51 COMPILER V8.18 MAIN 11/30/2009 13:35:23 PAGE 2
55 2 spi1_status=SPSTAT;
56 2 spi1_status=spi1_status&0x80;
57 2 }
58 1 if (isBit==1)
59 1 {
60 2 BITR=1;
61 2 for(t=0;t<15;t++);
62 2 BITR=0; //位锁存信号输出
63 2 }
64 1 else
65 1 {
66 2 SEGR=1;
67 2 for(t=0;t<15;t++);
68 2 SEGR=0; //段锁存信号输出
69 2 }
70 1 SPSTAT=0xC0; //写1清SPIF标志位
71 1 //EA=1; //开中断
72 1 }
73 //--------------------- 显示数据子程序--------------------//
74 void displayLED(unsigned char* disbuf,unsigned char flashbit) reentrant
75 {
76 1 unsigned char xdata i;
77 1
78 1 for(i=0;i<8;i++)
79 1 {
80 2 SEGG=1;
81 2 sendspi(g[i],1);
82 2 sendspi(disbuf[i],0);
83 2 if(i+1==flashbit) SEGG=flash;
84 2 else SEGG=0;
85 2 OSTimeDlyHMSM(0,0,0,2);
86 2 }
87 1 }
88 //----------------------- 获取按键 -----------------------//
89 void getkey(void) reentrant
90 {
91 1 if(KEY1==0&&key_last0==1)
92 1 {
93 2 OSTimeDlyHMSM(0,0,0,20);
94 2 if(KEY1==0&&key_last0==1)
95 2 {
96 3 key_num=0;
97 3 key_last0=0;
98 3 }
99 2 else if(KEY1==1) key_last0=1;
100 2 }
101 1 else if(KEY1==1) key_last0=1;
102 1
103 1 if(KEY2==0&&key_last1==1)
104 1 {
105 2 OSTimeDlyHMSM(0,0,0,20);
106 2 if(KEY2==0&&key_last1==1)
107 2 {
108 3 key_num=1;
109 3 key_last1=0;
110 3 }
111 2 else if(KEY2==1) key_last1=1;
112 2 }
113 1 else if(KEY2==1) key_last1=1;
114 1
115 1 if(KEY3==0&&key_last2==1)
116 1 {
C51 COMPILER V8.18 MAIN 11/30/2009 13:35:23 PAGE 3
117 2 OSTimeDlyHMSM(0,0,0,20);
118 2 if(KEY3==0&&key_last2==1)
119 2 {
120 3 key_num=2;
121 3 key_last2=0;
122 3 }
123 2 else if(KEY3==1) key_last2=1;
124 2 }
125 1 else if(KEY3==1) key_last2=1;
126 1
127 1 if(KEY4==0&&key_last3==1)
128 1 {
129 2 OSTimeDlyHMSM(0,0,0,20);
130 2 if(KEY4==0&&key_last3==1)
131 2 {
132 3 key_num=3;
133 3 key_last3=0;
134 3 }
135 2 else if(KEY4==1) key_last3=1;
136 2 }
137 1 else if(KEY4==1) key_last3=1;
138 1 }
139 //----------------------按键处理子程序 -------------------//
140 void keyhandle(void) reentrant
141 {
142 1 unsigned char xdata low0,low1,hi0,hi1;
143 1
144 1 low0=LOWlimit%10;
145 1 low1=LOWlimit/10;
146 1 hi0=HIlimit%10;
147 1 hi1=HIlimit/10;
148 1 switch(key_num)
149 1 {
150 2 case 0:
151 2 if(flashbit==8) flashbit=0;
152 2 flashbit++;
153 2 dispressure=1;
154 2 break;
155 2 case 1:
156 2 if(flashbit==1)
157 2 {
158 3 low0++;
159 3 if(low0==10) low0=0;
160 3 }
161 2 if(flashbit==2)
162 2 {
163 3 low1++;
164 3 if(low1==10) low1=0;
165 3 }
166 2 if(flashbit==3)
167 2 {
168 3 hi0++;
169 3 if(hi0==10) hi0=0;
170 3 }
171 2 if(flashbit==4)
172 2 {
173 3 hi1++;
174 3 if(hi1==10) hi1=0;
175 3 }
176 2 if(flashbit==5)
177 2 {
178 3 sec0++;
C51 COMPILER V8.18 MAIN 11/30/2009 13:35:23 PAGE 4
179 3 if(sec0==10) sec0=0;
180 3 }
181 2 if(flashbit==6)
182 2 {
183 3 sec1++;
184 3 if(sec1==6) sec1=0;
185 3 }
186 2 if(flashbit==7)
187 2 {
188 3 minute0++;
189 3 if(minute0==10) minute0=0;
190 3 }
191 2 if(flashbit==8)
192 2 {
193 3 minute1++;
194 3 if(minute1==6) minute1=0;
195 3 }
196 2 break;
197 2 case 2:
198 2 if(flashbit==1)
199 2 {
200 3 if(low0==0) low0=10;
201 3 low0--;
202 3 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -