📄 1602_duoji.lst
字号:
(0024) {
(0025) PORTC^=0B00000001; //PORTB.0 反转
0132 E081 LDI R24,1
0133 B225 IN R2,0x15
0134 2628 EOR R2,R24
0135 BA25 OUT 0x15,R2
(0026) if((PORTC&0x01)==0x01)
0136 B385 IN R24,0x15
0137 7081 ANDI R24,1
0138 3081 CPI R24,1
0139 F449 BNE 0x0143
(0027) {
(0028) zq=t1;
013A 9020009D LDS R2,t1
013C 9030009E LDS R3,t1+1
013E 923000A0 STS zq+1,R3
0140 9220009F STS zq,R2
(0029) }else
0142 C008 RJMP 0x014B
(0030) {
(0031) zq=t2;
0143 9020009B LDS R2,t2
0145 9030009C LDS R3,t2+1
0147 923000A0 STS zq+1,R3
0149 9220009F STS zq,R2
(0032) }
(0033) }
014B 9029 LD R2,Y+
014C BE2F OUT 0x3F,R2
014D 9199 LD R25,Y+
014E 9189 LD R24,Y+
014F 9039 LD R3,Y+
0150 9029 LD R2,Y+
0151 9518 RETI
(0034) }
(0035) void timer2_init(void)//50kHz
(0036) {
(0037) //TCCR2 = 0x00; //stop
(0038) ASSR=0x00;
_timer2_init:
0152 2422 CLR R2
0153 BC22 OUT 0x22,R2
(0039) TCCR2=0x02;
0154 E082 LDI R24,2
0155 BD85 OUT 0x25,R24
(0040) TCNT2=0xEF;
0156 EE8F LDI R24,0xEF
0157 BD84 OUT 0x24,R24
(0041) OCR2=0x00;
0158 BC23 OUT 0x23,R2
0159 9508 RET
_showtime:
i --> Y+3
th --> R22
tl --> R20
s --> R10
015A 940E0448 CALL push_gset3
015C 9722 SBIW R28,2
(0042) }
(0043) /************************************************
(0044) 1302显示子程序
(0045) ************************************************/
(0046) void showtime()
(0047) {
(0048) uchar s,i,th,tl;
(0049) //1302
(0050) s=read_data(0x8b);
015D E80B LDI R16,0x8B
015E 940E0397 CALL _read_data
0160 2EA0 MOV R10,R16
(0051) tl=s&0x0f;
0161 2D4A MOV R20,R10
0162 704F ANDI R20,0xF
(0052) switch(tl)
0163 2F64 MOV R22,R20
0164 2777 CLR R23
0165 3061 CPI R22,1
0166 E0E0 LDI R30,0
0167 077E CPC R23,R30
0168 F0C9 BEQ 0x0182
0169 3062 CPI R22,2
016A E0E0 LDI R30,0
016B 077E CPC R23,R30
016C F0F1 BEQ 0x018B
016D 3063 CPI R22,3
016E E0E0 LDI R30,0
016F 077E CPC R23,R30
0170 F119 BEQ 0x0194
0171 3064 CPI R22,4
0172 E0E0 LDI R30,0
0173 077E CPC R23,R30
0174 F141 BEQ 0x019D
0175 3065 CPI R22,5
0176 E0E0 LDI R30,0
0177 077E CPC R23,R30
0178 F169 BEQ 0x01A6
0179 3066 CPI R22,6
017A E0E0 LDI R30,0
017B 077E CPC R23,R30
017C F191 BEQ 0x01AF
017D 3067 CPI R22,7
017E E0E0 LDI R30,0
017F 077E CPC R23,R30
0180 F1B9 BEQ 0x01B8
0181 C03E RJMP 0x01C0
(0053) {
(0054) case 1:LCD_write_string(0,0,"monday");break;
0182 E984 LDI R24,0x94
0183 E090 LDI R25,0
0184 8399 STD Y+1,R25
0185 8388 STD Y+0,R24
0186 2722 CLR R18
0187 2700 CLR R16
0188 940E0105 CALL _LCD_write_string
018A C035 RJMP 0x01C0
(0055) case 2:LCD_write_string(0,0,"tuesday");break;
018B E88C LDI R24,0x8C
018C E090 LDI R25,0
018D 8399 STD Y+1,R25
018E 8388 STD Y+0,R24
018F 2722 CLR R18
0190 2700 CLR R16
0191 940E0105 CALL _LCD_write_string
0193 C02C RJMP 0x01C0
(0056) case 3:LCD_write_string(0,0,"wednesday");break;
0194 E882 LDI R24,0x82
0195 E090 LDI R25,0
0196 8399 STD Y+1,R25
0197 8388 STD Y+0,R24
0198 2722 CLR R18
0199 2700 CLR R16
019A 940E0105 CALL _LCD_write_string
019C C023 RJMP 0x01C0
(0057) case 4:LCD_write_string(0,0,"thursday");break;
019D E789 LDI R24,0x79
019E E090 LDI R25,0
019F 8399 STD Y+1,R25
01A0 8388 STD Y+0,R24
01A1 2722 CLR R18
01A2 2700 CLR R16
01A3 940E0105 CALL _LCD_write_string
01A5 C01A RJMP 0x01C0
(0058) case 5:LCD_write_string(0,0,"friday");break;
01A6 E782 LDI R24,0x72
01A7 E090 LDI R25,0
01A8 8399 STD Y+1,R25
01A9 8388 STD Y+0,R24
01AA 2722 CLR R18
01AB 2700 CLR R16
01AC 940E0105 CALL _LCD_write_string
01AE C011 RJMP 0x01C0
(0059) case 6:LCD_write_string(0,0,"saturday");break;
01AF E689 LDI R24,0x69
01B0 E090 LDI R25,0
01B1 8399 STD Y+1,R25
01B2 8388 STD Y+0,R24
01B3 2722 CLR R18
01B4 2700 CLR R16
01B5 940E0105 CALL _LCD_write_string
01B7 C008 RJMP 0x01C0
(0060) case 7:LCD_write_string(0,0,"sunday");break;
01B8 E682 LDI R24,0x62
01B9 E090 LDI R25,0
01BA 8399 STD Y+1,R25
01BB 8388 STD Y+0,R24
01BC 2722 CLR R18
01BD 2700 CLR R16
01BE 940E0105 CALL _LCD_write_string
(0061) }
(0062) LCD_set_xy(0,1);
01C0 E021 LDI R18,1
01C1 2700 CLR R16
01C2 940E00F2 CALL _LCD_set_xy
(0063) //year
(0064) s=read_data(0x8d);
01C4 E80D LDI R16,0x8D
01C5 940E0397 CALL _read_data
01C7 2EA0 MOV R10,R16
(0065) tl=s&0x0f;
01C8 2D4A MOV R20,R10
01C9 704F ANDI R20,0xF
(0066) th=(s>>4);
01CA 2D6A MOV R22,R10
01CB 9562 SWAP R22
01CC 706F ANDI R22,0xF
(0067) //LCD_write_char(0,th+48);
(0068) LCD_write_char(0,tl+48);
01CD 2F24 MOV R18,R20
01CE 2733 CLR R19
01CF 5D20 SUBI R18,0xD0
01D0 4F3F SBCI R19,0xFF
01D1 2700 CLR R16
01D2 2711 CLR R17
01D3 940E0089 CALL _LCD_write_char
(0069) LCD_write_char(0,'/');
01D5 E22F LDI R18,0x2F
01D6 E030 LDI R19,0
01D7 2700 CLR R16
01D8 2711 CLR R17
01D9 940E0089 CALL _LCD_write_char
(0070) //month
(0071) s=read_data(0x89);
01DB E809 LDI R16,0x89
01DC 940E0397 CALL _read_data
01DE 2EA0 MOV R10,R16
(0072) tl=s&0x0f;
01DF 2D4A MOV R20,R10
01E0 704F ANDI R20,0xF
(0073) th=(s>>4);
01E1 2D6A MOV R22,R10
01E2 9562 SWAP R22
01E3 706F ANDI R22,0xF
(0074) LCD_write_char(0,th+48);
01E4 2F26 MOV R18,R22
01E5 2733 CLR R19
01E6 5D20 SUBI R18,0xD0
01E7 4F3F SBCI R19,0xFF
01E8 2700 CLR R16
01E9 2711 CLR R17
01EA 940E0089 CALL _LCD_write_char
(0075) LCD_write_char(0,tl+48);
01EC 2F24 MOV R18,R20
01ED 2733 CLR R19
01EE 5D20 SUBI R18,0xD0
01EF 4F3F SBCI R19,0xFF
01F0 2700 CLR R16
01F1 2711 CLR R17
01F2 940E0089 CALL _LCD_write_char
(0076) LCD_write_char(0,'/');
01F4 E22F LDI R18,0x2F
01F5 E030 LDI R19,0
01F6 2700 CLR R16
01F7 2711 CLR R17
01F8 940E0089 CALL _LCD_write_char
(0077) //day
(0078) s=read_data(0x87);
01FA E807 LDI R16,0x87
01FB 940E0397 CALL _read_data
01FD 2EA0 MOV R10,R16
(0079) tl=s&0x0f;
01FE 2D4A MOV R20,R10
01FF 704F ANDI R20,0xF
(0080) th=(s>>4);
0200 2D6A MOV R22,R10
0201 9562 SWAP R22
0202 706F ANDI R22,0xF
(0081) LCD_write_char(0,th+48);
0203 2F26 MOV R18,R22
0204 2733 CLR R19
0205 5D20 SUBI R18,0xD0
0206 4F3F SBCI R19,0xFF
0207 2700 CLR R16
0208 2711 CLR R17
0209 940E0089 CALL _LCD_write_char
(0082) LCD_write_char(0,tl+48);
020B 2F24 MOV R18,R20
020C 2733 CLR R19
020D 5D20 SUBI R18,0xD0
020E 4F3F SBCI R19,0xFF
020F 2700 CLR R16
0210 2711 CLR R17
0211 940E0089 CALL _LCD_write_char
(0083) //LCD_write_char(0,' ');
(0084) LCD_write_char(0,' ');
0213 E220 LDI R18,0x20
0214 E030 LDI R19,0
0215 2700 CLR R16
0216 2711 CLR R17
0217 940E0089 CALL _LCD_write_char
(0085) // LCD_set_xy(0,1);
(0086) //hour
(0087) s=read_data(0x85);
0219 E805 LDI R16,0x85
021A 940E0397 CALL _read_data
021C 2EA0 MOV R10,R16
(0088) tl=s&0x0f;
021D 2D4A MOV R20,R10
021E 704F ANDI R20,0xF
(0089) th=(s>>4);
021F 2D6A MOV R22,R10
0220 9562 SWAP R22
0221 706F ANDI R22,0xF
(0090) LCD_write_char(0,th+48);
0222 2F26 MOV R18,R22
0223 2733 CLR R19
0224 5D20 SUBI R18,0xD0
0225 4F3F SBCI R19,0xFF
0226 2700 CLR R16
0227 2711 CLR R17
0228 940E0089 CALL _LCD_write_char
(0091) LCD_write_char(0,tl+48);
022A 2F24 MOV R18,R20
022B 2733 CLR R19
022C 5D20 SUBI R18,0xD0
022D 4F3F SBCI R19,0xFF
022E 2700 CLR R16
022F 2711 CLR R17
0230 940E0089 CALL _LCD_write_char
(0092) LCD_write_char(0,':');
0232 E32A LDI R18,0x3A
0233 E030 LDI R19,0
0234 2700 CLR R16
0235 2711 CLR R17
0236 940E0089 CALL _LCD_write_char
(0093) //min
(0094) s=read_data(0x83);
0238 E803 LDI R16,0x83
0239 940E0397 CALL _read_data
023B 2EA0 MOV R10,R16
(0095) tl=s&0x0f;
023C 2D4A MOV R20,R10
023D 704F ANDI R20,0xF
(0096) th=(s>>4);
023E 2D6A MOV R22,R10
023F 9562 SWAP R22
0240 706F ANDI R22,0xF
(0097) LCD_write_char(0,th+48);
0241 2F26 MOV R18,R22
0242 2733 CLR R19
0243 5D20 SUBI R18,0xD0
0244 4F3F SBCI R19,0xFF
0245 2700 CLR R16
0246 2711 CLR R17
0247 940E0089 CALL _LCD_write_char
(0098) LCD_write_char(0,tl+48);
0249 2F24 MOV R18,R20
024A 2733 CLR R19
024B 5D20 SUBI R18,0xD0
024C 4F3F SBCI R19,0xFF
024D 2700 CLR R16
024E 2711 CLR R17
024F 940E0089 CALL _LCD_write_char
(0099) LCD_write_char(0,':');
0251 E32A LDI R18,0x3A
0252 E030 LDI R19,0
0253 2700 CLR R16
0254 2711 CLR R17
0255 940E0089 CALL _LCD_write_char
(0100) //sec
(0101) s=read_data(0x81);
0257 E801 LDI R16,0x81
0258 940E0397 CALL _read_data
025A 2EA0 MOV R10,R16
(0102) tl=s&0x0f;
025B 2D4A MOV R20,R10
025C 704F ANDI R20,0xF
(0103) th=(s>>4);
025D 2D6A MOV R22,R10
025E 9562 SWAP R22
025F 706F ANDI R22,0xF
(0104) LCD_write_char(0,th+48);
0260 2F26 MOV R18,R22
0261 2733 CLR R19
0262 5D20 SUBI R18,0xD0
0263 4F3F SBCI R19,0xFF
0264 2700 CLR R16
0265 2711 CLR R17
0266 940E0089 CALL _LCD_write_char
(0105) LCD_write_char(0,tl+48);
0268 2F24 MOV R18,R20
0269 2733 CLR R19
026A 5D20 SUBI R18,0xD0
026B 4F3F SBCI R19,0xFF
026C 2700 CLR R16
026D 2711 CLR R17
026E 940E0089 CALL _LCD_write_char
0270 9622 ADIW R28,2
0271 940E043E CALL pop_gset3
0273 9508 RET
_main:
dout --> Y+11
i --> Y+10
aa --> Y+9
0274 972C SBIW R28,0xC
(0106) //date
(0107) }
(0108) //////////////////////////////////////////////////////////////
(0109) //k1接pd0 k2接pd1 k3接pd2
(0110) /*void settime()
(0111) {
(0112) uchar dout=0,i,j,k;
(0113) ret:;
(0114) PORTC = 0x00;
(0115) DDRC = 0xff;
(0116) write_data(0x8e,0x00); //关闭寄存器写保护
(0117) dout=PINC;
(0118) i=((dout&0x40)==0x40);
(0119) delay_nms(100);
(0120) if(i)
(0121) {
(0122) n++;
(0123) t=0;
(0124) LCD_write_char(0x10,0);//光标自动右移
(0125) if(n==15)n=0;}
(0126) switch(n)
(0127) {
(0128) case 1 :dout=PINC;j=((dout&0x80)==0x80);
(0129) if(j)
(0130) { t++;
(0131) write_data(0x80,((read_data(0x81))&0xf0)|t);;
(0132) LCD_set_xy(1,1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -