📄 main.lst
字号:
1013 0470 8983 std Y+1,r24
120:main.c **** ds1302_read_time();
1015 .LM109:
1016 0472 82DF rcall ds1302_read_time
121:main.c **** led_data[0]=hour>>4;
1018 .LM110:
1019 0474 8091 0000 lds r24,hour
1020 0478 8295 swap r24
1021 047a 8F70 andi r24,0x0f
1022 047c 8093 0000 sts led_data,r24
122:main.c **** led_data[1]=hour&0x0f;
1024 .LM111:
1025 0480 8091 0000 lds r24,hour
1026 0484 8F70 andi r24,lo8(15)
1027 0486 8093 0000 sts led_data+1,r24
123:main.c ****
124:main.c **** PORTD=0Xfe;
1029 .LM112:
1030 048a 8EEF ldi r24,lo8(-2)
1031 048c 8093 3200 sts 50,r24
125:main.c **** transmission_byte(led[led_data[1]]);
1033 .LM113:
1034 0490 8091 0000 lds r24,led_data+1
1035 0494 9927 clr r25
1036 0496 FC01 movw r30,r24
1037 0498 E050 subi r30,lo8(-(led))
1038 049a F040 sbci r31,hi8(-(led))
1039 049c 8081 ld r24,Z
1040 049e 15D0 rcall transmission_byte
1041 .L49:
126:main.c **** while(1);
1043 .LM114:
1044 04a0 FFCF rjmp .L49
1045 /* epilogue: frame size=1 */
1046 /* epilogue: noreturn */
1047 /* epilogue end (size=0) */
1048 /* function main size 36 (32) */
1053 .Lscope11:
1055 .global init
1057 init:
127:main.c **** delay(650);
128:main.c **** PORTD=0Xfd;
129:main.c **** transmission_byte(0x00);
130:main.c **** delay(650);
131:main.c ****
132:main.c ****
133:main.c **** PORTD=0Xfb;
134:main.c **** transmission_byte(led[1]);
135:main.c **** delay(650);
136:main.c ****
137:main.c **** PORTD=0Xf7;
138:main.c **** transmission_byte(~led[1]);
139:main.c ****
140:main.c **** delay(650);
141:main.c **** }
142:main.c **** }
143:main.c **** // year=0x06,month=0x03,day=0x15,week=0x02;
144:main.c **** // hour=0x10,minute=0x54,second=0x00;
145:main.c **** // ds1302_write_time();//写入调整后的时间
146:main.c **** // ds1302_read_time();
147:main.c **** /*
148:main.c **** led_data[0]=hour>>4;
149:main.c **** led_data[1]=hour&0x0f;
150:main.c **** led_data[2]=minute>>4;
151:main.c **** led_data[3]=minute&0x0f;
152:main.c **** */
153:main.c **** /* while(1)
154:main.c **** {
155:main.c **** switch(_key_())
156:main.c **** {
157:main.c **** case 1:
158:main.c **** if(++work_mode>4)work_mode=run_mode;
159:main.c **** break;
160:main.c **** case 2:
161:main.c **** break;
162:main.c **** case 3:
163:main.c **** break;
164:main.c **** case 4:
165:main.c **** break;
166:main.c **** }
167:main.c **** switch(work_mode)
168:main.c **** {
169:main.c **** case run_mode:
170:main.c **** break;
171:main.c **** case T_time:
172:main.c **** setting_time();
173:main.c **** break;
174:main.c **** case T_rg:
175:main.c **** break;
176:main.c **** case T_yellow:
177:main.c **** break;
178:main.c **** }
179:main.c ****
180:main.c **** }
181:main.c **** }
182:main.c **** /************************************************
183:main.c **** 调用方式:void setting_time(void)
184:main.c **** 函数说明:
185:main.c **** 传递参数:无
186:main.c **** 返 回 值:无
187:main.c **** ************************************************/
188:main.c **** /*void setting_time(void)
189:main.c **** {
190:main.c **** // TIMSK=~_BV(TOIE0); //T0溢出中断禁止
191:main.c **** // TIMSK=_BV(TOIE0); //T0溢出中断使能
192:main.c **** uint i=10000;
193:main.c **** work_m=0;
194:main.c **** ds1302_read_time();
195:main.c **** while(--i)
196:main.c **** {
197:main.c **** switch(_key_())
198:main.c **** {
199:main.c **** case 1:
200:main.c **** if(++work_mode>=4)work_mode=1;
201:main.c **** ds1302_write_time();//写入调整后的时间
202:main.c **** return;
203:main.c **** break;
204:main.c **** case 2:
205:main.c **** if(work_m==T_h)
206:main.c **** hour++;
207:main.c **** if(work_m==T_m)
208:main.c **** minute++;
209:main.c **** if(work_m==0)
210:main.c **** break;
211:main.c **** case 3:
212:main.c **** if(++work_m>=3)work_m=0;
213:main.c **** break;
214:main.c **** }
215:main.c **** switch(work_m)
216:main.c **** {
217:main.c **** case T_h://显示调整中的小时
218:main.c **** led_data[0]=hour>>4;
219:main.c **** led_data[1]=hour&0x0f;
220:main.c **** led_data[2]=NULL;
221:main.c **** led_data[3]=NULL;
222:main.c **** break;
223:main.c **** case T_m://显示调整中的分
224:main.c **** led_data[0]=NULL;
225:main.c **** led_data[1]=NULL;
226:main.c **** led_data[2]=minute>>4;
227:main.c **** led_data[3]=minute&0x0f;
228:main.c **** break;
229:main.c **** case 0://显示当前时间或调整后的时间
230:main.c **** led_data[0]=hour>>4;
231:main.c **** led_data[1]=hour&0x0f;
232:main.c **** led_data[2]=minute>>4;
233:main.c **** led_data[3]=minute&0x0f;
234:main.c **** break;
235:main.c **** }
236:main.c **** }
237:main.c **** }
238:main.c **** /************************************************
239:main.c **** 调用方式:void init(void)
240:main.c **** 函数说明:
241:main.c **** 传递参数:无
242:main.c **** 返 回 值:无
243:main.c **** ************************************************/
244:main.c **** void init(void)
245:main.c **** {
1059 .LM115:
1060 /* prologue: frame size=0 */
1061 04a2 CF93 push r28
1062 04a4 DF93 push r29
1063 04a6 CDB7 in r28,__SP_L__
1064 04a8 DEB7 in r29,__SP_H__
1065 /* prologue end (size=4) */
246:main.c **** // T0_INIT();
247:main.c **** color=0;
1067 .LM116:
1068 04aa 1092 0000 sts color,__zero_reg__
248:main.c **** jtd_row=0;
1070 .LM117:
1071 04ae 1092 0000 sts jtd_row,__zero_reg__
249:main.c **** work_mode=run_mode;
1073 .LM118:
1074 04b2 81E0 ldi r24,lo8(1)
1075 04b4 8093 0000 sts work_mode,r24
250:main.c **** //DDRB|=_BV(PB6);//为595锁存信号
251:main.c **** //DDRB|=_BV(PB0);
252:main.c **** //DDRB|=_BV(PB1);
253:main.c **** DDRB=0XFF;
1077 .LM119:
1078 04b8 8FEF ldi r24,lo8(-1)
1079 04ba 8093 3700 sts 55,r24
254:main.c **** DDRD=0xFF;//设置PD口高四位为按键输入,高四位设置为数码管位控输出
1081 .LM120:
1082 04be 8FEF ldi r24,lo8(-1)
1083 04c0 8093 3100 sts 49,r24
1084 /* epilogue: frame size=0 */
1085 04c4 DF91 pop r29
1086 04c6 CF91 pop r28
1087 04c8 0895 ret
1088 /* epilogue end (size=3) */
1089 /* function init size 20 (13) */
1091 .Lscope12:
1094 .global transmission_byte
1096 transmission_byte:
255:main.c **** }
256:main.c ****
257:main.c ****
258:main.c ****
259:main.c **** /************************************************
260:main.c **** 调用方式:uchar transmission_byte(uchar x_byte)
261:main.c **** 函数说明:用IO口模拟SPI发送一个字节数据
262:main.c **** 传递参数:发送数据 uchar x_byte
263:main.c **** 返 回 值:无
264:main.c **** ************************************************/
265:main.c ****
266:main.c **** void transmission_byte(uchar x_byte)
267:main.c **** {
1098 .LM121:
1099 /* prologue: frame size=3 */
1100 04ca CF93 push r28
1101 04cc DF93 push r29
1102 04ce CDB7 in r28,__SP_L__
1103 04d0 DEB7 in r29,__SP_H__
1104 04d2 2397 sbiw r28,3
1105 04d4 0FB6 in __tmp_reg__,__SREG__
1106 04d6 F894 cli
1107 04d8 DEBF out __SP_H__,r29
1108 04da 0FBE out __SREG__,__tmp_reg__
1109 04dc CDBF out __SP_L__,r28
1110 /* prologue end (size=10) */
1111 04de 8983 std Y+1,r24
268:main.c **** unsigned char i,j;
269:main.c **** for(i=0;i<8;i++)
1113 .LM122:
1114 04e0 1A82 std Y+2,__zero_reg__
1115 .L53:
1117 .LM123:
1118 04e2 8A81 ldd r24,Y+2
1119 04e4 8830 cpi r24,lo8(8)
1120 04e6 40F5 brsh .L52
270:main.c **** {
271:main.c **** j=x_byte&0x80;
1122 .LM124:
1123 04e8 90E8 ldi r25,lo8(-128)
1124 04ea 8981 ldd r24,Y+1
1125 04ec 8923 and r24,r25
1126 04ee 8B83 std Y+3,r24
272:main.c **** if(j==0x80)
1128 .LM125:
1129 04f0 8B81 ldd r24,Y+3
1130 04f2 8038 cpi r24,lo8(-128)
1131 04f4 31F4 brne .L56
273:main.c **** set_data();
1133 .LM126:
1134 04f6 8091 3800 lds r24,56
1135 04fa 8260 ori r24,lo8(2)
1136 04fc 8093 3800 sts 56,r24
1137 0500 05C0 rjmp .L57
1138 .L56:
274:main.c **** else clr_data();
1140 .LM127:
1141 0502 8091 3800 lds r24,56
1142 0506 8D7F andi r24,lo8(-3)
1143 0508 8093 3800 sts 56,r24
1144 .L57:
275:main.c **** clr_clk();
1146 .LM128:
1147 050c 8091 3800 lds r24,56
1148 0510 8E7F andi r24,lo8(-2)
1149 0512 8093 3800 sts 56,r24
276:main.c **** set_clk();
1151 .LM129:
1152 0516 8091 3800 lds r24,56
1153 051a 8160 ori r24,lo8(1)
1154 051c 8093 3800 sts 56,r24
277:main.c **** clr_clk();
1156 .LM130:
1157 0520 8091 3800 lds r24,56
1158 0524 8E7F andi r24,lo8(-2)
1159 0526 8093 3800 sts 56,r24
278:main.c **** x_byte=x_byte<<1;
1161 .LM131:
1162 052a 8981 ldd r24,Y+1
1163 052c 880F lsl r24
1164 052e 8983 std Y+1,r24
1166 .LM132:
1167 0530 8A81 ldd r24,Y+2
1168 0532 8F5F subi r24,lo8(-(1))
1169 0534 8A83 std Y+2,r24
1170 0536 D5CF rjmp .L53
1171 .L52:
1172 /* epilogue: frame size=3 */
1173 0538 2396 adiw r28,3
1174 053a 0FB6 in __tmp_reg__,__SREG__
1175 053c F894 cli
1176 053e DEBF out __SP_H__,r29
1177 0540 0FBE out __SREG__,__tmp_reg__
1178 0542 CDBF out __SP_L__,r28
1179 0544 DF91 pop r29
1180 0546 CF91 pop r28
1181 0548 0895 ret
1182 /* epilogue end (size=9) */
1183 /* function transmission_byte size 64 (45) */
1189 .Lscope13:
1190 .comm data_Int1,1,1
1191 .comm data_Int2,1,1
1192 .comm jtd_data1,2,1
1193 .comm jtd_data2,2,1
1194 .comm color,1,1
1195 .comm key_data,1,1
1196 .comm work_mode,1,1
1197 .comm led_data,4,1
1198 .comm led_wei,1,1
1199 .comm t0_quantum,1,1
1220 .text
1222 Letext:
1223 /* File "main.c": code 679 = 0x02a7 ( 488), prologues 104, epilogues 87 */
DEFINED SYMBOLS
*ABS*:00000000 main.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:61 .data:00000000 year
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:65 .data:00000001 month
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:69 .data:00000002 day
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:73 .data:00000003 week
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:77 .data:00000004 hour
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:81 .data:00000005 minute
.bss:00000002 second
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:89 .text:00000000 delay_1us
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:117 .text:00000010 delay_nus
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:172 .text:00000050 delay_1ms
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:233 .text:00000094 delay_nms
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:286 .text:000000d4 IO_INIT
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:312 .text:000000e8 ds1302_write
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:502 .text:00000206 ds1302_read
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:706 .text:00000332 check_ds1302
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:766 .text:00000378 ds1302_read_time
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:821 .text:000003be ds1302_write_time
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:911 .data:00000006 led
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:928 .bss:00000000 jtd_row
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:934 .bss:00000001 work_m
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:941 .text:0000041c delay
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:991 .text:0000045a main
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:1057 .text:000004a2 init
*COM*:00000004 led_data
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:1096 .text:000004ca transmission_byte
*COM*:00000001 color
*COM*:00000001 work_mode
*COM*:00000001 data_Int1
*COM*:00000001 data_Int2
*COM*:00000002 jtd_data1
*COM*:00000002 jtd_data2
*COM*:00000001 key_data
*COM*:00000001 led_wei
*COM*:00000001 t0_quantum
C:\DOCUME~1\wxdxh\LOCALS~1\Temp/cck1aaaa.s:1222 .text:0000054a Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__stack
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -