📄 counter3.lst
字号:
C51 COMPILER V7.06 COUNTER3 12/07/2006 03:10:11 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE COUNTER3
OBJECT MODULE PLACED IN counter3.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE counter3.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 ////////////////////////////
2 //private counter
3 //cjy 2006 11.28 at GDUT
4 ///////////////////////////
5 #include "reg52.h"
6 #include "math.h"
7 #include "24c02.h"
8 ////////端口定义///////////
9 #define com_port P0//共阳
10 #define bit_port P2 //位选
11 sbit motor =P3^1;//总计数LED
12 sbit src =P3^0;//可控硅
13 sbit relay =P3^6;//继电器
14 sbit count_in =P3^2;//计数传感器输入
15 ///////按键定义///////////
16 #define set 1
17 #define right 2
18 #define up 3
19 #define rst 4
20 /////////led数码管笔画表////////////
21 unsigned char code led_tab[]={
22 0xC0,/*0*/
23 0xF9,/*1*/
24 0xA4,/*2*/
25 0xB0,/*3*/
26 0x99,/*4*/
27 0x92,/*5*/
28 0x82,/*6*/
29 0xF8,/*7*/
30 0x80,/*8*/
31 0x90,/*9*/
32 0x88,/*A*/
33 0x83,/*b*/
34 0xBF,/*-*/};
35 ///////函数声明/////////////////////
36 void sys_init(void);
37 void led_display(void);
38 void conver(void);
39 unsigned char scan_key(void);
40 unsigned get_key(void);
41 void delay(unsigned int t);
42 void read_all(void);
43 void write_all(void);
44 void write_fall(void);
45 void write_rise(void);
46 ///////变量声明/////////////////////
47 struct buff//定义一个结构体
48 {
49 unsigned char count_bits[6];//
50 unsigned long count_num;
51 };
52 struct buff count_buff[5];
53 struct buff *p;
54 char count_bit;
55 unsigned char status=0;
C51 COMPILER V7.06 COUNTER3 12/07/2006 03:10:11 PAGE 2
56 unsigned int fall,rise;
57 bit flash_all=0;
58 bit last_status=0;
59 unsigned char add_time=0;
60 ////////////主函数//////////////////
61 void main(void)
62 { // i=10,temp;
63 1 sys_init();
64 1 x24c02_init();
65 1 count_bit=-1;
66 1 status=0;
67 1 p=count_buff;
68 1 read_all(); //for (temp=0;temp<100;temp++) x24c02_write(temp, 0);
69 1 ///x24c02_write(10, 1);y=x24c02_read(10);p->count_num= y;p->count_num<<=8;y=123;p->count_num|=y;
70 1 conver();
71 1 while(1)
72 1 {
73 2 switch(get_key())
74 2 {
75 3 case set:
76 3 flash_all=0;
77 3 p++;status++;count_bit=-1;
78 3 if(status>3)
79 3 {p=count_buff; status=0;}
80 3 write_all();
81 3 break;
82 3 case right:
83 3 flash_all=(status==0);
84 3 count_bit--;
85 3 if(count_bit<0)
86 3 {
87 4 if(status==1||status==2)
88 4 count_bit=3 ;
89 4 else
90 4 count_bit=5;
91 4 }
92 3 break;
93 3 case up:
94 3 if(count_bit>0)
95 3 {
96 4 if((p->count_bits[count_bit])==9)
97 4 p->count_num-=9*pow(10,(count_bit));
98 4 else
99 4 p->count_num+=pow(10,count_bit);
100 4 }
101 3 if(status==0&&flash_all==1)
102 3 {
103 4 p=count_buff;
104 4 flash_all=0;
105 4 count_bit=-1;
106 4 write_all();
107 4 }
108 3 break;
109 3 case rst:
110 3 status=0;
111 3 p=count_buff;
112 3 flash_all=0;
113 3 count_bit=-1;
114 3 count_buff[0].count_num=0;
115 3 write_all();
116 3 break;
117 3 default:
C51 COMPILER V7.06 COUNTER3 12/07/2006 03:10:11 PAGE 3
118 3 ;
119 3 break;
120 3 }
121 2 conver();
122 2 led_display();
123 2 }
124 1
125 1 }
126 //T0中断服务程序
127 void timer0_int (void) interrupt 1
128 {
129 1
130 1 if(last_status^count_in)
131 1 {
132 2 if(last_status)
133 2 {
134 3 fall++;
135 3 if(fall>=count_buff[2].count_num)
136 3 {
137 4 fall=0;
138 4 src=0;relay=0;
139 4 }
140 3 write_fall();
141 3 }
142 2 else
143 2 {
144 3 rise++;
145 3 if(rise>=(count_buff[1].count_num-count_buff[2].count_num))
146 3 {
147 4 rise=0;
148 4 count_buff[0].count_num++; //write_all();
149 4 src=1;relay=1;
150 4 }
151 3 write_rise();
152 3 }
153 2 if(count_buff[1].count_num<=count_buff[0].count_num)
154 2 {
155 3 motor=1;
156 3 relay=1;
157 3 }
158 2 last_status=count_in;
159 2 }
160 1
161 1 }
162 void sys_init(void)
163 {
164 1 //这里编写需要初始化的参数
165 1 TMOD=0x02;//T0,方式2,8位自动重装
166 1 TH0=0;//12MHZ 晶振时,0.256ms
167 1 TL0=0;
168 1 ET0=1;
169 1 EA=1;
170 1 TR0=1;//开定时器
171 1 }
172
173 ////////////////////////////////////////////////////
174 void conver(void)
175 {
176 1 unsigned long int i;
177 1 unsigned char j;
178 1 i=p->count_num;
179 1 for(j=0;j<6;j++)
C51 COMPILER V7.06 COUNTER3 12/07/2006 03:10:11 PAGE 4
180 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -