📄 main.lst
字号:
738 035c 02C0 rjmp .L37
739 .L38:
157:./ds1302.h **** else return 0;
741 .LM80:
742 035e 1982 std Y+1,__zero_reg__
743 0360 1A82 std Y+2,__zero_reg__
744 .L37:
158:./ds1302.h **** }
746 .LM81:
747 0362 8981 ldd r24,Y+1
748 0364 9A81 ldd r25,Y+2
749 /* epilogue: frame size=2 */
750 0366 2296 adiw r28,2
751 0368 0FB6 in __tmp_reg__,__SREG__
752 036a F894 cli
753 036c DEBF out __SP_H__,r29
754 036e 0FBE out __SREG__,__tmp_reg__
755 0370 CDBF out __SP_L__,r28
756 0372 DF91 pop r29
757 0374 CF91 pop r28
758 0376 0895 ret
759 /* epilogue end (size=9) */
760 /* function check_ds1302 size 35 (16) */
762 .Lscope7:
764 .global ds1302_read_time
766 ds1302_read_time:
159:./ds1302.h **** void ds1302_read_time(void)
160:./ds1302.h **** {
768 .LM82:
769 /* prologue: frame size=0 */
770 0378 CF93 push r28
771 037a DF93 push r29
772 037c CDB7 in r28,__SP_L__
773 037e DEB7 in r29,__SP_H__
774 /* prologue end (size=4) */
161:./ds1302.h **** year=ds1302_read(ds1302_year_reg); //年
776 .LM83:
777 0380 8CE8 ldi r24,lo8(-116)
778 0382 41DF rcall ds1302_read
779 0384 8093 0000 sts year,r24
162:./ds1302.h **** month=ds1302_read(ds1302_month_reg); //月
781 .LM84:
782 0388 88E8 ldi r24,lo8(-120)
783 038a 3DDF rcall ds1302_read
784 038c 8093 0000 sts month,r24
163:./ds1302.h **** day=ds1302_read(ds1302_date_reg); //日
786 .LM85:
787 0390 86E8 ldi r24,lo8(-122)
788 0392 39DF rcall ds1302_read
789 0394 8093 0000 sts day,r24
164:./ds1302.h **** week=ds1302_read(ds1302_day_reg); //周
791 .LM86:
792 0398 8AE8 ldi r24,lo8(-118)
793 039a 35DF rcall ds1302_read
794 039c 8093 0000 sts week,r24
165:./ds1302.h **** hour=ds1302_read(ds1302_hr_reg); //时
796 .LM87:
797 03a0 84E8 ldi r24,lo8(-124)
798 03a2 31DF rcall ds1302_read
799 03a4 8093 0000 sts hour,r24
166:./ds1302.h **** minute=ds1302_read(ds1302_min_reg); //分
801 .LM88:
802 03a8 82E8 ldi r24,lo8(-126)
803 03aa 2DDF rcall ds1302_read
804 03ac 8093 0000 sts minute,r24
167:./ds1302.h **** second=ds1302_read(ds1302_sec_reg); //秒
806 .LM89:
807 03b0 80E8 ldi r24,lo8(-128)
808 03b2 29DF rcall ds1302_read
809 03b4 8093 0000 sts second,r24
810 /* epilogue: frame size=0 */
811 03b8 DF91 pop r29
812 03ba CF91 pop r28
813 03bc 0895 ret
814 /* epilogue end (size=3) */
815 /* function ds1302_read_time size 35 (28) */
817 .Lscope8:
819 .global ds1302_write_time
821 ds1302_write_time:
168:./ds1302.h **** }
169:./ds1302.h **** /******************************************************************/
170:./ds1302.h **** void ds1302_write_time(void)
171:./ds1302.h **** {
823 .LM90:
824 /* prologue: frame size=0 */
825 03be CF93 push r28
826 03c0 DF93 push r29
827 03c2 CDB7 in r28,__SP_L__
828 03c4 DEB7 in r29,__SP_H__
829 /* prologue end (size=4) */
172:./ds1302.h **** ds1302_write(ds1302_control_reg,0x00); //关闭写保护
831 .LM91:
832 03c6 60E0 ldi r22,lo8(0)
833 03c8 8EE8 ldi r24,lo8(-114)
834 03ca 8EDE rcall ds1302_write
173:./ds1302.h **** ds1302_write(ds1302_sec_reg,0x80); //暂停
836 .LM92:
837 03cc 60E8 ldi r22,lo8(-128)
838 03ce 80E8 ldi r24,lo8(-128)
839 03d0 8BDE rcall ds1302_write
174:./ds1302.h **** delay_nms(10);
841 .LM93:
842 03d2 8AE0 ldi r24,lo8(10)
843 03d4 90E0 ldi r25,hi8(10)
844 03d6 5EDE rcall delay_nms
175:./ds1302.h **** //ds1302_write(ds1302_charger_reg,0xa9); //涓流充电
176:./ds1302.h **** ds1302_write(ds1302_year_reg,year); //年
846 .LM94:
847 03d8 6091 0000 lds r22,year
848 03dc 8CE8 ldi r24,lo8(-116)
849 03de 84DE rcall ds1302_write
177:./ds1302.h **** ds1302_write(ds1302_month_reg,month); //月
851 .LM95:
852 03e0 6091 0000 lds r22,month
853 03e4 88E8 ldi r24,lo8(-120)
854 03e6 80DE rcall ds1302_write
178:./ds1302.h **** ds1302_write(ds1302_date_reg,day); //日
856 .LM96:
857 03e8 6091 0000 lds r22,day
858 03ec 86E8 ldi r24,lo8(-122)
859 03ee 7CDE rcall ds1302_write
179:./ds1302.h **** ds1302_write(ds1302_day_reg,week); //周
861 .LM97:
862 03f0 6091 0000 lds r22,week
863 03f4 8AE8 ldi r24,lo8(-118)
864 03f6 78DE rcall ds1302_write
180:./ds1302.h **** ds1302_write(ds1302_hr_reg,hour); //时
866 .LM98:
867 03f8 6091 0000 lds r22,hour
868 03fc 84E8 ldi r24,lo8(-124)
869 03fe 74DE rcall ds1302_write
181:./ds1302.h **** ds1302_write(ds1302_min_reg,minute); //分
871 .LM99:
872 0400 6091 0000 lds r22,minute
873 0404 82E8 ldi r24,lo8(-126)
874 0406 70DE rcall ds1302_write
182:./ds1302.h **** ds1302_write(ds1302_sec_reg,second); //秒
876 .LM100:
877 0408 6091 0000 lds r22,second
878 040c 80E8 ldi r24,lo8(-128)
879 040e 6CDE rcall ds1302_write
183:./ds1302.h **** ds1302_write(ds1302_control_reg,0x80); //打开写保护
881 .LM101:
882 0410 60E8 ldi r22,lo8(-128)
883 0412 8EE8 ldi r24,lo8(-114)
884 0414 69DE rcall ds1302_write
885 /* epilogue: frame size=0 */
886 0416 DF91 pop r29
887 0418 CF91 pop r28
888 041a 0895 ret
889 /* epilogue end (size=3) */
890 /* function ds1302_write_time size 47 (40) */
892 .Lscope9:
907 .global led
908 .data
911 led:
912 0006 C0 .byte -64
913 0007 F9 .byte -7
914 0008 A4 .byte -92
915 0009 B0 .byte -80
916 000a 99 .byte -103
917 000b 92 .byte -110
918 000c 82 .byte -126
919 000d F8 .byte -8
920 000e 80 .byte -128
921 000f 90 .byte -112
922 0010 FF .byte -1
923 .global jtd_row
924 .global jtd_row
925 .section .bss
928 jtd_row:
929 0000 00 .skip 1,0
930 .global work_m
931 .global work_m
934 work_m:
935 0001 00 .skip 1,0
936 .text
939 .global delay
941 delay:
943 .Ltext2:
1:main.c **** /******************************************************************************
2:main.c **** *******************************************************************************
3:main.c **** ** **
4:main.c **** * *
5:main.c **** 作品名称:交通灯
6:main.c ****
7:main.c **** 功 能:交通灯的红绿灯点亮,夜晚的黄闪,红绿灯时间间隔可调,夜晚黄闪时间
8:main.c ****
9:main.c **** 可设定。
10:main.c ****
11:main.c **** 说 明:采用Atmal公司的 ATmega8 AVR单片机,通过SPI口扫描显示红绿黄灯,时
12:main.c ****
13:main.c **** 间显示用UART口扫描显示,
14:main.c ****
15:main.c **** 软件中对硬件控制部分的说明,软件流程说明
16:main.c ****
17:main.c **** 对本程序中的重要定义进行说明
18:main.c ****
19:main.c **** 硬件接口:注明硬件电路中外围电路与可编程器件的连接接口和其它主要硬件连接
20:main.c ****
21:main.c **** 设计单位:郑州铁路职业技术学院 实践教学中心 无线电协会
22:main.c ****
23:main.c **** 程序设计:庞志军,信息系,网络03A1,#29(另有设计人另起一行注明)
24:main.c ****
25:main.c **** ::::::::::::::::
26:main.c ****
27:main.c **** 设计时间:2006.03.05----完成时间,完善时间
28:main.c ****
29:main.c **** 完 善:完善人姓名专业班级,起-----止时间(另有完善人另起一行注明)
30:main.c ****
31:main.c **** :::::::::::::::::
32:main.c ****
33:main.c **** 版 本 号:
34:main.c **** * *
35:main.c **** ** **
36:main.c **** *******************************************************************************
37:main.c **** ******************************************************************************/
38:main.c ****
39:main.c **** //头文件
40:main.c **** #include <avr/io.h>
41:main.c **** #include <avr/eeprom.h>
42:main.c **** #include <ds1302.h>
43:main.c **** #include <avr/pgmspace.h>
44:main.c **** #include <avr/delay.h>
45:main.c ****
46:main.c **** //宏定义
47:main.c **** #define uchar unsigned char
48:main.c **** #define uint unsigned int
49:main.c **** #define red_time_rom 0x00//红灯时间存储地址
50:main.c **** #define green_time_rom 0x01//绿灯时间存储地址
51:main.c **** #define yellow_start_h_rom 0x02//黄闪起始时间(时)存储地址
52:main.c **** #define yellow_start_m_rom 0x03//黄闪起始时间(分)存储地址
53:main.c **** #define yellow_stop_h_rom 0x04//黄闪终止时间(时)存储地址
54:main.c **** #define yellow_stop_m_rom 0x05//黄闪终止时间(分)存储地址
55:main.c **** #define key1 PD4
56:main.c **** #define key2 PD5
57:main.c **** #define key3 PD6
58:main.c **** #define key4 PD7
59:main.c **** #define jtd_red() jtd_data=0xfffe
60:main.c **** #define jtd_yellow() jtd_data=0xffef
61:main.c **** #define jtd_green jtd_data=0xfeff
62:main.c **** #define set_data() PORTB|=1<<PB1
63:main.c **** #define clr_data() PORTB&=~(1<<PB1)
64:main.c **** #define set_clk() PORTB|=1<<PB0
65:main.c **** #define clr_clk() PORTB&=~(1<<PB0)
66:main.c **** //定义工作模式
67:main.c **** #define run_mode 1//正常工作
68:main.c **** #define T_time 2//调整时钟
69:main.c **** #define T_rg 3//调整红绿灯
70:main.c **** #define T_yellow 4//调整黄闪时间
71:main.c **** #define T_h 1//正常工作
72:main.c **** #define T_m 2//调整时钟
73:main.c **** #define NULL 10
74:main.c **** //全局变量
75:main.c **** const uchar led[11] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};
76:main.c **** uint jtd_data1,jtd_data2;
77:main.c **** uchar jtd_row=0;
78:main.c **** uchar color;//交通灯颜色
79:main.c **** uchar key_data;//按键值
80:main.c **** uchar work_mode;//工作模式变量:四种
81:main.c **** uchar work_m=0;//第二级工作模式
82:main.c **** uchar led_data[4];
83:main.c **** uchar led_wei;
84:main.c **** uchar t0_quantum;
85:main.c **** //函数声名
86:main.c **** void transmission_byte(uchar x_byte);
87:main.c **** void transmision_jtd(void);
88:main.c **** void transmision_red(void);
89:main.c **** void transmision_green(void);
90:main.c **** void transmision_yellow(void);
91:main.c **** void T0_INIT(void);
92:main.c **** void spi_init(void);
93:main.c **** uchar _key_(void);
94:main.c **** void setting_time(void);
95:main.c **** void init(void);
96:main.c **** void normal_mode(void);
97:main.c **** void setting_mode(void);
98:main.c ****
99:main.c **** delay(unsigned int i)
100:main.c **** {
945 .LM102:
946 /* prologue: frame size=2 */
947 041c CF93 push r28
948 041e DF93 push r29
949 0420 CDB7 in r28,__SP_L__
950 0422 DEB7 in r29,__SP_H__
951 0424 2297 sbiw r28,2
952 0426 0FB6 in __tmp_reg__,__SREG__
953 0428 F894 cli
954 042a DEBF out __SP_H__,r29
955 042c 0FBE out __SREG__,__tmp_reg__
956 042e CDBF out __SP_L__,r28
957 /* prologue end (size=10) */
958 0430 8983 std Y+1,r24
959 0432 9A83 std Y+2,r25
960 .L43:
101:main.c **** for(;i>0;i--);
962 .LM103:
963 0434 8981 ldd r24,Y+1
964 0436 9A81 ldd r25,Y+2
965 0438 0097 sbiw r24,0
966 043a 31F0 breq .L44
967 043c 8981 ldd r24,Y+1
968 043e 9A81 ldd r25,Y+2
969 0440 0197 sbiw r24,1
970 0442 8983 std Y+1,r24
971 0444 9A83 std Y+2,r25
972 0446 F6CF rjmp .L43
973 .L44:
974 /* epilogue: frame size=2 */
975 0448 2296 adiw r28,2
976 044a 0FB6 in __tmp_reg__,__SREG__
977 044c F894 cli
978 044e DEBF out __SP_H__,r29
979 0450 0FBE out __SREG__,__tmp_reg__
980 0452 CDBF out __SP_L__,r28
981 0454 DF91 pop r29
982 0456 CF91 pop r28
983 0458 0895 ret
984 /* epilogue end (size=9) */
985 /* function delay size 31 (12) */
987 .Lscope10:
989 .global main
991 main:
102:main.c ****
103:main.c **** }
104:main.c ****
105:main.c **** /************************************************
106:main.c **** 调用方式:主函数
107:main.c **** 函数说明:
108:main.c **** 传递参数:无
109:main.c **** 返 回 值:无
110:main.c **** ************************************************/
111:main.c **** int main(void)
112:main.c **** {
993 .LM104:
994 /* prologue: frame size=1 */
995 045a C0E0 ldi r28,lo8(__stack - 1)
996 045c D0E0 ldi r29,hi8(__stack - 1)
997 045e DEBF out __SP_H__,r29
998 0460 CDBF out __SP_L__,r28
999 /* prologue end (size=4) */
113:main.c **** unsigned char i;
114:main.c **** init();
1001 .LM105:
1002 0462 1FD0 rcall init
115:main.c **** while(1)
116:main.c **** {
117:main.c **** hour=0x01;
1004 .LM106:
1005 0464 81E0 ldi r24,lo8(1)
1006 0466 8093 0000 sts hour,r24
118:main.c **** ds1302_write_time();//写入调整后的时间
1008 .LM107:
1009 046a A9DF rcall ds1302_write_time
119:main.c **** i=led[0];
1011 .LM108:
1012 046c 8091 0000 lds r24,led
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -