📄 digitallight.lst
字号:
C51 COMPILER V7.02a DIGITALLIGHT 03/09/2009 21:56:55 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE DIGITALLIGHT
OBJECT MODULE PLACED IN DigitalLight.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DigitalLight.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //从小到大计数
2 #include "reg51.h"
3
4 //管脚定义 74HC138(3-8)译码器输入控制信号线
5 sbit p10 = P1^0;
6 sbit p11 = P1^1;
7 sbit p12 = P1^2;
8
9 unsigned char table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管 0-9 表
10
11 void delay(unsigned int n);
12 void display_one_digit(unsigned int num,unsigned int pos,unsigned int delay_time);
13 void display_integer(unsigned int n,unsigned int delay_time);
14
15 void main(void)
16 {
17 1 int i;
18 1 for(i=0;i<10000;i++)
19 1 display_integer(i,20);
20 1 }
21
22 void display_integer(unsigned int n,unsigned int delay_time)
23 {
24 1 int pos,num,res,i,j;
25 1 unsigned int ary[8];
26 1
27 1 pos = 0;
28 1 num = n;
29 1 do
30 1 {
31 2 res = num%10;
32 2 num = num/10;
33 2 ary[pos++] = res;
34 2 }
35 1 while(num>0);
36 1
37 1 for(j=0;j<delay_time/pos;j++)
38 1 {
39 2 for(i=0;i<pos;i++)
40 2 display_one_digit(ary[i],i,1);
41 2 }
42 1 }
43
44 /**
45 * pos: 0-7 显示位数(个十百千...)
46 * num: num 显示数字(0-9)
47 */
48 void display_one_digit(unsigned int num,unsigned int pos,unsigned int delay_time)
49 {
50 1 pos = ~pos;
51 1 p10 = pos&0x01;
52 1 p11 = (pos&0x02)>>1;
53 1 p12 = (pos&0x04)>>2;
54 1 P2 = table[num];
55 1 delay(delay_time);
C51 COMPILER V7.02a DIGITALLIGHT 03/09/2009 21:56:55 PAGE 2
56 1 P2 = 0;
57 1 }
58
59 void delay(unsigned int n)
60 {
61 1 unsigned int i,j;
62 1 i=n;
63 1 while(i--){
64 2 j=255;
65 2 while(j--);
66 2 }
67 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 305 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 30
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 + -