⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 avr常用功能程序中包含了pwm、adc、中断、定时、i2c等各程序可供开发者直接使用
💻 LST
📖 第 1 页 / 共 5 页
字号:
  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 + -