📄 47hc595.lst
字号:
C51 COMPILER V6.23a 47HC595 11/21/2008 16:25:58 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE 47HC595
OBJECT MODULE PLACED IN 47HC595.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 47HC595.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <intrins.h>
3
4 sbit sdi = P3^2;
5 sbit shcp = P3^1;
6 sbit stcp = P3^0;
7 sbit eo = P3^7;
8 #define hang P1
9
10 unsigned char aa;
11
12 unsigned char g_data[16][2*3];
13 unsigned char F=0;
14
15 code unsigned char character_state[16][2*7]=
16 {
17 {0x01,0x00,0x08,0x08,0x01,0x04,0x02,0x00,0x00,0x08,0x00,0x00,0x00,0x08,},
18 {0x11,0x00,0x0B,0xFC,0x07,0x84,0x02,0x04,0x7D,0xFC,0x00,0x80,0x3F,0xFC,},
19 {0x11,0x10,0x12,0x08,0x7C,0x04,0xFF,0xFE,0x45,0x08,0x04,0x80,0x00,0x08,},
20 {0x1F,0xF8,0x13,0xF8,0x04,0x24,0x04,0x00,0x49,0x08,0x04,0x40,0x00,0x48,},
21 {0x11,0x00,0x22,0x08,0x04,0x24,0x04,0x10,0x49,0xF8,0x08,0x40,0xFF,0xE8,},
22 {0x21,0x00,0x4B,0xF8,0x05,0x24,0x0F,0xF8,0x51,0x08,0x08,0x20,0x00,0x08,},
23 {0x01,0x04,0x88,0x00,0xFF,0xA4,0x08,0x10,0x49,0x08,0x11,0x10,0x00,0x88,},
24 {0xFF,0xFE,0x17,0xFC,0x0C,0x24,0x18,0x10,0x49,0xF8,0x21,0x0E,0x3F,0xC8,},
25 {0x04,0x80,0x30,0x10,0x0E,0x24,0x2F,0xF0,0x45,0x04,0xC2,0x04,0x20,0x88,},
26 {0x04,0x80,0x50,0x14,0x15,0xA4,0x48,0x10,0x45,0x88,0x02,0x00,0x20,0x88,},
27 {0x04,0x80,0x9F,0xFE,0x14,0xA4,0x88,0x10,0x45,0x50,0x04,0x00,0x20,0x88,},
28 {0x08,0x80,0x12,0x10,0x24,0x24,0x0F,0xF0,0x69,0x20,0x08,0x40,0x20,0x88,},
29 {0x08,0x82,0x11,0x10,0x44,0x04,0x08,0x10,0x51,0x10,0x10,0x20,0x3F,0x88,},
30 {0x10,0x82,0x11,0x10,0x04,0x04,0x08,0x10,0x41,0x4E,0x1F,0xF0,0x20,0x88,},
31 {0x20,0x7E,0x10,0x50,0x04,0x14,0x08,0x50,0x41,0x84,0x00,0x10,0x00,0x28,},
32 {0x40,0x00,0x10,0x20,0x04,0x08,0x08,0x20,0x41,0x00,0x00,0x00,0x00,0x10,},
33 };
34
35 void dleay(unsigned char t)
36 {
37 1 unsigned char i,j;
38 1 for(i=0;i<t;i++)
39 1 for(j=0;j<255;j++);
40 1 }
41
42 void sendbyte(unsigned char dat)
43 {
44 1 unsigned char j;
45 1 for(j=0;j<8;j++)
46 1 {
47 2 shcp = 0;
48 2 if(dat&0x80)
49 2 sdi = 1;
50 2 else
51 2 sdi = 0;
52 2 shcp = 1;
53 2 dat = dat<<1;
54 2 }
55 1 }
C51 COMPILER V6.23a 47HC595 11/21/2008 16:25:58 PAGE 2
56
57 void display()
58 {
59 1 unsigned char i;
60 1 for(i=0;i<16;i++)//g_data
61 1 {
62 2 sendbyte(g_data[i][0]);
63 2 sendbyte(g_data[i][1]); sendbyte(g_data[i][2]);
64 2 sendbyte(g_data[i][3]); sendbyte(g_data[i][4]);sendbyte(g_data[i][5]);
65 2 stcp = 0;
66 2 hang = ~i;
67 2 stcp = 1;
68 2 //dleay(1);
69 2 }
70 1 }
71
72 void updat (void) interrupt 1
73 {
74 1 TH0 = -50000/255;
75 1 TL0 = -50000%255;
76 1 aa++;
77 1 }
78
79 void ledinit(void)
80 {
81 1 unsigned char s;
82 1 TMOD=0x01;
83 1 TH0 = -50000/255;
84 1 TL0 = -50000%255;
85 1 TR0=1;
86 1 ET0=1;
87 1 EA=1;
88 1 for(s=0;s<16;s++)
89 1 {
90 2 g_data[s][0]=character_state[s][0];
91 2 g_data[s][1]=character_state[s][1];
92 2 g_data[s][2]=character_state[s][2];
93 2 g_data[s][3]=character_state[s][3];
94 2 g_data[s][4]=character_state[s][4];
95 2 g_data[s][5]=character_state[s][5];
96 2 }
97 1 }
98 /*
99 void left(unsigned char *s,unsigned char length)
100 {
101 unsigned char cur=s[0];
102 unsigned char m;
103 unsigned char c;
104 for( m=0;m<length-1;m++ )
105 {
106 c=s[m+1];
107 c=c>>7;
108 s[m]=(s[m]<<1);
109 s[m]=s[m]|c;
110 }
111 s[m]=(s[m]<<1);
112 cur=cur>>7;
113 s[m]=s[m]|cur;
114 }*/
115 void left(unsigned char *s,unsigned char length,unsigned char n)
116 {
117 1 unsigned char cur=s[0];
C51 COMPILER V6.23a 47HC595 11/21/2008 16:25:58 PAGE 3
118 1 unsigned char m;
119 1 unsigned char c;
120 1 for( m=0;m<length-1;m++ )
121 1 {
122 2 c=s[m+1];
123 2 c=c>>(8-n);
124 2 s[m]=(s[m]<<n);
125 2 s[m]=s[m]|c;
126 2 }
127 1 s[m]=(s[m]<<n);
128 1 cur=cur>>(8-n);
129 1 s[m]=s[m]|cur;
130 1 }
131
132 void convert(void)
133 {
134 1 unsigned char s;
135 1 unsigned char g_line[8];
136 1 unsigned char s1,s2,s3;
137 1 aa=0;
138 1 eo=1;
139 1
140 1 /*
141 1 for(s=0;s<16;s++)
142 1 {
143 1 left(&(g_data[s][0]),6);
144 1 }
145 1 */
146 1 F++;
147 1 if( F== 14*8 ) F=0;
148 1 //F=F%(14*8);
149 1
150 1 s1=F/8;
151 1 s2=F%8;
152 1
153 1 for(s=0;s<16;s++)
154 1 {
155 2 for( s3=0;s3<7;s3++)
156 2 g_line[s3]=character_state[s][(s1+s3)%14];
157 2
158 2 left(&(g_line[0]),7,s2);
159 2 for( s3=0;s3<6;s3++)
160 2 g_data[s][s3]=g_line[s3];
161 2 }
162 1 eo=0;
163 1 }
164
165 void main(void)
166 {
167 1 F=0;
168 1 ledinit();
169 1 while(1)
170 1 {
171 2 if(aa>0)
172 2 {
173 3 convert();
174 3 }
175 2 display();
176 2 }
177 1 }
C51 COMPILER V6.23a 47HC595 11/21/2008 16:25:58 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 624 ----
CONSTANT SIZE = 224 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 98 17
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 + -