📄 4 59s count.lst
字号:
C51 COMPILER V8.08 4_59S_COUNT 10/28/2008 00:42:17 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE 4_59S_COUNT
OBJECT MODULE PLACED IN 4 59S COUNT.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4 59S COUNT.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //59 秒自动计数器
2 #include<reg51.h>
3 #define uchar unsigned char
4 uchar j,k,i,a,A1,A2,second;
5 sbit dula=P2^6; //锁存器控制端定义
6 sbit wela=P2^7;
7 uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
8 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数字编码
9 void delay(uchar i) //延时函数
10 {
11 1 for(j=i;j>0;j--)
12 1 for(k=125;k>0;k--);
13 1 }
14 void display(uchar sh_c,uchar g_c) //显示函数
15 {
16 1 dula=0;
17 1 //wela=0;
18 1
19 1 P0=table[sh_c]; //显示十位
20 1 dula=1;
21 1 dula=0;
22 1 P0=0xfe;
23 1 wela=1;
24 1 wela=0;
25 1 delay(5); //亮 5ms */
26 1
27 1 P0=0; //------------
28 1 dula=1; //该部分仿真必须要。
29 1 dula=0; //因为每次下一位的段选打开后,码值会先赋值给上一位,
30 1 P0=0xfe; //从而改变上一位的显示。然后再打开下一位的位选。
31 1 wela=1; //
32 1 wela=0; //------------
33 1
34 1 P0=table[g_c]; //显示个位
35 1 dula=1;
36 1 dula=0;
37 1 P0=0xfd;
38 1 wela=1;
39 1 wela=0;
40 1 delay(5); //亮 5ms
41 1
42 1 P0=0; //------------
43 1 dula=1; //该部分仿真需要
44 1 dula=0; //
45 1 P0=0xfd; //
46 1 wela=1; //
47 1 wela=0; //-------------
48 1 }
49
50 void main() //主函数
51 {
52 1 while(1)
53 1 {
54 2 second++; //秒加一
55 2 if(second==60) //判断是否到 60
C51 COMPILER V8.08 4_59S_COUNT 10/28/2008 00:42:17 PAGE 2
56 2 second=0; //如果到了则清零
57 2 A1=second/10; //没到则分离出十位和个位
58 2 A2=second%10;
59 2 for(a=200;a>0;a--) //显示部分。至于时间大概是多少 //仿真时 100改为200
60 2 { //请用户用软件仿真看时间约等于 1 秒
61 3 display(A1,A2);
62 3 };//便可,如果需要精确定时请用定时器
63 2 }
64 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 136 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -