📄 hc595.lst
字号:
C51 COMPILER V6.12 HC595 09/23/2005 19:38:10 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE HC595
OBJECT MODULE PLACED IN G:\C51PRJ\HC595\HC595.OBJ
COMPILER INVOKED BY: e:\keil\c51\BIN\C51.EXE G:\C51PRJ\HC595\HC595.C DB SB OE
stmt level source
1 /****************************************************************************/
2 /* */
3 /* Copyright (c) 2005, 老树工作室 */
4 /* All rights reserved. */
5 /* */
6 /* http://www.saintone.net Email:hxm0902@163.com */
7 /* QQ:112431149 Tel:010-62966630 */
8 /* */
9 /****************************************************************************/
10 /****************************************************************************/
11 /* 文件名:hc595.c */
12 /* 版 本:Version 1.0 */
13 /* 描 述:用hc595驱动数码管演示代码 */
14 /* 作 者:spot */
15 /* 函 数: */
16 /* load_number */
17 /* send_shift_clock */
18 /* send_latch_clock */
19 /* display_number */
20 /* */
21 /* 历史记录: */
22 /* spot 2005-07-10 Creat Inital version. (Version 1.0) */
23 /****************************************************************************/
24
25 #include <reg52.h>
26 #include <absacc.h>
27 #include <intrins.h>
28
29 typedef unsigned char u_char;
30
31 sbit DS = P0^2; /* 串行数据输入 */
32 sbit SHCP = P0^0; /* 移位时钟输入 */
33 sbit STCP = P0^1; /* 锁存时钟输入 */
34
35 /* 显示数据编码,按共阴极数码管编码 */
36 u_char number_code[11] = {
37 0x3f, /* 0 */
38 0x06, /* 1 */
39 0x5b, /* 2 */
40 0x4f, /* 3 */
41 0x66, /* 4 */
42 0x6d, /* 5 */
43 0x7d, /* 6 */
44 0x07, /* 7 */
45 0x7f, /* 8 */
46 0x67, /* 9 */
47 0x00 /* 灭*/
48 };
49
50 void load_number(u_char number, bit dp);
51 void send_shift_clock(void);
52 void send_latch_clock(void);
53 void clear_led(void);
54 void display_number(void);
55
C51 COMPILER V6.12 HC595 09/23/2005 19:38:10 PAGE 2
56 /* 加载将要显示的数据,num-显示数据,dp:1显示小数点,0不显示小数点 */
57 void load_number(u_char number, bit dp)
58 {
59 1 u_char i;
60 1 u_char temp;
61 1
62 1 temp = ~number_code[number]; /* 使用共阳极数码管,所以编码取反 */
63 1 if (dp)
64 1 {
65 2 temp &= 0x7f;
66 2 }
67 1 for (i=0; i<8; i++)
68 1 {
69 2 if ( (temp & 0x80) == 0x80)
70 2 {
71 3 DS = 1;
72 3 }
73 2 else
74 2 {
75 3 DS = 0;
76 3 }
77 2
78 2 temp <<= 1;
79 2
80 2 send_shift_clock(); /* 发移位脉冲信号 */
81 2 }
82 1 }
83
84 /* 发送移位时钟脉冲信号 */
85 void send_shift_clock(void)
86 {
87 1 SHCP = 1;
88 1 _nop_();
89 1 SHCP = 0;
90 1 }
91
92 /* 发送锁存脉冲信号 */
93 void send_latch_clock(void)
94 {
95 1 STCP = 1;
96 1 _nop_();
97 1 STCP = 0;
98 1 }
99
100 /* 清除4位数码管显示 */
101 void clear_led(void)
102 {
103 1 u_char i;
104 1
105 1 for (i=0; i<32; i++)
106 1 {
107 2 DS = 1;
108 2 send_shift_clock();
109 2 }
110 1 send_latch_clock();
111 1
112 1 }
113
114 /* 演示数码管显示数字 */
115 void display_number(void)
116 {
117 1 u_char i;
C51 COMPILER V6.12 HC595 09/23/2005 19:38:10 PAGE 3
118 1
119 1 for (i=0; i<4; i++)
120 1 {
121 2 load_number(i, 0);
122 2 }
123 1 send_latch_clock();
124 1
125 1 _nop_();
126 1
127 1 for (i=0; i<4; i++)
128 1 {
129 2 load_number(i+4, 1);
130 2 }
131 1 send_latch_clock();
132 1
133 1 _nop_();
134 1
135 1 load_number(8, 0);
136 1 load_number(9, 0);
137 1 load_number(10, 0);
138 1 load_number(10, 0);
139 1 send_latch_clock();
140 1 _nop_();
141 1 }
142
143 main()
144 {
145 1 SHCP=0;
146 1 STCP=0;
147 1
148 1 while(1)
149 1 {
150 2 clear_led();
151 2 display_number();
152 2 }
153 1 }
C51 COMPILER V6.12 HC595 09/23/2005 19:38:10 PAGE 4
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
T0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
AC . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D6H 1
T1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
T2 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
number_code. . . . . . . . . . . . . . PUBLIC DATA ARRAY 0000H 11
send_latch_clock . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
EXF2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CEH 1
RD . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
DS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0082H 1
ES . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ACH 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
INT0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
CY . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D7H 1
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
INT1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
send_shift_clock . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
clear_led. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
PS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BCH 1
T2EX . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
OV . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D2H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
C_T2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C9H 1
WR . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1
RCLK . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CDH 1
SHCP . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0080H 1
TCLK . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CCH 1
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
STCP . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0081H 1
IE0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0089H 1
IE1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008BH 1
CP_RL2 . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C8H 1
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
ET1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ABH 1
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
ET2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ADH 1
TF1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008FH 1
TF2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CFH 1
RB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009AH 1
EX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A8H 1
IT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0088H 1
TB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009BH 1
EX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AAH 1
IT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008AH 1
P. . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D0H 1
SM0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009FH 1
SM1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009EH 1
SM2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009DH 1
PT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1
PT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BBH 1
C51 COMPILER V6.12 HC595 09/23/2005 19:38:10 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
RS0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D3H 1
PT2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BDH 1
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
RS1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D4H 1
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
TR2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CAH 1
PX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B8H 1
PX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BAH 1
EXEN2. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CBH 1
REN. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009CH 1
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
display_number . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
RXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1
_load_number . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
number . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
dp . . . . . . . . . . . . . . . . . AUTO DATA BIT 0000H 1
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
temp . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
TXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1
u_char . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
F0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D5H 1
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 167 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 3
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -