📄 main.lst
字号:
70:main.c **** //定义工作模式
71:main.c **** #define run_mode 1//正常工作
72:main.c **** #define T_time 2//调整时钟
73:main.c **** #define T_rg 3//调整红绿灯
74:main.c **** #define T_yellow 4//调整黄闪时间
75:main.c **** #define T_h 1//正常工作
76:main.c **** #define T_m 2//调整时钟
77:main.c **** #define NULL 10
78:main.c **** //全局变量
79:main.c **** const uchar led[11] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};
80:main.c **** uint jtd_data1,jtd_data2;
81:main.c **** uchar jtd_row=0;
82:main.c **** uchar color;//交通灯颜色
83:main.c **** uchar key_data;//按键值
84:main.c **** uchar work_mode;//工作模式变量:四种
85:main.c **** uchar work_m=0;//第二级工作模式
86:main.c **** uchar led_data_1,led_data_2,led_data_3,led_data_4;
87:main.c **** uchar led_wei;
88:main.c **** uchar led_wx=0xfe;
89:main.c **** uchar t0_quantum;
90:main.c **** //函数声名
91:main.c **** void transmission_byte(uchar x_byte);
92:main.c **** void transmision_jtd(void);
93:main.c **** void transmision_red(void);
94:main.c **** void transmision_green(void);
95:main.c **** void transmision_yellow(void);
96:main.c **** void T0_INIT(void);
97:main.c **** void spi_init(void);
98:main.c **** uchar _key_(void);
99:main.c **** void setting_time(void);
100:main.c **** void init(void);
101:main.c **** void normal_mode(void);
102:main.c **** void setting_mode(void);
103:main.c ****
104:main.c **** delay(unsigned int i)
105:main.c **** {
951 .LM102:
952 /* prologue: frame size=2 */
953 041c CF93 push r28
954 041e DF93 push r29
955 0420 CDB7 in r28,__SP_L__
956 0422 DEB7 in r29,__SP_H__
957 0424 2297 sbiw r28,2
958 0426 0FB6 in __tmp_reg__,__SREG__
959 0428 F894 cli
960 042a DEBF out __SP_H__,r29
961 042c 0FBE out __SREG__,__tmp_reg__
962 042e CDBF out __SP_L__,r28
963 /* prologue end (size=10) */
964 0430 8983 std Y+1,r24
965 0432 9A83 std Y+2,r25
966 .L43:
106:main.c **** for(;i>0;i--);
968 .LM103:
969 0434 8981 ldd r24,Y+1
970 0436 9A81 ldd r25,Y+2
971 0438 0097 sbiw r24,0
972 043a 31F0 breq .L44
973 043c 8981 ldd r24,Y+1
974 043e 9A81 ldd r25,Y+2
975 0440 0197 sbiw r24,1
976 0442 8983 std Y+1,r24
977 0444 9A83 std Y+2,r25
978 0446 F6CF rjmp .L43
979 .L44:
980 /* epilogue: frame size=2 */
981 0448 2296 adiw r28,2
982 044a 0FB6 in __tmp_reg__,__SREG__
983 044c F894 cli
984 044e DEBF out __SP_H__,r29
985 0450 0FBE out __SREG__,__tmp_reg__
986 0452 CDBF out __SP_L__,r28
987 0454 DF91 pop r29
988 0456 CF91 pop r28
989 0458 0895 ret
990 /* epilogue end (size=9) */
991 /* function delay size 31 (12) */
993 .Lscope10:
995 .global __vector_9
997 __vector_9:
107:main.c ****
108:main.c **** }
109:main.c ****
110:main.c ****
111:main.c **** /************************************************
112:main.c **** 调用方式:IGNAL(SIG_OVERFLOW0)
113:main.c **** 函数说明:定时器T0中断函数,用以扫描显示
114:main.c **** 传递参数:无
115:main.c **** 返 回 值:无
116:main.c **** ************************************************/
117:main.c **** SIGNAL(SIG_OVERFLOW0) //T0定时中断显示
118:main.c **** {
999 .LM104:
1000 /* prologue: frame size=0 */
1001 045a 1F92 push __zero_reg__
1002 045c 0F92 push __tmp_reg__
1003 045e 0FB6 in __tmp_reg__,__SREG__
1004 0460 0F92 push __tmp_reg__
1005 0462 1124 clr __zero_reg__
1006 0464 2F93 push r18
1007 0466 3F93 push r19
1008 0468 4F93 push r20
1009 046a 5F93 push r21
1010 046c 6F93 push r22
1011 046e 7F93 push r23
1012 0470 8F93 push r24
1013 0472 9F93 push r25
1014 0474 AF93 push r26
1015 0476 BF93 push r27
1016 0478 EF93 push r30
1017 047a FF93 push r31
1018 047c CF93 push r28
1019 047e DF93 push r29
1020 0480 CDB7 in r28,__SP_L__
1021 0482 DEB7 in r29,__SP_H__
1022 /* prologue end (size=21) */
119:main.c **** PORTC&=0XF8;
1024 .LM105:
1025 0484 88EF ldi r24,lo8(-8)
1026 0486 9091 3500 lds r25,53
1027 048a 8923 and r24,r25
1028 048c 8093 3500 sts 53,r24
120:main.c **** setting_mode();
1030 .LM106:
1031 0490 7ED0 rcall setting_mode
1032 /* epilogue: frame size=0 */
1033 0492 DF91 pop r29
1034 0494 CF91 pop r28
1035 0496 FF91 pop r31
1036 0498 EF91 pop r30
1037 049a BF91 pop r27
1038 049c AF91 pop r26
1039 049e 9F91 pop r25
1040 04a0 8F91 pop r24
1041 04a2 7F91 pop r23
1042 04a4 6F91 pop r22
1043 04a6 5F91 pop r21
1044 04a8 4F91 pop r20
1045 04aa 3F91 pop r19
1046 04ac 2F91 pop r18
1047 04ae 0F90 pop __tmp_reg__
1048 04b0 0FBE out __SREG__,__tmp_reg__
1049 04b2 0F90 pop __tmp_reg__
1050 04b4 1F90 pop __zero_reg__
1051 04b6 1895 reti
1052 /* epilogue end (size=19) */
1053 /* function __vector_9 size 47 (7) */
1055 .Lscope11:
1057 .global T0_INIT
1059 T0_INIT:
121:main.c **** // PORTD=0Xfe;
122:main.c **** // transmission_byte(0);
123:main.c ****
124:main.c **** }
125:main.c ****
126:main.c **** /************************************************
127:main.c **** 调用方式:void T0_INIT(void)
128:main.c **** 函数说明:初始化定时器T0
129:main.c **** 传递参数:无
130:main.c **** 返 回 值:无
131:main.c **** ************************************************/
132:main.c **** void T0_INIT(void) //溢出中断用于秒记时
133:main.c **** {
1061 .LM107:
1062 /* prologue: frame size=0 */
1063 04b8 CF93 push r28
1064 04ba DF93 push r29
1065 04bc CDB7 in r28,__SP_L__
1066 04be DEB7 in r29,__SP_H__
1067 /* prologue end (size=4) */
134:main.c **** //T/C0 中断例程 7.3728MHz
135:main.c **** TCNT0=00;
1069 .LM108:
1070 04c0 1092 5200 sts 82,__zero_reg__
136:main.c **** //TCCR0=_BV(CS01)|_BV(CS00); // 预分频 ck/64 ,计数允许
137:main.c **** TCCR0=_BV(CS01); //ck/8
1072 .LM109:
1073 04c4 82E0 ldi r24,lo8(2)
1074 04c6 8093 5300 sts 83,r24
138:main.c **** TIMSK=_BV(TOIE0); //T0溢出中断使能
1076 .LM110:
1077 04ca 81E0 ldi r24,lo8(1)
1078 04cc 8093 5900 sts 89,r24
139:main.c **** TIFR&=~(1<<TOV0); //清除没有执行的中断
1080 .LM111:
1081 04d0 8091 5800 lds r24,88
1082 04d4 8E7F andi r24,lo8(-2)
1083 04d6 8093 5800 sts 88,r24
140:main.c **** SREG=0X80; //中断EN or use sei();
1085 .LM112:
1086 04da 80E8 ldi r24,lo8(-128)
1087 04dc 8093 5F00 sts 95,r24
1088 /* epilogue: frame size=0 */
1089 04e0 DF91 pop r29
1090 04e2 CF91 pop r28
1091 04e4 0895 ret
1092 /* epilogue end (size=3) */
1093 /* function T0_INIT size 23 (16) */
1095 .Lscope12:
1097 .global main
1099 main:
141:main.c **** }
142:main.c ****
143:main.c ****
144:main.c ****
145:main.c **** /************************************************
146:main.c **** 调用方式:主函数
147:main.c **** 函数说明:
148:main.c **** 传递参数:无
149:main.c **** 返 回 值:无
150:main.c **** ************************************************/
151:main.c **** int main(void)
152:main.c **** {
1101 .LM113:
1102 /* prologue: frame size=0 */
1103 04e6 C0E0 ldi r28,lo8(__stack - 0)
1104 04e8 D0E0 ldi r29,hi8(__stack - 0)
1105 04ea DEBF out __SP_H__,r29
1106 04ec CDBF out __SP_L__,r28
1107 /* prologue end (size=4) */
153:main.c **** PORTC=0XFE;
1109 .LM114:
1110 04ee 8EEF ldi r24,lo8(-2)
1111 04f0 8093 3500 sts 53,r24
154:main.c **** transmission_byte(0XFF);
1113 .LM115:
1114 04f4 8FEF ldi r24,lo8(-1)
1115 04f6 BCD0 rcall transmission_byte
155:main.c **** init();
1117 .LM116:
1118 04f8 31D0 rcall init
156:main.c **** T0_INIT();
1120 .LM117:
1121 04fa DEDF rcall T0_INIT
157:main.c **** hour=0x01;
1123 .LM118:
1124 04fc 81E0 ldi r24,lo8(1)
1125 04fe 8093 0000 sts hour,r24
158:main.c **** year=0x06,month=0x03,day=0x15,week=0x02;
1127 .LM119:
1128 0502 86E0 ldi r24,lo8(6)
1129 0504 8093 0000 sts year,r24
1130 0508 83E0 ldi r24,lo8(3)
1131 050a 8093 0000 sts month,r24
1132 050e 85E1 ldi r24,lo8(21)
1133 0510 8093 0000 sts day,r24
1134 0514 82E0 ldi r24,lo8(2)
1135 0516 8093 0000 sts week,r24
159:main.c **** hour=0x02,minute=0x14,second=0x00;
1137 .LM120:
1138 051a 82E0 ldi r24,lo8(2)
1139 051c 8093 0000 sts hour,r24
1140 0520 84E1 ldi r24,lo8(20)
1141 0522 8093 0000 sts minute,r24
1142 0526 1092 0000 sts second,__zero_reg__
160:main.c **** ds1302_write_time();//写入调整后的时间
1144 .LM121:
1145 052a 49DF rcall ds1302_write_time
1146 .L49:
161:main.c ****
162:main.c **** while(1)
163:main.c **** {
164:main.c **** led_data_1=hour>>4;
1148 .LM122:
1149 052c 8091 0000 lds r24,hour
1150 0530 8295 swap r24
1151 0532 8F70 andi r24,0x0f
1152 0534 8093 0000 sts led_data_1,r24
165:main.c **** led_data_2=hour&0x0f;
1154 .LM123:
1155 0538 8091 0000 lds r24,hour
1156 053c 8F70 andi r24,lo8(15)
1157 053e 8093 0000 sts led_data_2,r24
166:main.c **** led_data_3=minute>>4;
1159 .LM124:
1160 0542 8091 0000 lds r24,minute
1161 0546 8295 swap r24
1162 0548 8F70 andi r24,0x0f
1163 054a 8093 0000 sts led_data_3,r24
167:main.c **** led_data_4=minute&0x0f;
1165 .LM125:
1166 054e 8091 0000 lds r24,minute
1167 0552 8F70 andi r24,lo8(15)
1168 0554 8093 0000 sts led_data_4,r24
168:main.c ****
169:main.c **** ds1302_read_time();
1170 .LM126:
1171 0558 0FDF rcall ds1302_read_time
1172 055a E8CF rjmp .L49
1173 /* epilogue: frame size=0 */
1174 /* epilogue: noreturn */
1175 /* epilogue end (size=0) */
1176 /* function main size 59 (55) */
1178 .Lscope13:
1180 .global init
1182 init:
170:main.c **** }
171:main.c **** }
172:main.c ****
173:main.c **** /************************************************
174:main.c **** 调用方式:void init(void)
175:main.c **** 函数说明:
176:main.c **** 传递参数:无
177:main.c **** 返 回 值:无
178:main.c **** ************************************************/
179:main.c **** void init(void)
180:main.c **** {
1184 .LM127:
1185 /* prologue: frame size=0 */
1186 055c CF93 push r28
1187 055e DF93 push r29
1188 0560 CDB7 in r28,__SP_L__
1189 0562 DEB7 in r29,__SP_H__
1190 /* prologue end (size=4) */
181:main.c **** //T0_INIT();
182:main.c **** // color=0;
183:main.c **** led_wei=0;
1192 .LM128:
1193 0564 1092 0000 sts led_wei,__zero_reg__
184:main.c **** jtd_row=0;
1195 .LM129:
1196 0568 1092 0000 sts jtd_row,__zero_reg__
185:main.c **** work_mode=run_mode;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -