📄 dingshi.lst
字号:
C51 COMPILER V7.09 DINGSHI 04/24/2007 21:33:45 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE DINGSHI
OBJECT MODULE PLACED IN dingshi.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dingshi.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*********************************************************************/
2 //
3 // 定时
4 // ancleyan 2007.04.23
5 /*********************************************************************/
6 //使用AT89C51单片机,3MHZ晶振,P1口输入,P2口作列扫描,P1数据输出,用共阳LED数码管
7
8 #include"reg51.h"
9 #define char unsigned char
10 char data time[6]={0x0b,0x0b,0x0b,0x0b,0x0b,0x0b}; //当开启之后显示最下面一行
11 char code dis_7[14]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xf7,0xbf,0xfe};
12 char code scan_con[7]={0x01,0x02,0x04,0x08,0x10, 0x20, 0x00}; // 列扫描控制字
13 //*********************第1个 2个 3个 4个 5个 6个 全不亮
14 char data t=0; //供键盘输入的数存储进数组时使用
15 char data count=13;
16 sbit clean=P3^2;
17 sbit aa=P3^0;
18 sbit bb=P3^1;
19 char data lock=0;
20 char data lockfun14=0;
21
22 //*********外部中断0 完成清零功能 *********
23 void reset(void) interrupt 0 using 1 // 利用中断清零
24 {
25 1 char i;
26 1 //if(){bb=0;}
27 1 aa=1;
28 1 //else{
29 1 for(i=0;i<6;i++) {time[i]=0x0c;}
30 1 ////gg=0;//delay1ms(200);//P2=0;
31 1 clean=1;//记得将P3还原 对产生中断的信号还原
32 1 t=0; //还原供键盘输入的数存储进数组时使用 如果不还原 下次存储是从上次中断的地方接着存储
33 1 lock=0;
34 1 TR0=0;//关闭定时器0
35 1 EA=0;
36 1 //}
37 1 //return t;
38 1 }
39
40 //*******定时器0 50MS定时中断
41 void delay50ms() interrupt 1 using 0
42 { void fun15(void);
43 1 //while(1)
44 1 //{ //0000
45 1 count--;
46 1 EA=1;ET0=1;TMOD=0x01;
47 1 TH0=(65536-15526)/256;
48 1 TL0=(65536-15536)%256;
49 1 //*****原来使用的确定键功能函数 void okset(void)*********//
50 1 if(time[5]==0xff) //&&count==0
51 1 { //1111
52 2 if(time[4]==00)
53 2 { //2222
54 3 if(time[3]==0x00)
55 3 { //3333
C51 COMPILER V7.09 DINGSHI 04/24/2007 21:33:45 PAGE 2
56 4 if(time[2]==0x00)
57 4 { //4444
58 5 if(time[1]==0x00)
59 5 { //5555
60 6 if(time[0]==0x00)
61 6 {aa=0;TR0=0;}// 一定要关计时器0 如果不关 7段显示码上无显示 实际上还在继续倒计时
62 6 else
63 6 {time[0]--;time[1]=9;time[2]=5;time[3]=9;time[4]=5;time[5]=9;}
64 6 } //5555
65 5 else
66 5 {time[1]--;time[2]=5;time[3]=9;time[4]=5;time[5]=9;}
67 5 } //4444
68 4 else
69 4 {time[2]--;time[3]=9;time[4]=5;time[5]=9;}
70 4 } //3333
71 3 else
72 3 {time[3]--;time[4]=5;time[5]=9;}
73 3 } //2222
74 2 else
75 2 {time[4]--;time[5]=9;}
76 2 } //1111
77 1 else
78 1 {
79 2 if(count==0)
80 2 { count=13;TR0=1;time[5]--;}//
81 2 }
82 1 //} //0000
83 1 }
84 //*********设置键的功能**********
85 void settime(void)
86 {
87 1 if(t==0) //防止输入数据、计时过程中按下设置键
88 1 {
89 2 char i;
90 2 for(i=0;i<6;i++)
91 2 {time[i]=0x0d;}
92 2 lock=1;lockfun14=1;
93 2 }
94 1 }
95 //*******1毫秒延时程序********
96 delay1ms(int t1)
97 {
98 1 char i,j;
99 1 for(i=0;i<t1;i++)
100 1 for(j=0;j<120;j++)
101 1 {;}
102 1 }
103 //*******10毫秒延时程序********
104 //delay10ms(int t2)
105 //{
106 // int i,j;
107 //for(i=0;i<t2;i++)
108 //for(j=0;j<1200;j++)
109 //{;}
110 //}
111
112 //**********功能函数15 发出INT0中断请求脉冲清零***********************************
113 void fun15(void)
114 {
115 1 clean=0;//delay1ms(1);clean=1;
116 1 }
117 //**********功能函数14 发出T0中断请求脉冲计时***********************************
C51 COMPILER V7.09 DINGSHI 04/24/2007 21:33:45 PAGE 3
118 void fun14(void)
119 {
120 1 if(t==6)
121 1 {TR0=1;}
122 1 //ff=0;
123 1 }
124 //**********功能函数13***********************************
125 void fun13(void)
126 {
127 1 //delay1ms(200);
128 1 // okset();
129 1 //ee=0;
130 1 }
131 //**********功能函数12***********************************
132 void fun12(void)
133 {
134 1 //delay1ms(200);
135 1 //dd=0;
136 1 }
137 //**********功能函数11***********************************
138 void fun11(void)
139 {
140 1 //delay1ms(200);
141 1 //cc=0;
142 1 }
143 //**********功能函数10***********************************
144 void fun10(void)
145 {
146 1 settime();
147 1 //password();
148 1 // okset();
149 1 }
150 //**********功能函数9***********************************
151 char fun9(void)
152 { if(lock==1&&t<6)//平时数字键无效 只有按下设置键才有效
153 1 {if(t!=2&&t!=4){
154 3 void scan_7(void);//对被调用函数的说明
155 3 while(P1!=0xfe){scan_7();} //while(P3!=0xfe);
156 3 //delay1ms(200); //防止由于按键未放开 输入一串数字 可以加入一个while(P3!=0xfe)语句 直到放开键才动
-作
157 3 time[t]=9; //用delay1ms(100)语句可以按住键之后重复输入
158 3 //aa=0;
159 3 return t++;}
160 2 }
161 1 }
162 //**********功能函数8***********************************
163 char fun8(void)
164 {if(lock==1&&t<6) //加入t<6 防止输入的定时时间多于6位数字
165 1 {if(t!=2&&t!=4){
166 3 void scan_7(void); //对被掉函数的说明
167 3 while(P1!=0xfe){scan_7();} //加入这两条语句的目的是防止闪烁
168 3 //while(P3!=0xfe);
169 3 //delay1ms(200);
170 3 time[t]=8;
171 3 // bb=0; //函数功能测试灯
172 3 return t++;}}
173 1 }
174 //**********功能函数7***********************************
175 char fun7(void)
176 { if(lock==1&&t<6)
177 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -