📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 06/20/2007 14:37:47 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\main.c DEBUG OBJECTEXTEND
line level source
1
2 /*通过音乐频谱来切换动画*/
3 /*包含的库文件*/
4 #pragma small
5 #pragma CODE DEBUG SYMBOLS OBJECTEXTEND
6 //#include "..\includes\TypeDef.h"
7 #include <reg52.h>
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <math.h>
11 //#include <tdp.h>
12 #include <string.h>
13 #define uchar unsigned char
14 #define ulint unsigned long int
15 #define uint unsigned int
16 /***********************************************/
17 static data uchar cc[16];
18 #define adress_num 0x02//分控总数
19 #define row 16//有多少行
20 #define list 16 //一行有多少个像素;
21 #define tset 1 //数码管RGB排列情况
22 //0是RGB RGB RGB
23 //1是RGBx RGBx RGBx
24 //2是xRGB xRGB xRGB
25 uint dpara,c_in,corx,corx1; //延迟的最小单位时间
26 uchar code color_data[8]={0,4,2,1,6,5,3,7};//黑,红,绿,蓝,黄,紫,青,白//阳码
27 //uchar code color_data[8]={7,3,5,6,1,2,4,0};//黑,红,绿,蓝,黄,紫,白//阴码
28 uchar code color_data01[6]={4,6,2,3,1,5};
29 uchar data adress;
30 uchar adress_ack=1;
31 /*********************************************************************
32 颜色组合 数组
33 *********************************************************************/
34 uchar code color_data333[28]={4,4,4,4,6,6,6,6,2,2,2,2,3,3,3,3,1,1,1,1,5,5,5,5 ,7,7,7,7};
35 #define length 24 // 颜色数组 的列数
36 #define width 0 // 颜色数组 的行数
37 /*********************************************************************/
38 #define wbyte list/8//一行要用多少个字节来表示字色
39 #define KEY P1
40 uint ts;
41 uint r_in; //延迟的最小单位时间
42 uint t_in; //延迟的最小单位时间
43 static data uchar rbuf[16];
44
45 /*定义颜色控制端口*/
46 sbit DQ_595=P1^3;/*蓝线 HS74HC595的数据输入*/
47 sbit CLK_595=P1^2;/*绿线 HS74HC595的时钟*/
48 sbit STB_595=P1^1;/*红线 HS74HC595的数据锁存*/
49 sbit EN_595=P1^0;/*黄线 HS74HC595的数据使能*/
50 sbit RE_DE=P3^3;/*MAX487的收发器控制,当RE_DE=1时当前487处于接收状态 当RE_DE=0时当前487处于发送状态*/
51
52 /*********************延时函数*************
53 函数原型:void dely(ulint timepara);
54 功 能:延时等待,参数timepara为延时时间*/
55 void delay(ulint timepara)
C51 COMPILER V8.02 MAIN 06/20/2007 14:37:47 PAGE 2
56 { ulint mpara=0;
57 1 do
58 1 {
59 2 mpara=mpara+1;
60 2 }
61 1 while (mpara!=timepara);
62 1 }
63 /*********************延时函数*************
64 函数原型:void dely(ulint timepara);
65 功 能:延时等待,参数timepara为延时时间*/
66 void delays(ulint timepara)
67 {ulint i;
68 1 for(i=0;i<timepara;i++)
69 1 {
70 2 ts=1;
71 2 delay(dpara*ts);//12M ---207---0.010S=10ms
72 2 }
73 1 }
74
75
76
77 /*********************串口中断初始化*************/
78 /*设置串行口工作方式1,定时器1作为波特率发生器
79 波特率设置为 2400 ;*/
80 void comm (void)
81 {TMOD=0x20;/*设置定时器T1工作方式2*/
82 1 //TL1=0xff;/*定时器计数初值,1152Bps波特率 115.2KBps*/
83 1 //TH1=0xff;/*定时器重装值*/
84 1 TL1=0xfd;/*定时器计数初值,9600Bps波特率 115.2KBps*/
85 1 TH1=0xfd;/*定时器重装值*/
86 1 EA=1;/*允许总的中断*/
87 1 ES=1;/*允许串行中断*/
88 1 PCON=0x00;/*波特率不倍增*/
89 1 //PCON |=0x80;/*波特率倍增*/
90 1 SCON=0x50;/*设置串口工作方式1,REN = 1 允许接收*/
91 1 TR1=0x01;/*定时器开始工作*/
92 1 }
93 //---------------------------------------------------
94 //函数名称:UART_init()
95 //函数功能:串口中断初始化
96 //---------------------------------------------------
97 /*
98 void UART_init()
99 {
100 //初始化串行设置
101 SCON=0x50; //选择串口工作方式为1,打开接受允许
102 PCON=0x00; //波特率提高一倍
103 TMOD=0x20; //定时器1工作在方式2
104
105 TH1=0xfd;
106 TL1=0xfd;
107
108 EA=1;
109 ES=1;
110 PS=1;
111
112 ET1=0;
113 TR1=1;
114 }
115 */
116
117
C51 COMPILER V8.02 MAIN 06/20/2007 14:37:47 PAGE 3
118
119
120 void gen(void)
121 {
122 1 ES=0;/*关闭串行中断*/
123 1 STB_595=1;//关闭指示灯
124 1 dpara=207;
125 1 delays(10);
126 1 STB_595=0;//打开指示灯
127 1 dpara=207;
128 1 delays(10);
129 1 ES=1;/*关闭串行中断*/
130 1 }
131
132 /*接收一个字符
133 void recv_byte(uchar recv)
134 { RE_DE=1;//当前487处于接收状态
135 while(RI==0);//等待接收数据
136 RI=0;//清除接收标志位
137 recv=SBUF;
138 }*/
139
140
141 /*发送一个字符*/
142 void send_byte(uchar send)
143 { RE_DE=0;/*当前487处于发送状态*/
144 1 SBUF=send;
145 1 while(TI==0); /*等待发送完毕*/
146 1 TI=0;/*清除发送中断标志*/
147 1 }
148
149 //--------------------------------------------------
150 //函数名称:send_1_bit(uchar send)
151 //函数功能:
152 //--------------------------------------------------
153
154 /*void send_1_bit(uchar send)
155 {
156 RE_DE=0;
157 SBUF=send;
158 while(TI==0)
159 TI=0;
160 }*/
161 //--------------------------------------------------
162 //函数名称:recev_1_bit()
163 //函数功能:
164 //--------------------------------------------------
165 void recev_1_bit(uchar recev)
166 {
167 1 RE_DE=1;
168 1 while(RI==0);
169 1 RI=0;
170 1 recev=SBUF;
171 1 }
172 //调速度函数oid ts_key(void)
173 //调速度函数
174 void ts_key(void)
175 {
176 1 ts=KEY&0xF0;//保留高4位,去掉低4位
177 1 ts=ts>>4;
178 1 if (ts==0||ts==15){ts=1;}
179 1 }
C51 COMPILER V8.02 MAIN 06/20/2007 14:37:47 PAGE 4
180 /****主程序*******************/
181 void main(void)
182 {
183 1
184 1 uchar i;
185 1 uchar sb[4]={0xe5,0xe5,0x02,0x03};
186 1
187 1 dpara=207;
188 1 delays(500);
189 1 //RE_DE=0;/*当前487处于发送状态*/
190 1 //UART_init();
191 1 comm();
192 1 IE0=1; //开外部中断允许
193 1 IT0=0; //电平触发方式
194 1 strat:
195 1 EN_595=0;
196 1 ES=0;/*关闭串行中断*/
197 1 EA=1;/*开启总中断*/
198 1 STB_595=0;//打开指示灯
199 1 for(adress=1;adress<adress_num+1;adress++)
200 1 {adress_ack=1;
201 2 for(i=0;i<4;i++)
202 2 {
203 3 send_byte(sb[i]);//发送控制字
204 3 }
205 2 send_byte(adress);//发送分控地址
206 2 }
207 1 //gen();
208 1 ES=0;EA=0;/*关闭串行中断及总中断*/
209 1 /*dpara=207;
210 1 delays(2);*/
211 1 STB_595=1;//关闭指示灯
212 1 goto strat;
213 1 }
214
C51 COMPILER V8.02 MAIN 06/20/2007 14:37:47 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _delay (BEGIN)
; SOURCE LINE # 55
0000 8F00 R MOV timepara+03H,R7
0002 8E00 R MOV timepara+02H,R6
0004 8D00 R MOV timepara+01H,R5
0006 8C00 R MOV timepara,R4
; SOURCE LINE # 56
0008 E4 CLR A
0009 F500 R MOV mpara+03H,A
000B F500 R MOV mpara+02H,A
000D F500 R MOV mpara+01H,A
000F F500 R MOV mpara,A
0011 ?C0003:
; SOURCE LINE # 58
; SOURCE LINE # 59
0011 E500 R MOV A,mpara+03H
0013 2401 ADD A,#01H
0015 F500 R MOV mpara+03H,A
0017 E4 CLR A
0018 3500 R ADDC A,mpara+02H
001A F500 R MOV mpara+02H,A
001C E4 CLR A
001D 3500 R ADDC A,mpara+01H
001F F500 R MOV mpara+01H,A
0021 E4 CLR A
0022 3500 R ADDC A,mpara
0024 F500 R MOV mpara,A
; SOURCE LINE # 60
; SOURCE LINE # 61
0026 AF00 R MOV R7,timepara+03H
0028 AE00 R MOV R6,timepara+02H
002A AD00 R MOV R5,timepara+01H
002C AC00 R MOV R4,timepara
002E AB00 R MOV R3,mpara+03H
0030 AA00 R MOV R2,mpara+02H
0032 A900 R MOV R1,mpara+01H
0034 F8 MOV R0,A
0035 C3 CLR C
0036 120000 E LCALL ?C?ULCMP
0039 70D6 JNZ ?C0003
; SOURCE LINE # 62
003B 22 RET
; FUNCTION _delay (END)
; FUNCTION L?0028 (BEGIN)
0000 750000 R MOV dpara,#00H
0003 7500CF R MOV dpara+01H,#0CFH
0006 7F0A MOV R7,#0AH
0008 7E00 MOV R6,#00H
000A L?0029:
000A 7D00 MOV R5,#00H
000C 7C00 MOV R4,#00H
; FUNCTION _delays (BEGIN)
; SOURCE LINE # 66
000E 8F00 R MOV timepara+03H,R7
0010 8E00 R MOV timepara+02H,R6
0012 8D00 R MOV timepara+01H,R5
0014 8C00 R MOV timepara,R4
; SOURCE LINE # 67
C51 COMPILER V8.02 MAIN 06/20/2007 14:37:47 PAGE 6
; SOURCE LINE # 68
0016 E4 CLR A
0017 F500 R MOV i+03H,A
0019 F500 R MOV i+02H,A
001B F500 R MOV i+01H,A
001D F500 R MOV i,A
001F ?C0005:
001F AF00 R MOV R7,timepara+03H
0021 AE00 R MOV R6,timepara+02H
0023 AD00 R MOV R5,timepara+01H
0025 AC00 R MOV R4,timepara
0027 AB00 R MOV R3,i+03H
0029 AA00 R MOV R2,i+02H
002B A900 R MOV R1,i+01H
002D A800 R MOV R0,i
002F C3 CLR C
0030 120000 E LCALL ?C?ULCMP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -