📄 ex4-8.lst
字号:
C51 COMPILER V8.05a EX4_8 08/25/2008 10:41:22 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE EX4_8
OBJECT MODULE PLACED IN ex4-8.OBJ
COMPILER INVOKED BY: d:\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 这四颗七段显示器将显示0到 9999。 */
8 /* ***************************************************** */
9 #include <REGX51.H>
10 #define TIMER0_COUNT 0xFC18 /* 10000h-(12,000,000/(12*1000)) */
11 code
12 seven_seg[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,
13 0X90};
14 code scan[4]={0X0E,0X0D,0X0B,0X07};
15 unsigned char counter[4]={0,0,0,0};
16 unsigned char i=0;
17 int timer0_tick;
18 static void timer0_isr(void) interrupt TF0_VECTOR using 1
19 {
20 1 TR0=0;
21 1 TL0=(TIMER0_COUNT & 0x00FF);
22 1 TH0=(TIMER0_COUNT >> 8);
23 1 TR0=1;
24 1 P1=seven_seg[counter[i]];
25 1 P0=scan[i];
26 1 i++;
27 1 if(i==4) i=0;
28 1 timer0_tick++;
29 1 if (timer0_tick==1000) {
30 2 timer0_tick=0;
31 2 counter[0]++; // 个位数加1
32 2 if (counter[0]==10) { // 如果个位数等于10,则执行以下的部分
33 3 counter[0]=0; // 个位数变成0
34 3 counter[1]++; // 十位数加1
35 3 if(counter[1]==10){ // 如果十位数等于10,则执行以下的部分
36 4 counter[1]=0; // 十位数变成0
37 4 counter[2]++; // 百位数加1
38 4 if(counter[2]==10) { // 如果百位数等于10,则执行
39 5 以下的部分
*** ERROR C100 IN LINE 39 OF EX4-8.C: unprintable character 0xD2 skipped
*** ERROR C100 IN LINE 39 OF EX4-8.C: unprintable character 0xD4 skipped
*** ERROR C100 IN LINE 39 OF EX4-8.C: unprintable character 0xCF skipped
*** ERROR C100 IN LINE 39 OF EX4-8.C: unprintable character 0xC2 skipped
*** ERROR C100 IN LINE 39 OF EX4-8.C: unprintable character 0xB5 skipped
*** ERROR C100 IN LINE 39 OF EX4-8.C: unprintable character 0xC4 skipped
*** ERROR C100 IN LINE 39 OF EX4-8.C: unprintable character 0xB2 skipped
*** ERROR C100 IN LINE 39 OF EX4-8.C: unprintable character 0xBF skipped
*** ERROR C100 IN LINE 39 OF EX4-8.C: unprintable character 0xB7 skipped
*** ERROR C100 IN LINE 39 OF EX4-8.C: unprintable character 0xD6 skipped
40 5 counter[2]=0; // 百位数变成0
41 5 counter[3]++; // 千位数加1
*** ERROR C187 IN LINE 41 OF EX4-8.C: not an lvalue
42 5 if(counter[3]==10) counter[3]=0;
43 5 //如果千位数等于10,则变成0
C51 COMPILER V8.05a EX4_8 08/25/2008 10:41:22 PAGE 2
44 5 }
45 4 }
46 3 }
47 2 }
48 1 }
49 static void timer0_initialize(void)
50 {
51 1 EA=0;
52 1 timer0_tick=0;
53 1 TR0=0;
54 1 TMOD &= 0XF0;
55 1 TMOD |=0x01;
56 1 TL0=(TIMER0_COUNT & 0x00FF);
57 1 TH0=(TIMER0_COUNT >> 8);
58 1 PT0=0;
59 1 ET0=1;
60 1 TR0=1;
61 1 EA=1;
62 1 }
63 void main (void) {
64 1 timer0_initialize();
65 1 while (1); /* 无穷循环 */
66 1 }
67
C51 COMPILATION COMPLETE. 0 WARNING(S), 11 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -