📄 51
字号:
C51 COMPILER V8.18 SMGWY 01/04/2010 13:05:14 PAGE 1
C51 COMPILER V8.18, COMPILATION OF MODULE SMGWY
OBJECT MODULE PLACED IN SMGWY.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SMGWY.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include <reg52.h> //51芯片管脚定义头文件
3 #include <intrins.h>//内部包含延时函数 _nop_();
4
5 #define uchar unsigned char
6 #define uint unsigned int
7
8 uchar code ledcode[11] ={ 0xC0,0xF9,0xA4,0xB0,0x99,
9 0x92,0x82,0xF8,0x80,0x90,0xff };
10
11 uchar data display[9]={10,10,10,10,10,10,10,10,10};
12
13 uchar shift,n;
14
15 /********************************************************/
16 /* */
17 /* 延时函数 */
18 /* */
19 /********************************************************/
20
21 void delayms(uint ms)
22
23 {
24 1 uchar t;
25 1 while(ms--)
26 1 {
27 2
28 2 for(t = 0; t < 120; t++);
29 2 }
30 1 }
31
32 /**********************************************************
33
34 数据交换函数(向左移动)
35
36 **********************************************************/
37
38 void exchange1()
39 {
40 1 uchar i;
41 1
42 1 for(i=1; i<9; i++)
43 1
44 1 {
45 2 display[i] = i;
46 2 delayms(1000);
47 2
48 2
49 2 }
50 1 }
51
52 /**********************************************************
53
54 数据交换函数(向右移动)
55
C51 COMPILER V8.18 SMGWY 01/04/2010 13:05:14 PAGE 2
56 **********************************************************/
57
58 void exchange2()
59 {
60 1 uchar i,j;
61 1
62 1 for(j=0; j<8; j++)
63 1 { for(i=0; i<8; i++)
64 2 {
65 3
66 3
67 3 display[i]=display[i+1];
68 3 }
69 2 display[8]=10;
70 2 delayms(1000);
71 2
72 2
73 2 }
74 1 }
75
76 /**********************************************************
77
78 主函数
79
80 **********************************************************/
81
82 void main(void)
83
84 {
85 1 uchar times;
86 1 P0=0xff;
87 1 P2=0xff;
88 1 n=0;
89 1 shift=0xfe;
90 1 times=8;
91 1
92 1 TMOD = 0x01; //定时器T0工作方式1
93 1 TH0 = 0xfc; //1ms定时常数
94 1 TL0 = 0x66;
95 1 IE = 0x82; //允许定时器T0中断
96 1 TR0 = 1; //启动定时器T0
97 1
98 1
99 1 while(1)
100 1
101 1 {
102 2 exchange1();
103 2 delayms(1000); //停止滞留时间
104 2
105 2
106 2 exchange2();
107 2 delayms(1000); //停止滞留时间
108 2 }
109 1 }
110 /**********************************************************
111
112 中断服务函数
113
114 **********************************************************/
115
116 void leddisplay() interrupt 1
117
C51 COMPILER V8.18 SMGWY 01/04/2010 13:05:14 PAGE 3
118 {
119 1 TH0 = 0xFC; //1ms定时常数
120 1 TL0 = 0x66;
121 1 n++;
122 1 P0=ledcode[display[n]]; //送段码
123 1 P2=shift; //送位码
124 1 shift=shift<<1|0x01; //修改位码
125 1 if(n>8)
126 1 {
127 2 n=0;
128 2 shift=0xfe;
129 2 }
130 1 }
131
132 /*********************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 184 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 1
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 + -