📄 ex4-8.lst
字号:
C51 COMPILER V8.02 EX4_8 12/12/2008 20:39:59 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE EX4_8
OBJECT MODULE PLACED IN ex4-8.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ex4-8.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 标题:范例 4-8
3 版本:1.0
4 Target:89S51
5 程序描述:这个范例说明如何使用8051 的Port 1连接到四颗七段显示器,PORT 0的低4位分别控制这四颗共阳七段显示器
-,让四颗共阳七段显示器使用扫描的方式轮流
6 显示数字。
7 P2 ---段码
8 P04---个
9 P05---十
10 P06---百
11 P07---千
12 这四颗七段显示器将显示0到 9999。 */
13 /* ***************************************************** */
14 #include <REGX51.H>
15 #define TIMER0_COUNT 0xFC18 /* 10000h-(12,000,000/(12*1000)) */
16 #define OUT_SEG P2 //输出段码
17 #define OUT_SCAN P0 //输出扫描码
18 code
19 seven_seg[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};//0123456789,0点亮有效
20 code scan[4]={0X70,0XB0,0XD0,0XE0};//个十百千,0点亮有效
21 unsigned char counter[4]={0,0,0,0};//个十百千
22 unsigned char i=0;
23 int timer0_tick;
24 static void timer0_isr(void) interrupt TF0_VECTOR using 1
25 {
26 1 TR0=0;
27 1 TL0=(TIMER0_COUNT & 0x00FF);
28 1 TH0=(TIMER0_COUNT >> 8);
29 1 TR0=1;
30 1 OUT_SEG=seven_seg[counter[i]];
31 1 OUT_SCAN=scan[i];
32 1 i++;
33 1 if(i==4) i=0;
34 1 timer0_tick++;
35 1 if (timer0_tick==1000) {
36 2 timer0_tick=0;
37 2 counter[0]++; // 个位数加1
38 2 if (counter[0]==10) { // 如果个位数等于10,则执行以下的部分
39 3 counter[0]=0; // 个位数变成0
40 3 counter[1]++; // 十位数加1
41 3 if(counter[1]==10){ // 如果十位数等于10,则执行以下的部分
42 4 counter[1]=0; // 十位数变成0
43 4 counter[2]++; // 百位数加1
44 4 if(counter[2]==10) { // 如果百位数等于10,则执行则执行以下的部分
45 5 counter[2]=0; // 百位数变成0
46 5 counter[3]++; // 千位数加1
47 5 if(counter[3]==10) counter[3]=0;
48 5 //如果千位数等于10,则变成0
49 5 }
50 4 }
51 3 }
52 2 }
53 1 }
54 static void timer0_initialize(void)
C51 COMPILER V8.02 EX4_8 12/12/2008 20:39:59 PAGE 2
55 {
56 1 EA=0;
57 1 timer0_tick=0;
58 1 TR0=0;
59 1 TMOD &= 0XF0;
60 1 TMOD |=0x01;
61 1 TL0=(TIMER0_COUNT & 0x00FF);
62 1 TH0=(TIMER0_COUNT >> 8);
63 1 PT0=0;
64 1 ET0=1;
65 1 TR0=1;
66 1 EA=1;
67 1 }
68 void main (void) {
69 1 timer0_initialize();
70 1 while (1); /* 无穷循环 */
71 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 177 ----
CONSTANT SIZE = 28 ----
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 + -