📄 ds1302.lst
字号:
__start:
__text_start:
34 E5CF LDI R28,0x5F
35 E0D2 LDI R29,2
36 BFCD OUT 0x3D,R28
37 BFDE OUT 0x3E,R29
38 51C0 SUBI R28,0x10
39 40D0 SBCI R29,0
3A EA0A LDI R16,0xAA
3B 8308 STD Y+0,R16
3C 2400 CLR R0
3D EAE6 LDI R30,0xA6
3E E0F0 LDI R31,0
3F E010 LDI R17,0
40 3BE8 CPI R30,0xB8
41 07F1 CPC R31,R17
42 F011 BEQ 0x0045
43 9201 ST R0,Z+
44 CFFB RJMP 0x0040
45 8300 STD Z+0,R16
46 E2E2 LDI R30,0x22
47 E0F0 LDI R31,0
48 E6A0 LDI R26,0x60
49 E0B0 LDI R27,0
4A E010 LDI R17,0
4B E000 LDI R16,0
4C BF0B OUT 0x3B,R16
4D 36E8 CPI R30,0x68
4E 07F1 CPC R31,R17
4F F021 BEQ 0x0054
50 95C8 LPM
51 9631 ADIW R30,1
52 920D ST R0,X+
53 CFF9 RJMP 0x004D
54 D0BB RCALL _main
_exit:
55 CFFF RJMP _exit
_update_display_dp:
byte_counter --> R20
bit_count --> R22
temp_i --> R10
k --> R12
56 D681 RCALL push_xgsetF03C
57 0168 MOVW R12,R16
FILE: E:\AVR实验\ds1302+12864时钟\m4094.c
(0001) /*4094显示模式
(0002) 基于实验板接线方式
(0003) */
(0004) #include "d4094.h"
(0005)
(0006)
(0007) uchar table2[10]={0x81,0xB7,0xC2,0x92,0xB4,0x98,0x88,0xB3,0x80,0x90};
(0008) uchar led_buffer[4]={0,3};
(0009)
(0010) void update_display_dp(uint k)
(0011) {
(0012) uchar bit_count=0;
58 2766 CLR R22
(0013) uchar byte_counter=0;
59 2744 CLR R20
(0014) uchar temp_i=0;
5A 24AA CLR R10
(0015)
(0016) led_buffer[3]=k/1000;
5B EE28 LDI R18,0xE8
5C E033 LDI R19,3
5D 0186 MOVW R16,R12
5E D623 RCALL div16u
5F 9300 006D STS led_buffer+3,R16
(0017) led_buffer[2]=(k%1000)/100;
61 EE28 LDI R18,0xE8
62 E033 LDI R19,3
63 0186 MOVW R16,R12
64 D61B RCALL mod16u
65 E624 LDI R18,0x64
66 E030 LDI R19,0
67 D61A RCALL div16u
68 9300 006C STS led_buffer+2,R16
(0018) led_buffer[1]=(k%100)/10;
6A E624 LDI R18,0x64
6B E030 LDI R19,0
6C 0186 MOVW R16,R12
6D D612 RCALL mod16u
6E E02A LDI R18,0xA
6F E030 LDI R19,0
70 D611 RCALL div16u
71 9300 006B STS led_buffer+1,R16
(0019) led_buffer[0]=k%10;
73 E02A LDI R18,0xA
74 E030 LDI R19,0
75 0186 MOVW R16,R12
76 D609 RCALL mod16u
77 9300 006A STS led_buffer,R16
(0020)
(0021) CLR_STR_4094;//led_str_off;
79 98AE CBI 0x15,6
(0022) CLR_CLK_4094;//led_clk_off;
7A 98AD CBI 0x15,5
(0023)
(0024) for(byte_counter=0;byte_counter<4;byte_counter++)
7B C01C RJMP 0x0098
(0025) {
(0026) bit_count=8;
7C E068 LDI R22,0x8
(0027) temp_i=table2[led_buffer[byte_counter]];
7D E68A LDI R24,0x6A
7E E090 LDI R25,0
7F 2FE4 MOV R30,R20
80 27FF CLR R31
81 0FE8 ADD R30,R24
82 1FF9 ADC R31,R25
83 81E0 LDD R30,Z+0
84 27FF CLR R31
85 E680 LDI R24,0x60
86 E090 LDI R25,0
87 0FE8 ADD R30,R24
88 1FF9 ADC R31,R25
89 80A0 LDD R10,Z+0
8A C009 RJMP 0x0094
(0028)
(0029) while(bit_count>0)
(0030) {
(0031) if((temp_i&0x01)==0)
8B FCA0 SBRC R10,0
8C C002 RJMP 0x008F
(0032) {
(0033) CLR_DATA_4094;//led_d_off;
8D 98AC CBI 0x15,4
(0034) }
8E C001 RJMP 0x0090
(0035) else
(0036) {
(0037) SET_DATA_4094;//led_d_on;
8F 9AAC SBI 0x15,4
(0038) }
(0039) temp_i=(temp_i>>1);
90 94A6 LSR R10
(0040)
(0041)
(0042) SET_CLK_4094;//led_clk_on;
91 9AAD SBI 0x15,5
(0043)
(0044) CLR_CLK_4094;//led_clk_off;
92 98AD CBI 0x15,5
(0045)
(0046) bit_count--;
93 956A DEC R22
94 E080 LDI R24,0
95 1786 CP R24,R22
96 F3A0 BCS 0x008B
97 9543 INC R20
98 3044 CPI R20,4
99 F310 BCS 0x007C
(0047)
(0048) }
(0049)
(0050) }
(0051) SET_STR_4094;
9A 9AAE SBI 0x15,6
9B C645 RJMP pop_xgsetF03C
_jisuan:
d --> R20
e --> R22
b_data --> R16
9C 934A ST R20,-Y
9D 936A ST R22,-Y
FILE: E:\AVR实验\ds1302+12864时钟\main.c
(0001) #include <iom8515v.h>
(0002) #include "ds1302.h"
(0003) #include "jhd12864.h"
(0004) #include "d4094.h"
(0005) #include "charindex.h"
(0006)
(0007)
(0008)
(0009) uint gewei,shiwei;
(0010) uint sec,min,hour,year,month,day,date;
(0011) uchar mid[10]={0};
(0012)
(0013)
(0014) void jisuan(uchar b_data)
(0015) {
(0016) uchar e,d;
(0017) e=b_data;
9E 2F60 MOV R22,R16
(0018) d=e;
9F 2F46 MOV R20,R22
(0019) e=e&0x0f;
A0 706F ANDI R22,0xF
(0020) d=d>>4;
A1 2F84 MOV R24,R20
A2 9582 SWAP R24
A3 708F ANDI R24,0xF
A4 2F48 MOV R20,R24
(0021) gewei=(e&0x01)+((e>>1)&0x01)*2+((e>>2)&0x01)*4+((e>>3)&0x01)*8;
A5 2F86 MOV R24,R22
A6 2799 CLR R25
A7 9595 ASR R25
A8 9587 ROR R24
A9 7081 ANDI R24,1
AA 7090 ANDI R25,0
AB 011C MOVW R2,R24
AC 0C22 LSL R2
AD 1C33 ROL R3
AE 2F86 MOV R24,R22
AF 2799 CLR R25
B0 7081 ANDI R24,1
B1 7090 ANDI R25,0
B2 012C MOVW R4,R24
B3 0C42 ADD R4,R2
B4 1C53 ADC R5,R3
B5 2F86 MOV R24,R22
B6 2799 CLR R25
B7 9595 ASR R25
B8 9587 ROR R24
B9 9595 ASR R25
BA 9587 ROR R24
BB 7081 ANDI R24,1
BC 7090 ANDI R25,0
BD 0F88 LSL R24
BE 1F99 ROL R25
BF 0F88 LSL R24
C0 1F99 ROL R25
C1 0E48 ADD R4,R24
C2 1E59 ADC R5,R25
C3 2F86 MOV R24,R22
C4 2799 CLR R25
C5 9595 ASR R25
C6 9587 ROR R24
C7 9595 ASR R25
C8 9587 ROR R24
C9 9595 ASR R25
CA 9587 ROR R24
CB 7081 ANDI R24,1
CC 7090 ANDI R25,0
CD 0F88 LSL R24
CE 1F99 ROL R25
CF 0F88 LSL R24
D0 1F99 ROL R25
D1 0F88 LSL R24
D2 1F99 ROL R25
D3 0E48 ADD R4,R24
D4 1E59 ADC R5,R25
D5 9250 00B7 STS gewei+1,R5
D7 9240 00B6 STS gewei,R4
(0022) shiwei=(d&0x01)+((d>>1)&0x01)*2+((d>>2)&0x01)*4+((d>>3)&0x01)*8;
D9 2F84 MOV R24,R20
DA 2799 CLR R25
DB 9595 ASR R25
DC 9587 ROR R24
DD 7081 ANDI R24,1
DE 7090 ANDI R25,0
DF 011C MOVW R2,R24
E0 0C22 LSL R2
E1 1C33 ROL R3
E2 2F84 MOV R24,R20
E3 2799 CLR R25
E4 7081 ANDI R24,1
E5 7090 ANDI R25,0
E6 012C MOVW R4,R24
E7 0C42 ADD R4,R2
E8 1C53 ADC R5,R3
E9 2F84 MOV R24,R20
EA 2799 CLR R25
EB 9595 ASR R25
EC 9587 ROR R24
ED 9595 ASR R25
EE 9587 ROR R24
EF 7081 ANDI R24,1
F0 7090 ANDI R25,0
F1 0F88 LSL R24
F2 1F99 ROL R25
F3 0F88 LSL R24
F4 1F99 ROL R25
F5 0E48 ADD R4,R24
F6 1E59 ADC R5,R25
F7 2F84 MOV R24,R20
F8 2799 CLR R25
F9 9595 ASR R25
FA 9587 ROR R24
FB 9595 ASR R25
FC 9587 ROR R24
FD 9595 ASR R25
FE 9587 ROR R24
FF 7081 ANDI R24,1
100 7090 ANDI R25,0
101 0F88 LSL R24
102 1F99 ROL R25
103 0F88 LSL R24
104 1F99 ROL R25
105 0F88 LSL R24
106 1F99 ROL R25
107 0E48 ADD R4,R24
108 1E59 ADC R5,R25
109 9250 00B5 STS shiwei+1,R5
10B 9240 00B4 STS shiwei,R4
10D 9169 LD R22,Y+
10E 9149 LD R20,Y+
10F 9508 RET
_main:
num --> R20
110 9724 SBIW R28,4
(0023)
(0024) }
(0025)
(0026)
(0027)
(0028) void main()
(0029) {
(0030)
(0031) uchar num=0x01;
111 E041 LDI R20,1
(0032)
(0033) DDRC=0xFF;
112 EF8F LDI R24,0xFF
113 BB84 OUT 0x14,R24
(0034) PORTC=0xFF;
114 BB85 OUT 0x15,R24
(0035)
(0036) LCD_Init();
115 D4B1 RCALL _LCD_Init
(0037) delay_1ms(50);
116 E302 LDI R16,0x32
117 E010 LDI R17,0
118 D300 RCALL _delay_1ms
(0038) LCD_Init(); //初始化两边是关键,否则液晶上电重起将不能显示
119 D4AD RCALL _LCD_Init
(0039)
(0040) WriteSec(0x50);
11A E500 LDI R16,0x50
11B E010 LDI R17,0
11C D267 RCALL _WriteSec
(0041) WriteMin(0x59);
11D E509 LDI R16,0x59
11E E010 LDI R17,0
11F D26D RCALL _WriteMin
(0042) WriteHour(0x23);
120 E203 LDI R16,0x23
121 E010 LDI R17,0
122 D273 RCALL _WriteHour
(0043) WriteYear(0x99);
123 E909 LDI R16,0x99
124 E010 LDI R17,0
125 D279 RCALL _WriteYear
(0044) WriteMonth(0x12);
126 E102 LDI R16,0x12
127 E010 LDI R17,0
128 D27F RCALL _WriteMonth
(0045) WriteDate(0x31);
129 E301 LDI R16,0x31
12A E010 LDI R17,0
12B D28E RCALL _WriteDate
(0046)
(0047) WriteDay(0x07);
12C E007 LDI R16,7
12D E010 LDI R17,0
12E D282 RCALL _WriteDay
(0048)
(0049) Char_Set_XY(1,0,"time");
12F E88D LDI R24,0x8D
130 E090 LDI R25,0
131 8399 STD Y+1,R25
132 8388 STD Y+0,R24
133 2722 CLR R18
134 2733 CLR R19
135 E001 LDI R16,1
136 E010 LDI R17,0
137 D33B RCALL _Char_Set_XY
(0050) Char_Set_XY(1,1,"date");
138 E888 LDI R24,0x88
139 E090 LDI R25,0
13A 8399 STD Y+1,R25
13B 8388 STD Y+0,R24
13C E021 LDI R18,1
13D E030 LDI R19,0
13E E001 LDI R16,1
13F E010 LDI R17,0
140 D332 RCALL _Char_Set_XY
(0051) Char_Set_XY(1,2,"week");
141 E883 LDI R24,0x83
142 E090 LDI R25,0
143 8399 STD Y+1,R25
144 8388 STD Y+0,R24
145 E022 LDI R18,2
146 E030 LDI R19,0
147 E001 LDI R16,1
148 E010 LDI R17,0
149 D329 RCALL _Char_Set_XY
(0052)
(0053)
(0054) Char_Set_XY_BYTE(6,0,charindex[10],2);
14A E082 LDI R24,2
14B E090 LDI R25,0
14C 839B STD Y+3,R25
14D 838A STD Y+2,R24
14E 9020 0078 LDS R2,0x0078
150 2433 CLR R3
151 8239 STD Y+1,R3
152 8228 STD Y+0,R2
153 2722 CLR R18
154 2733 CLR R19
155 E006 LDI R16,6
156 E010 LDI R17,0
157 D34F RCALL _Char_Set_XY_BYTE
(0055) Char_Set_XY_BYTE(5,0,charindex[10],1);
158 E081 LDI R24,1
159 E090 LDI R25,0
15A 839B STD Y+3,R25
15B 838A STD Y+2,R24
15C 9020 0078 LDS R2,0x0078
15E 2433 CLR R3
15F 8239 STD Y+1,R3
160 8228 STD Y+0,R2
161 2722 CLR R18
162 2733 CLR R19
163 E005 LDI R16,5
164 E010 LDI R17,0
165 D341 RCALL _Char_Set_XY_BYTE
(0056) Char_Set_XY_BYTE(6,1,charindex[10],2);
166 E082 LDI R24,2
167 E090 LDI R25,0
168 839B STD Y+3,R25
169 838A STD Y+2,R24
16A 9020 0078 LDS R2,0x0078
16C 2433 CLR R3
16D 8239 STD Y+1,R3
16E 8228 STD Y+0,R2
16F E021 LDI R18,1
170 E030 LDI R19,0
171 E006 LDI R16,6
172 E010 LDI R17,0
173 D333 RCALL _Char_Set_XY_BYTE
(0057) Char_Set_XY_BYTE(5,1,charindex[10],1);
174 E081 LDI R24,1
175 E090 LDI R25,0
176 839B STD Y+3,R25
177 838A STD Y+2,R24
178 9020 0078 LDS R2,0x0078
17A 2433 CLR R3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -